go-wca icon indicating copy to clipboard operation
go-wca copied to clipboard

IAudioMeterInformationVtbl struct order of uintptr is incorrect for GetChannelsPeakValues and GetMeteringChannelCount

Open MAVREE opened this issue 5 months ago • 0 comments

What version of Go are you using (go version)?

go 1.21.1 amd64

What did you do?

This is the 0.3.0 VTable for the IAudioMeterInformation interface, I had failures in trying to get channel counts and corresponding peak values, when I realized the VTable had wrong orders for those two pointers (they're inverted).

I checked by making the syscall by myself and it works, I had E_POINTER errors on calling GetMeteringChannelCount and panic errors on calling GetChannelsPeakValues

type IAudioMeterInformationVtbl struct {
	ole.IUnknownVtbl
	GetPeakValue            uintptr
	GetChannelsPeakValues   uintptr
	GetMeteringChannelCount uintptr
	QueryHardwareSupport    uintptr
}

The working VTable:

type IAudioMeterInformationVtbl struct {
	ole.IUnknownVtbl
	GetPeakValue            uintptr
	GetMeteringChannelCount uintptr
	GetChannelsPeakValues   uintptr
	QueryHardwareSupport    uintptr
}

I've simply worked around it by making the syscall by myself, I don't know if it's simply because I'm using Windows 10 (?)

MAVREE avatar Jan 21 '24 14:01 MAVREE