Try to transform the ClassGUID string to a GUID only when the string exists in registry. Otherwise, set it to GUID_NULL

svn path=/trunk/; revision=19246
This commit is contained in:
Hervé Poussineau 2005-11-15 14:29:46 +00:00
parent 4aa521a7f6
commit 77421fd496
2 changed files with 11 additions and 7 deletions

View file

@ -1185,6 +1185,8 @@ static LONG SETUP_CreateDevListFromEnumerator(
if (pClassGuid)
/* Skip this bad entry as we can't verify it */
continue;
/* Set a default GUID for this device */
memcpy(&KeyGuid, &GUID_NULL, sizeof(GUID));
}
else if (rc != ERROR_SUCCESS)
{
@ -1196,13 +1198,14 @@ static LONG SETUP_CreateDevListFromEnumerator(
RegCloseKey(hDeviceIdKey);
return ERROR_GEN_FAILURE;
}
KeyBuffer[37] = '\0'; /* Replace the } by a NULL character */
if (UuidFromStringW(&KeyBuffer[1], &KeyGuid) != RPC_S_OK)
else
{
RegCloseKey(hDeviceIdKey);
return GetLastError();
KeyBuffer[37] = '\0'; /* Replace the } by a NULL character */
if (UuidFromStringW(&KeyBuffer[1], &KeyGuid) != RPC_S_OK)
/* Bad GUID, skip the entry */
continue;
}
if (pClassGuid && !IsEqualIID(&KeyGuid, pClassGuid))
{
/* Skip this entry as it is not the right device class */
@ -1259,7 +1262,7 @@ static LONG SETUP_CreateDevList(
return rc;
/* If enumerator is provided, call directly SETUP_CreateDevListFromEnumerator.
* Else, enumerate all enumerators all call SETUP_CreateDevListFromEnumerator
* Else, enumerate all enumerators and call SETUP_CreateDevListFromEnumerator
* for each one.
*/
if (Enumerator)

View file

@ -103,7 +103,8 @@ struct DeviceInfoElement /* Element of DeviceInfoSet.ListHead */
* String which identifies the device. Can be NULL. If not NULL,
* points into the Data field at the end of the structure
* - ClassGuid
* Identifies the class of this device. FIXME: can it be GUID_NULL?
* Identifies the class of this device. It is GUID_NULL if the
* device has not been installed
* - CreationFlags
* Is a combination of:
* - DICD_GENERATE_ID