added UpdateDriverForPlugAndPlayDevicesA (untested)
[reactos.git] / reactos / lib / newdev / newdev.c
index cc5424f..4b19d24 100644 (file)
@@ -22,6 +22,68 @@ static DEVINSTDATA DevInstData;
 HINSTANCE hDllInstance;
 HANDLE hThread;
 
+/*
+* @unimplemented
+*/
+BOOL WINAPI
+UpdateDriverForPlugAndPlayDevicesW(
+            IN HWND hwndParent,
+            IN LPCWSTR HardwareId,
+            IN LPCWSTR FullInfPath,
+            IN DWORD InstallFlags,
+            OUT PBOOL bRebootRequired OPTIONAL)
+{
+    UNIMPLEMENTED;
+    SetLastError(ERROR_GEN_FAILURE);
+    return FALSE;
+}
+
+/*
+* @implemented
+*/
+BOOL WINAPI
+UpdateDriverForPlugAndPlayDevicesA(
+               IN HWND hwndParent,
+               IN LPCSTR HardwareId,
+               IN LPCSTR FullInfPath,
+               IN DWORD InstallFlags,
+               OUT PBOOL bRebootRequired OPTIONAL)
+{
+    BOOL Result;
+    LPWSTR HardwareIdW = NULL;
+    LPWSTR FullInfPathW = NULL;
+
+    int len = MultiByteToWideChar(CP_ACP, 0, HardwareId, -1, NULL, 0);
+    HardwareIdW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+    if (!HardwareIdW)
+    {
+        SetLastError(ERROR_GEN_FAILURE);
+        return FALSE;
+    }
+    MultiByteToWideChar(CP_ACP, 0, HardwareId, -1, HardwareIdW, len);
+
+    len = MultiByteToWideChar(CP_ACP, 0, FullInfPath, -1, NULL, 0);
+    FullInfPathW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+    if (!FullInfPathW)
+    {
+        SetLastError(ERROR_GEN_FAILURE);
+        return FALSE;
+    }
+    MultiByteToWideChar(CP_ACP, 0, FullInfPath, -1, FullInfPathW, len);
+
+    Result = UpdateDriverForPlugAndPlayDevicesW(hwndParent,
+        HardwareIdW,
+        FullInfPathW,
+        InstallFlags,
+        bRebootRequired);
+
+    HeapFree(GetProcessHeap(), 0, HardwareIdW);
+    HeapFree(GetProcessHeap(), 0, FullInfPathW);
+
+    return Result;
+}
+
+
 static HFONT
 CreateTitleFont(VOID)
 {