https://git.reactos.org/?p=reactos.git;a=commitdiff;h=de08785aded3e7eb803b35...
commit de08785aded3e7eb803b35510ea82cc033f19c24 Author: Eric Kohl eric.kohl@reactos.org AuthorDate: Sat Sep 22 14:43:43 2018 +0200 Commit: Eric Kohl eric.kohl@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);