[PATCH v2 2/3] mmdevapi: decode ContainerId property to CLSID in MMDevice_GetPropValue

Claire Girka wine at gitlab.winehq.org
Mon Jul 4 12:12:36 CDT 2022


From: Claire Girka <claire at sitedethib.com>

---
 dlls/mmdevapi/devenum.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/dlls/mmdevapi/devenum.c b/dlls/mmdevapi/devenum.c
index 48f4c736217..b288ed79880 100644
--- a/dlls/mmdevapi/devenum.c
+++ b/dlls/mmdevapi/devenum.c
@@ -189,6 +189,21 @@ static HRESULT MMDevice_GetPropValue(const GUID *devguid, DWORD flow, REFPROPERT
             break;
     }
     RegCloseKey(regkey);
+
+    /* Special case ContainerID as CLSID */
+    if(pv->vt == VT_BLOB && pv->blob.pBlobData && pv->blob.pBlobData[0] == VT_CLSID && IsEqualPropertyKey(*key, DEVPKEY_Device_ContainerId)) {
+        GUID *guid = CoTaskMemAlloc(sizeof(GUID));
+        if (!guid) {
+            PropVariantClear(pv);
+            hr = E_OUTOFMEMORY;
+        } else {
+            memcpy(guid, pv->blob.pBlobData + 8, sizeof(GUID));
+            CoTaskMemFree(pv->blob.pBlobData);
+            pv->vt = VT_CLSID;
+            pv->puuid = guid;
+        }
+    }
+
     return hr;
 }
 
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/359



More information about the wine-devel mailing list