From: Rémi Bernon <rbernon@codeweavers.com> --- dlls/setupapi/devinst.c | 102 ++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 66 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index b7ef248feb3..9b79b7c88da 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -3770,121 +3770,91 @@ BOOL WINAPI SetupDiInstallClassW( /*********************************************************************** * SetupDiOpenClassRegKey (SETUPAPI.@) */ -HKEY WINAPI SetupDiOpenClassRegKey( - const GUID* ClassGuid, - REGSAM samDesired) +HKEY WINAPI SetupDiOpenClassRegKey(const GUID *class, REGSAM access) { - return SetupDiOpenClassRegKeyExW(ClassGuid, samDesired, - DIOCR_INSTALLER, NULL, NULL); + return SetupDiOpenClassRegKeyExW(class, access, DIOCR_INSTALLER, NULL, NULL); } /*********************************************************************** * SetupDiOpenClassRegKeyExA (SETUPAPI.@) */ -HKEY WINAPI SetupDiOpenClassRegKeyExA( - const GUID* ClassGuid, - REGSAM samDesired, - DWORD Flags, - PCSTR MachineName, - PVOID Reserved) +HKEY WINAPI SetupDiOpenClassRegKeyExA(const GUID *class, REGSAM access, DWORD flags, + const char *machine_nameA, void *reserved) { - PWSTR MachineNameW = NULL; - HKEY hKey; + WCHAR *machine_nameW = strdupAtoW(machine_nameA); + HKEY hkey; - TRACE("\n"); + TRACE("class %s, access %#lx, flags %#lx, machine_nameA %s, reserved %p.\n", debugstr_guid(class), + access, flags, debugstr_a(machine_nameA), reserved); - if (MachineName) - { - MachineNameW = MultiByteToUnicode(MachineName, CP_ACP); - if (MachineNameW == NULL) - return INVALID_HANDLE_VALUE; - } - - hKey = SetupDiOpenClassRegKeyExW(ClassGuid, samDesired, - Flags, MachineNameW, Reserved); - - MyFree(MachineNameW); - - return hKey; + hkey = SetupDiOpenClassRegKeyExW(class, access, flags, machine_nameW, reserved); + free(machine_nameW); + return hkey; } /*********************************************************************** * SetupDiOpenClassRegKeyExW (SETUPAPI.@) */ -HKEY WINAPI SetupDiOpenClassRegKeyExW( - const GUID* ClassGuid, - REGSAM samDesired, - DWORD Flags, - PCWSTR MachineName, - PVOID Reserved) +HKEY WINAPI SetupDiOpenClassRegKeyExW(const GUID *class, REGSAM access, DWORD flags, + const WCHAR *machine_name, void *reserved) { - HKEY hClassesKey; + const WCHAR *key_name; HKEY key; - LPCWSTR lpKeyName; - LONG l; + LONG ret; - if (MachineName && *MachineName) + TRACE("class %s, access %#lx, flags %#lx, machine_name %s, reserved %p.\n", debugstr_guid(class), + access, flags, debugstr_w(machine_name), reserved); + + if (machine_name && *machine_name) { FIXME("Remote access not supported yet!\n"); return INVALID_HANDLE_VALUE; } - if (Flags == DIOCR_INSTALLER) + if (flags == DIOCR_INSTALLER) { - lpKeyName = ControlClass; + key_name = ControlClass; } - else if (Flags == DIOCR_INTERFACE) + else if (flags == DIOCR_INTERFACE) { - lpKeyName = DeviceClasses; + key_name = DeviceClasses; } else { - ERR("Invalid Flags parameter!\n"); + ERR("Invalid flags parameter!\n"); SetLastError(ERROR_INVALID_PARAMETER); return INVALID_HANDLE_VALUE; } - if (!ClassGuid) + if (!class) { - if ((l = RegOpenKeyExW(HKEY_LOCAL_MACHINE, - lpKeyName, - 0, - samDesired, - &hClassesKey))) + if ((ret = RegOpenKeyExW(HKEY_LOCAL_MACHINE, key_name, 0, access, &key))) { - SetLastError(l); - hClassesKey = INVALID_HANDLE_VALUE; + SetLastError(ret); + key = INVALID_HANDLE_VALUE; } - key = hClassesKey; } else { - WCHAR bracedGuidString[39]; + WCHAR guid_str[39]; + HKEY root; - SETUPDI_GuidToString(ClassGuid, bracedGuidString); + SETUPDI_GuidToString(class, guid_str); - if (!(l = RegOpenKeyExW(HKEY_LOCAL_MACHINE, - lpKeyName, - 0, - samDesired, - &hClassesKey))) + if (!(ret = RegOpenKeyExW(HKEY_LOCAL_MACHINE, key_name, 0, access, &root))) { - if ((l = RegOpenKeyExW(hClassesKey, - bracedGuidString, - 0, - samDesired, - &key))) + if ((ret = RegOpenKeyExW(root, guid_str, 0, access, &key))) { - SetLastError(l); + SetLastError(ret); key = INVALID_HANDLE_VALUE; } - RegCloseKey(hClassesKey); + RegCloseKey(root); } else { - SetLastError(l); + SetLastError(ret); key = INVALID_HANDLE_VALUE; } } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10149