On Mon May 9 07:13:19 2022 +0000, Chip Davis wrote:
At least in the Windows 7 SDK, these methods are in a completely different order. Unlike with free functions, order is significant here, because it determines how the v-table is physically laid out. So something like this:
interface IMpegAudioDecoder : IUnknown { [propget] HRESULT FrequencyDivider( [out, retval] unsigned long *divider); [propput] HRESULT FrequencyDivider( unsigned long divider); [propget] HRESULT DecoderAccuracy( [out, retval] unsigned long *accuracy); [propput] HRESULT DecoderAccuracy( unsigned long accuracy); [propget] HRESULT Stereo( [out, retval] unsigned long *stereo); [propput] HRESULT Stereo( unsigned long stereo); [propget] HRESULT DecoderWordSize( [out, retval] unsigned long *word_size); [propput] HRESULT DecoderWordSize( unsigned long word_size); [propget] HRESULT IntegerDecode( [out, retval] unsigned long *integer_decode); [propput] HRESULT IntegerDecode( unsigned long integer_decode); [propget] HRESULT DualMode( [out, retval] unsigned long *dual_mode); [propput] HRESULT DualMode( unsigned long dual_mode); [propget] HRESULT AudioFormat( [out, retval] MPEG1WAVEFORMAT *format); }
Thanks for spotting! Fixed in v2.