Paul Vriens : setupapi/tests: Fix a test on Windows 2000.

Alexandre Julliard julliard at winehq.org
Mon Jun 9 13:17:15 CDT 2008


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

Author: Paul Vriens <paul.vriens.wine at gmail.com>
Date:   Mon Jun  9 13:04:58 2008 +0200

setupapi/tests: Fix a test on Windows 2000.

---

 dlls/setupapi/tests/devinst.c |   25 +++++++++++++++++++++----
 1 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c
index cd72db4..a47460c 100644
--- a/dlls/setupapi/tests/devinst.c
+++ b/dlls/setupapi/tests/devinst.c
@@ -698,12 +698,14 @@ static void testCreateDeviceInterface(void)
         ok(i == 2, "expected 2 interfaces, got %d\n", i);
         ok(GetLastError() == ERROR_NO_MORE_ITEMS,
          "SetupDiEnumDeviceInterfaces failed: %08x\n", GetLastError());
-        pSetupDiDestroyDeviceInfoList(set);
+        ret = pSetupDiDestroyDeviceInfoList(set);
+        ok(ret, "SetupDiDestroyDeviceInfoList failed: %08x\n", GetLastError());
 
         /* Cleanup */
         /* FIXME: On Wine we still have the bogus entry in Enum\Root and
          * subkeys, as well as the deviceclass key with subkeys.
-         * Only do the RegDeleteKey, once Wine is fixed.
+         * Only do the RegDeleteKey (and RegDeleteTree on Windows 2000),
+         * once Wine is fixed.
          */
         if (!RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key))
         {
@@ -714,8 +716,23 @@ static void testCreateDeviceInterface(void)
         }
         else
         {
-            ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass),
-             "Couldn't delete deviceclass key\n");
+            DWORD subkeys;
+
+            /* Check if we have subkeys as Windows 2000 doesn't delete
+             * the keys under the DeviceClasses key
+             */
+            RegOpenKeyW(HKEY_LOCAL_MACHINE, devclass, &key);
+            RegQueryInfoKey(key, NULL, NULL, NULL, &subkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+            if (subkeys > 0)
+            {
+                trace("We are most likely on Windows 2000\n");
+                devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, devclass);
+            }
+            else
+            {
+                ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass),
+                 "Couldn't delete deviceclass key\n");
+            }
         }
     }
 }




More information about the wine-cvs mailing list