From 0a5846433c5f08d593a1931ee62d1000b36d5c5f Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Wed, 19 Sep 2007 17:55:35 -0700 Subject: [PATCH] Save class GUID to registry when creating a device --- dlls/setupapi/devinst.c | 29 ++++++++++++++++++----------- 1 files changed, 18 insertions(+), 11 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index 80b965a..4c9b513 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -147,6 +147,18 @@ static void SETUPDI_FreeDeviceInfo(struc HeapFree(GetProcessHeap(), 0, devInfo); } +static void SETUPDI_GuidToString(const GUID *guid, LPWSTR guidStr) +{ + static const WCHAR fmt[] = {'{','%','0','8','X','-','%','0','4','X','-', + '%','0','4','X','-','%','0','2','X','%','0','2','X','-','%','0','2', + 'X','%','0','2','X','%','0','2','X','%','0','2','X','%','0','2','X','%', + '0','2','X','}',0}; + + sprintfW(guidStr, fmt, guid->Data1, guid->Data2, guid->Data3, + guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], + guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); +} + /* Adds a device with GUID guid and identifer devInst to set. Allocates a * struct DeviceInfo, and points the returned device info's Reserved member * to it. @@ -171,11 +183,17 @@ static BOOL SETUPDI_AddDeviceToSet(struc sizeof(SP_DEVINFO_DATA)); if (set->devices) { + WCHAR classGuidStr[39]; + *dev = &set->devices[set->cDevices++]; (*dev)->cbSize = sizeof(SP_DEVINFO_DATA); memcpy(&(*dev)->ClassGuid, guid, sizeof(GUID)); (*dev)->DevInst = devInst; (*dev)->Reserved = (ULONG_PTR)devInfo; + SETUPDI_GuidToString(guid, classGuidStr); + SetupDiSetDeviceRegistryPropertyW((HDEVINFO)set, + *dev, SPDRP_CLASSGUID, (const BYTE *)classGuidStr, + lstrlenW(classGuidStr) * sizeof(WCHAR)); ret = TRUE; } else @@ -186,17 +204,6 @@ static BOOL SETUPDI_AddDeviceToSet(struc } return ret; } -static void SETUPDI_GuidToString(const GUID *guid, LPWSTR guidStr) -{ - static const WCHAR fmt[] = {'{','%','0','8','X','-','%','0','4','X','-', - '%','0','4','X','-','%','0','2','X','%','0','2','X','-','%','0','2', - 'X','%','0','2','X','%','0','2','X','%','0','2','X','%','0','2','X','%', - '0','2','X','}',0}; - - sprintfW(guidStr, fmt, guid->Data1, guid->Data2, guid->Data3, - guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], - guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); -} /*********************************************************************** * SetupDiBuildClassInfoList (SETUPAPI.@) -- 1.4.1