[SETUPAPI] SetupDiCreateDevRegKeyW / SetupDiOpenDevRegKey: Create or open the 'Device...
authorEric Kohl <eric.kohl@reactos.org>
Sat, 22 Sep 2018 12:43:43 +0000 (14:43 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 22 Sep 2018 12:43:43 +0000 (14:43 +0200)
This creates the PortName value in the proper location for serial ports.

dll/win32/setupapi/devinst.c

index 73990f5..91356c3 100644 (file)
@@ -1515,6 +1515,27 @@ HKEY WINAPI SetupDiCreateDevRegKeyW(
                 SetLastError(rc);
                 goto cleanup;
             }
+
+            if (Scope == DICS_FLAG_GLOBAL)
+            {
+                HKEY hTempKey = hKey;
+
+                rc = RegCreateKeyExW(hTempKey,
+                                     L"Device Parameters",
+                                     0,
+                                     NULL,
+                                     REG_OPTION_NON_VOLATILE,
+#if _WIN32_WINNT >= 0x502
+                                     KEY_READ | KEY_WRITE,
+#else
+                                     KEY_ALL_ACCESS,
+#endif
+                                     NULL,
+                                     &hKey,
+                                     NULL);
+                if (rc == ERROR_SUCCESS)
+                    RegCloseKey(hTempKey);
+            }
         }
         else /* KeyType == DIREG_DRV */
         {
@@ -5905,6 +5926,18 @@ HKEY WINAPI SetupDiOpenDevRegKey(
     {
         case DIREG_DEV:
             key = SETUPDI_OpenDevKey(RootKey, devInfo, samDesired);
+            if (Scope == DICS_FLAG_GLOBAL)
+            {
+                LONG rc;
+                HKEY hTempKey = key;
+                rc = RegOpenKeyExW(hTempKey,
+                                   L"Device Parameters",
+                                   0,
+                                   samDesired,
+                                   &key);
+                if (rc == ERROR_SUCCESS)
+                    RegCloseKey(hTempKey);
+            }
             break;
         case DIREG_DRV:
             key = SETUPDI_OpenDrvKey(RootKey, devInfo, samDesired);