https://git.reactos.org/?p=reactos.git;a=commitdiff;h=de08785aded3e7eb803b3…
commit de08785aded3e7eb803b35510ea82cc033f19c24
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Sat Sep 22 14:43:43 2018 +0200
Commit: Eric Kohl <eric.kohl(a)reactos.org>
CommitDate: Sat Sep 22 14:43:43 2018 +0200
[SETUPAPI] SetupDiCreateDevRegKeyW / SetupDiOpenDevRegKey: Create or open the
'Device Parameters' subkey of the given devices enum key when we try to access its
hardware key.
This creates the PortName value in the proper location for serial ports.
---
dll/win32/setupapi/devinst.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/dll/win32/setupapi/devinst.c b/dll/win32/setupapi/devinst.c
index 73990f5952..91356c3f54 100644
--- a/dll/win32/setupapi/devinst.c
+++ b/dll/win32/setupapi/devinst.c
@@ -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);