Re: waveOutGetDevCaps not returning HID devices wMid,wPid



On Wed, 16 Aug 2006 14:47:24 GMT, Bob Masta wrote:

Oops! (or maybe "Duh!") The size is passed as the final parameter
in xxxGetDevCaps, not in the structure itself, so this part is a
non-issue. Sorry! But my other questions still stand....

Yeah, I think you had a blonde moment there. From a quick review there are
no devices that I'm aware of that support the
KSPROPERTY_GENERAL_COMPONENTID. Hence the Man and Prod GUID's are filled
according the the INIT_MMREG_MID and INIT_MMREG_PID macro's.

So:
ManufacturerGuid = {D5A47FA8-6D98-11D1-A21A-00A0C9223196}

waveOut
ProductGuid {E36DC310-6D9A-11D1-A21A-00A0C9223196}
waveIn
ProductGuid {E36DC311-6D9A-11D1-A21A-00A0C9223196}
midiOut
ProductGuid {E36DC312-6D9A-11D1-A21A-00A0C9223196}
midiIn
ProductGuid {E36DC313-6D9A-11D1-A21A-00A0C9223196}
mixer
ProductGuid {E36DC314-6D9A-11D1-A21A-00A0C9223196}
aux
ProductGuid {E36DC315-6D9A-11D1-A21A-00A0C9223196}

So basically there is no improvement until manufacturers actually decide to
implement this. Hopefully in the Vista DDK they'll change this from
optional to mandatory but I don't have high hopes.

And yes, you can compare GUIDs as either binary or strings. You can check
easily if the manufacturer GUID is the Microsoft by the following.

if ((IS_COMPATIBLE_MMREG_MID(guid) && (guid->Data1 - 0xd5a47fa7) == 1)

Or by defining the following macro:
#define IS_MICROSOFT_MMREG_MID(guid)\
(((guid)->Data1 == 0xd5a47fa8) &&\
((guid)->Data2 == 0x6d98) &&\
((guid)->Data3 == 0x11d1) &&\
((guid)->Data4[0] == 0xa2) &&\
((guid)->Data4[1] == 0x1a) &&\
((guid)->Data4[2] == 0x00) &&\
((guid)->Data4[3] == 0xa0) &&\
((guid)->Data4[4] == 0xc9) &&\
((guid)->Data4[5] == 0x22) &&\
((guid)->Data4[6] == 0x31) &&\
((guid)->Data4[7] == 0x96))
#endif // !defined(IS_MICROSOFT_MMREG_MID)

if (!IS_MICROSOFT_MMREG_MID(guid))

--
http://www.chrisnet.net/code.htm
http://www.avdevforum.com/AV
.