Try to transform the ClassGUID string to a GUID only when the string
exists in registry. Otherwise, set it to GUID_NULL
Modified: trunk/reactos/lib/setupapi/devinst.c
Modified: trunk/reactos/lib/setupapi/setupapi_private.h
_____
Modified: trunk/reactos/lib/setupapi/devinst.c
--- trunk/reactos/lib/setupapi/devinst.c 2005-11-15 14:26:06 UTC
(rev 19245)
+++ trunk/reactos/lib/setupapi/devinst.c 2005-11-15 14:29:46 UTC
(rev 19246)
@@ -1185,6 +1185,8 @@
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 @@
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 @@
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)
_____
Modified: trunk/reactos/lib/setupapi/setupapi_private.h
--- trunk/reactos/lib/setupapi/setupapi_private.h 2005-11-15
14:26:06 UTC (rev 19245)
+++ trunk/reactos/lib/setupapi/setupapi_private.h 2005-11-15
14:29:46 UTC (rev 19246)
@@ -103,7 +103,8 @@
* 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