Implement SetupDiGetDeviceInstanceIdW
Fix debug message
Modified: trunk/reactos/lib/devmgr/hwpage.c
Modified: trunk/reactos/lib/setupapi/devinst.c
Modified: trunk/reactos/lib/setupapi/stubs.c
_____
Modified: trunk/reactos/lib/devmgr/hwpage.c
--- trunk/reactos/lib/devmgr/hwpage.c 2005-11-26 04:29:40 UTC (rev
19612)
+++ trunk/reactos/lib/devmgr/hwpage.c 2005-11-26 08:13:04 UTC (rev
19613)
@@ -143,7 +143,7 @@
0,
&DeviceInstanceIdLen))
{
- DPRINT1("SetupDiGetDeviceInterfaceDetail unexpectedly
returned TRUE!\n");
+ DPRINT1("SetupDiGetDeviceInstanceId unexpectedly returned
TRUE!\n");
goto Cleanup;
}
_____
Modified: trunk/reactos/lib/setupapi/devinst.c
--- trunk/reactos/lib/setupapi/devinst.c 2005-11-26 04:29:40 UTC
(rev 19612)
+++ trunk/reactos/lib/setupapi/devinst.c 2005-11-26 08:13:04 UTC
(rev 19613)
@@ -3004,7 +3004,7 @@
{
BOOL ret = FALSE;
- TRACE("%ld %p %p\n", InstallFunction, DeviceInfoSet,
DeviceInfoData);
+ TRACE("%u %p %p\n", InstallFunction, DeviceInfoSet,
DeviceInfoData);
if (!DeviceInfoSet)
SetLastError(ERROR_INVALID_PARAMETER);
@@ -3063,7 +3063,7 @@
DefaultHandler = SetupDiSelectBestCompatDrv;
break;
default:
- ERR("Install function %lu not supported\n",
InstallFunction);
+ ERR("Install function %u not supported\n",
InstallFunction);
SetLastError(ERROR_NOT_SUPPORTED);
}
@@ -3463,6 +3463,71 @@
}
/***********************************************************************
+ * SetupDiGetDeviceInstanceIdA(SETUPAPI.@)
+ */
+BOOL WINAPI SetupDiGetDeviceInstanceIdA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT PSTR DeviceInstanceId,
+ IN DWORD DeviceInstanceIdSize,
+ OUT PDWORD RequiredSize)
+{
+ FIXME ("Stub %p %p %p %d %p\n",
+ DeviceInfoSet, DeviceInfoData, DeviceInstanceId,
DeviceInstanceIdSize, RequiredSize);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/**********************************************************************
*
+ * SetupDiGetDeviceInstanceIdW(SETUPAPI.@)
+ */
+BOOL WINAPI SetupDiGetDeviceInstanceIdW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT PWSTR DeviceInstanceId,
+ IN DWORD DeviceInstanceIdSize,
+ OUT PDWORD RequiredSize)
+{
+ BOOL ret = FALSE;
+
+ TRACE("%p %p %p %lu %p\n", DeviceInfoSet, DeviceInfoData,
+ DeviceInstanceId, DeviceInstanceIdSize, RequiredSize);
+
+ if (!DeviceInfoSet)
+ SetLastError(ERROR_INVALID_HANDLE);
+ else if (((struct DeviceInfoSet *)DeviceInfoSet)->magic !=
SETUP_DEV_INFO_SET_MAGIC)
+ SetLastError(ERROR_INVALID_HANDLE);
+ else if (!DeviceInfoData)
+ SetLastError(ERROR_INVALID_PARAMETER);
+ else if (DeviceInfoData->cbSize != sizeof(SP_DEVINFO_DATA))
+ SetLastError(ERROR_INVALID_USER_BUFFER);
+ else if (!DeviceInstanceId && DeviceInstanceIdSize > 0)
+ SetLastError(ERROR_INVALID_PARAMETER);
+ else if (DeviceInstanceId && DeviceInstanceIdSize == 0)
+ SetLastError(ERROR_INVALID_PARAMETER);
+ else
+ {
+ struct DeviceInfoElement *DevInfo = (struct DeviceInfoElement
*)DeviceInfoData->Reserved;
+ DWORD required;
+
+ required = (wcslen(DevInfo->DeviceName) + 1) * sizeof(WCHAR);
+ if (RequiredSize)
+ *RequiredSize = required;
+
+ if (required <= DeviceInstanceIdSize)
+ {
+ wcscpy(DeviceInstanceId, DevInfo->DeviceName);
+ ret = TRUE;
+ }
+ else
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ }
+
+ TRACE("Returning 0x%p\n", ret);
+ return ret;
+}
+
+/**********************************************************************
*
* SetupDiCreateDevRegKeyA (SETUPAPI.@)
*/
HKEY WINAPI SetupDiCreateDevRegKeyA(
_____
Modified: trunk/reactos/lib/setupapi/stubs.c
--- trunk/reactos/lib/setupapi/stubs.c 2005-11-26 04:29:40 UTC (rev
19612)
+++ trunk/reactos/lib/setupapi/stubs.c 2005-11-26 08:13:04 UTC (rev
19613)
@@ -225,33 +225,8 @@
return TRUE;
}
-/**********************************************************************
*
- * SetupDiGetDeviceInstanceIdA(SETUPAPI.@)
- */
-BOOL WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO DeviceInfoSet,
PSP_DEVINFO_DATA DeviceInfoData,
- PSTR DeviceInstanceId, DWORD
DeviceInstanceIdSize,
- PDWORD RequiredSize)
-{
- FIXME ("Stub %p %p %p %d %p\n",
- DeviceInfoSet, DeviceInfoData, DeviceInstanceId,
DeviceInstanceIdSize, RequiredSize);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
/***********************************************************************
- * SetupDiGetDeviceInstanceIdW(SETUPAPI.@)
- */
-BOOL WINAPI SetupDiGetDeviceInstanceIdW(HDEVINFO DeviceInfoSet,
PSP_DEVINFO_DATA DeviceInfoData,
- PWSTR DeviceInstanceId, DWORD
DeviceInstanceIdSize,
- PDWORD RequiredSize)
-{
- FIXME ("Stub %p %p %p %d %p\n",
- DeviceInfoSet, DeviceInfoData, DeviceInstanceId,
DeviceInstanceIdSize, RequiredSize);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-/**********************************************************************
*
* SetupDiGetClassDevPropertySheetsA(SETUPAPI.@)
*/
BOOL WINAPI SetupDiGetClassDevPropertySheetsA(HDEVINFO DeviceInfoSet,
PSP_DEVINFO_DATA DeviceInfoData,