Author: jgardou Date: Tue Sep 30 22:05:50 2014 New Revision: 64427
URL: http://svn.reactos.org/svn/reactos?rev=64427&view=rev Log: [ADVAPI32] - Centralize RegDeleteKey[Ex]{A,W} implementation into RegDeleteKeyExW - Update the HKCR wrapper accordingly. CORE-8582
Modified: trunk/reactos/dll/win32/advapi32/reg/hkcr.c trunk/reactos/dll/win32/advapi32/reg/reg.c trunk/reactos/dll/win32/advapi32/reg/reg.h
Modified: trunk/reactos/dll/win32/advapi32/reg/hkcr.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/reg/hkcr... ============================================================================== --- trunk/reactos/dll/win32/advapi32/reg/hkcr.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/advapi32/reg/hkcr.c [iso-8859-1] Tue Sep 30 22:05:50 2014 @@ -272,7 +272,9 @@ WINAPI DeleteHKCRKey( _In_ HKEY hKey, - _In_ LPCWSTR lpSubKey) + _In_ LPCWSTR lpSubKey, + _In_ REGSAM RegSam, + _In_ DWORD Reserved) { HKEY QueriedKey; LONG ErrorCode; @@ -287,7 +289,7 @@ if (ErrorCode == ERROR_FILE_NOT_FOUND) { /* The key doesn't exist on HKCU side, no chance for a subkey */ - return RegDeleteKeyW(hKey, lpSubKey); + return RegDeleteKeyExW(hKey, lpSubKey, RegSam, Reserved); }
if (ErrorCode != ERROR_SUCCESS) @@ -296,7 +298,7 @@ return ErrorCode; }
- ErrorCode = RegDeleteKeyW(QueriedKey, lpSubKey); + ErrorCode = RegDeleteKeyExW(QueriedKey, lpSubKey, RegSam, Reserved);
/* Close it if we must */ if (QueriedKey != hKey) @@ -317,7 +319,7 @@ return ErrorCode; }
- ErrorCode = RegDeleteKeyW(QueriedKey, lpSubKey); + ErrorCode = RegDeleteKeyExW(QueriedKey, lpSubKey, RegSam, Reserved);
/* Close it if we must */ if (QueriedKey != hKey)
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 22:05:50 2014 @@ -1181,16 +1181,50 @@ * * @implemented */ -LONG WINAPI -RegDeleteKeyA(HKEY hKey, - LPCSTR lpSubKey) +LONG +WINAPI +RegDeleteKeyA( + _In_ HKEY hKey, + _In_ LPCSTR lpSubKey) +{ + return RegDeleteKeyExA(hKey, lpSubKey, 0, 0); +} + + +/************************************************************************ + * RegDeleteKeyW + * + * @implemented + */ +LONG +WINAPI +RegDeleteKeyW( + _In_ HKEY hKey, + _In_ LPCWSTR lpSubKey) +{ + return RegDeleteKeyExW(hKey, lpSubKey, 0, 0); +} + + +/************************************************************************ + * RegDeleteKeyExA + * + * @implemented + */ +LONG +WINAPI +RegDeleteKeyExA( + _In_ HKEY hKey, + _In_ LPCSTR lpSubKey, + _In_ REGSAM samDesired, + _In_ DWORD Reserved) { LONG ErrorCode; UNICODE_STRING SubKeyName;
RtlCreateUnicodeStringFromAsciiz(&SubKeyName, (LPSTR)lpSubKey);
- ErrorCode = RegDeleteKeyW(hKey, SubKeyName.Buffer); + ErrorCode = RegDeleteKeyExW(hKey, SubKeyName.Buffer, samDesired, Reserved);
RtlFreeUnicodeString(&SubKeyName);
@@ -1199,13 +1233,17 @@
/************************************************************************ - * RegDeleteKeyW - * - * @implemented - */ -LONG WINAPI -RegDeleteKeyW(HKEY hKey, - LPCWSTR lpSubKey) + * RegDeleteKeyExW + * + * @implemented + */ +LONG +WINAPI +RegDeleteKeyExW( + _In_ HKEY hKey, + _In_ LPCWSTR lpSubKey, + _In_ REGSAM samDesired, + _In_ DWORD Reserved) { OBJECT_ATTRIBUTES ObjectAttributes; UNICODE_STRING SubKeyName; @@ -1228,139 +1266,7 @@ }
if (IsHKCRKey(ParentKey)) - return DeleteHKCRKey(ParentKey, lpSubKey); - - RtlInitUnicodeString(&SubKeyName, - (LPWSTR)lpSubKey); - InitializeObjectAttributes(&ObjectAttributes, - &SubKeyName, - OBJ_CASE_INSENSITIVE, - ParentKey, - NULL); - Status = NtOpenKey(&TargetKey, - DELETE, - &ObjectAttributes); - if (!NT_SUCCESS(Status)) - { - goto Cleanup; - } - - Status = NtDeleteKey(TargetKey); - NtClose(TargetKey); - -Cleanup: - ClosePredefKey(ParentKey); - - if (!NT_SUCCESS(Status)) - { - return RtlNtStatusToDosError(Status); - } - - return ERROR_SUCCESS; -} - - -/************************************************************************ - * RegDeleteKeyExA - * - * @implemented - */ -LONG -WINAPI -RegDeleteKeyExA(HKEY hKey, - LPCSTR lpSubKey, - REGSAM samDesired, - DWORD Reserved) -{ - OBJECT_ATTRIBUTES ObjectAttributes; - UNICODE_STRING SubKeyName; - HANDLE ParentKey; - HANDLE TargetKey; - NTSTATUS Status; - - /* Make sure we got a subkey */ - if (!lpSubKey) - { - /* Fail */ - return ERROR_INVALID_PARAMETER; - } - - Status = MapDefaultKey(&ParentKey, - hKey); - if (!NT_SUCCESS(Status)) - { - return RtlNtStatusToDosError(Status); - } - - if (samDesired & KEY_WOW64_32KEY) - ERR("Wow64 not yet supported!\n"); - - if (samDesired & KEY_WOW64_64KEY) - ERR("Wow64 not yet supported!\n"); - - RtlCreateUnicodeStringFromAsciiz(&SubKeyName, - (LPSTR)lpSubKey); - InitializeObjectAttributes(&ObjectAttributes, - &SubKeyName, - OBJ_CASE_INSENSITIVE, - ParentKey, - NULL); - - Status = NtOpenKey(&TargetKey, - DELETE, - &ObjectAttributes); - RtlFreeUnicodeString(&SubKeyName); - if (!NT_SUCCESS(Status)) - { - goto Cleanup; - } - - Status = NtDeleteKey(TargetKey); - NtClose (TargetKey); - -Cleanup: - ClosePredefKey(ParentKey); - - if (!NT_SUCCESS(Status)) - { - return RtlNtStatusToDosError(Status); - } - - return ERROR_SUCCESS; -} - - -/************************************************************************ - * RegDeleteKeyExW - * - * @implemented - */ -LONG -WINAPI -RegDeleteKeyExW(HKEY hKey, - LPCWSTR lpSubKey, - REGSAM samDesired, - DWORD Reserved) -{ - OBJECT_ATTRIBUTES ObjectAttributes; - UNICODE_STRING SubKeyName; - HANDLE ParentKey; - HANDLE TargetKey; - NTSTATUS Status; - - /* Make sure we got a subkey */ - if (!lpSubKey) - { - /* Fail */ - return ERROR_INVALID_PARAMETER; - } - - Status = MapDefaultKey(&ParentKey, - hKey); - if (!NT_SUCCESS(Status)) - { - return RtlNtStatusToDosError(Status); - } + return DeleteHKCRKey(ParentKey, lpSubKey, samDesired, Reserved);
if (samDesired & KEY_WOW64_32KEY) ERR("Wow64 not yet supported!\n");
Modified: trunk/reactos/dll/win32/advapi32/reg/reg.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/reg/reg.... ============================================================================== --- trunk/reactos/dll/win32/advapi32/reg/reg.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/advapi32/reg/reg.h [iso-8859-1] Tue Sep 30 22:05:50 2014 @@ -35,5 +35,7 @@ WINAPI DeleteHKCRKey( _In_ HKEY hKey, - _In_ LPCWSTR lpSubKey); + _In_ LPCWSTR lpSubKey, + _In_ REGSAM RegSam, + _In_ DWORD Reserved);