Juan Lang : setupapi: Respect samDesired in SetupDiOpenClassRegKeyExW.

Alexandre Julliard julliard at winehq.org
Mon Sep 24 08:07:59 CDT 2007


Module: wine
Branch: master
Commit: a9d74cf994d0a3853373799e9a1456a0b7a47bb8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a9d74cf994d0a3853373799e9a1456a0b7a47bb8

Author: Juan Lang <juan.lang at gmail.com>
Date:   Fri Sep 21 11:32:24 2007 -0700

setupapi: Respect samDesired in SetupDiOpenClassRegKeyExW.

---

 dlls/setupapi/devinst.c |   56 ++++++++++++++++++++++++++++------------------
 1 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
index bc51c2a..a91b120 100644
--- a/dlls/setupapi/devinst.c
+++ b/dlls/setupapi/devinst.c
@@ -2337,7 +2337,6 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
         PCWSTR MachineName,
         PVOID Reserved)
 {
-    WCHAR bracedGuidString[39];
     HKEY hClassesKey;
     HKEY hClassKey;
     LPCWSTR lpKeyName;
@@ -2363,33 +2362,46 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
         return INVALID_HANDLE_VALUE;
     }
 
-    if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
-		      lpKeyName,
-		      0,
-		      KEY_ALL_ACCESS,
-		      &hClassesKey))
+    if (!ClassGuid)
     {
-	return INVALID_HANDLE_VALUE;
-    }
-
-    if (ClassGuid == NULL)
+        if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+                          lpKeyName,
+                          0,
+                          samDesired,
+                          &hClassesKey))
+        {
+            return INVALID_HANDLE_VALUE;
+        }
         return hClassesKey;
+    }
+    else
+    {
+        WCHAR bracedGuidString[39];
 
-    SETUPDI_GuidToString(ClassGuid, bracedGuidString);
+        SETUPDI_GuidToString(ClassGuid, bracedGuidString);
 
-    if (RegOpenKeyExW(hClassesKey,
-		      bracedGuidString,
-		      0,
-		      KEY_ALL_ACCESS,
-		      &hClassKey))
-    {
-	RegCloseKey(hClassesKey);
-	return INVALID_HANDLE_VALUE;
-    }
+        if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+                          lpKeyName,
+                          0,
+                          samDesired,
+                          &hClassesKey))
+        {
+            return INVALID_HANDLE_VALUE;
+        }
+        if (RegOpenKeyExW(hClassesKey,
+                          bracedGuidString,
+                          0,
+                          samDesired,
+                          &hClassKey))
+        {
+            RegCloseKey(hClassesKey);
+            return INVALID_HANDLE_VALUE;
+        }
 
-    RegCloseKey(hClassesKey);
+        RegCloseKey(hClassesKey);
 
-    return hClassKey;
+        return hClassKey;
+    }
 }
 
 /***********************************************************************




More information about the wine-cvs mailing list