From: Patrick Hibbs hibbsncc1701@gmail.com
According to MSDN, DEVPKEY_Device_InstanceId should be the same value as IMMDevice::GetId(). See also: https://learn.microsoft.com/en-us/windows/win32/coreaudio/device-properties --- dlls/mmdevapi/devenum.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/dlls/mmdevapi/devenum.c b/dlls/mmdevapi/devenum.c index d147d246636..cd81d1c34ab 100644 --- a/dlls/mmdevapi/devenum.c +++ b/dlls/mmdevapi/devenum.c @@ -548,6 +548,13 @@ static MMDevice *MMDevice_Create(const WCHAR *name, GUID *id, EDataFlow flow, DW
MMDevice_SetPropValue(id, flow, (const PROPERTYKEY*)&DEVPKEY_Device_Driver, &pv);
+ if (!FAILED(IMMDevice_GetId(&(cur->IMMDevice_iface), &pv.pwszVal))) { + MMDevice_SetPropValue(id, flow, (const PROPERTYKEY*)&DEVPKEY_Device_InstanceId, &pv); + CoTaskMemFree(pv.pwszVal); + pv.vt = VT_EMPTY; + pv.pwszVal = NULL; + } + RegCloseKey(keyprop); } RegCloseKey(key);