Author: jgardou Date: Tue Sep 30 19:59:35 2014 New Revision: 64414
URL: http://svn.reactos.org/svn/reactos?rev=64414&view=rev Log: [ADVAPI32] - Rewrite RegOpenKeyExA as a wrapper around RegOpenKeyExW CORE-8582
Modified: trunk/reactos/dll/win32/advapi32/reg/reg.c
Modified: trunk/reactos/dll/win32/advapi32/reg/reg.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/reg/reg.... ============================================================================== --- trunk/reactos/dll/win32/advapi32/reg/reg.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/advapi32/reg/reg.c [iso-8859-1] Tue Sep 30 19:59:35 2014 @@ -3452,54 +3452,25 @@ * @implemented */ LONG WINAPI -RegOpenKeyExA(HKEY hKey, - LPCSTR lpSubKey, - DWORD ulOptions, - REGSAM samDesired, - PHKEY phkResult) -{ - OBJECT_ATTRIBUTES ObjectAttributes; +RegOpenKeyExA( + _In_ HKEY hKey, + _In_ LPCSTR lpSubKey, + _In_ DWORD ulOptions, + _In_ REGSAM samDesired, + _Out_ PHKEY phkResult) +{ UNICODE_STRING SubKeyString; - HANDLE KeyHandle; - NTSTATUS Status; - ULONG Attributes = OBJ_CASE_INSENSITIVE; - LONG ErrorCode = ERROR_SUCCESS; + LONG ErrorCode;
TRACE("RegOpenKeyExA hKey 0x%x lpSubKey %s ulOptions 0x%x samDesired 0x%x phkResult %p\n", hKey, lpSubKey, ulOptions, samDesired, phkResult); - if (!phkResult) - { - return ERROR_INVALID_PARAMETER; - } - - Status = MapDefaultKey(&KeyHandle, - hKey); - if (!NT_SUCCESS(Status)) - { - return RtlNtStatusToDosError(Status); - } - - if (ulOptions & REG_OPTION_OPEN_LINK) - Attributes |= OBJ_OPENLINK;
RtlCreateUnicodeStringFromAsciiz(&SubKeyString, (LPSTR)lpSubKey); - InitializeObjectAttributes(&ObjectAttributes, - &SubKeyString, - Attributes, - KeyHandle, - NULL); - - Status = NtOpenKey((PHANDLE)phkResult, - samDesired, - &ObjectAttributes); + + ErrorCode = RegOpenKeyExW(hKey, SubKeyString.Buffer, ulOptions, samDesired, phkResult); + RtlFreeUnicodeString(&SubKeyString); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError(Status); - } - - ClosePredefKey(KeyHandle);
return ErrorCode; }