From: Claire Girka claire@sitedethib.com
CLSID is special-cased to this property because we can't safely differentiate an encoded VT_CLSID from an encoded VT_BLOB. --- dlls/mmdevapi/devenum.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/dlls/mmdevapi/devenum.c b/dlls/mmdevapi/devenum.c index bfeb3f3ecd8..48f4c736217 100644 --- a/dlls/mmdevapi/devenum.c +++ b/dlls/mmdevapi/devenum.c @@ -225,6 +225,18 @@ static HRESULT MMDevice_SetPropValue(const GUID *devguid, DWORD flow, REFPROPERT ret = RegSetValueExW(regkey, buffer, 0, REG_SZ, (const BYTE*)pv->pwszVal, sizeof(WCHAR)*(1+lstrlenW(pv->pwszVal))); break; } + case VT_CLSID: + { + if (IsEqualPropertyKey(*key, DEVPKEY_Device_ContainerId)) { + BYTE value[24] = { VT_CLSID, 0, 0, 0, 1, 0, 0, 0 }; + memcpy(value + 8, pv->puuid, sizeof(GUID)); + + ret = RegSetValueExW(regkey, buffer, 0, REG_BINARY, (const BYTE*)value, 24); + break; + } + /* If it's not containerId, fall through the default unsupported case as we can't + ensure it will be decoded as CLSID. */ + } default: ret = 0; FIXME("Unhandled type %u\n", pv->vt);