Module: wine Branch: master Commit: a0d0d0dd0a5b4a500ab8d37cc6e687a202997d56 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a0d0d0dd0a5b4a500ab8d37cc6...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Nov 6 13:58:44 2015 +0100
ntdll: Fixed argument order in NtNotifyChangeKey.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/advapi32/registry.c | 4 ++-- dlls/ntdll/reg.c | 4 ++-- dlls/ntdll/tests/reg.c | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c index 8d97af9..67120cd 100644 --- a/dlls/advapi32/registry.c +++ b/dlls/advapi32/registry.c @@ -2674,8 +2674,8 @@ LSTATUS WINAPI RegNotifyChangeKeyValue( HKEY hkey, BOOL fWatchSubTree, hEvent, fAsync);
status = NtNotifyChangeKey( hkey, hEvent, NULL, NULL, &iosb, - fdwNotifyFilter, fAsync, NULL, 0, - fWatchSubTree); + fdwNotifyFilter, fWatchSubTree, NULL, 0, + fAsync);
if (status && status != STATUS_TIMEOUT) return RtlNtStatusToDosError( status ); diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c index c0fc641..4dff186 100644 --- a/dlls/ntdll/reg.c +++ b/dlls/ntdll/reg.c @@ -643,10 +643,10 @@ NTSTATUS WINAPI NtNotifyChangeKey( IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG CompletionFilter, - IN BOOLEAN Asynchronous, + IN BOOLEAN WatchSubtree, OUT PVOID ChangeBuffer, IN ULONG Length, - IN BOOLEAN WatchSubtree) + IN BOOLEAN Asynchronous) { NTSTATUS ret;
diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c index ecfe1b2..1fe9ef3 100644 --- a/dlls/ntdll/tests/reg.c +++ b/dlls/ntdll/tests/reg.c @@ -146,6 +146,7 @@ static NTSTATUS (WINAPI * pRtlFreeHeap)(PVOID, ULONG, PVOID); static LPVOID (WINAPI * pRtlAllocateHeap)(PVOID,ULONG,ULONG); static NTSTATUS (WINAPI * pRtlZeroMemory)(PVOID, ULONG); static NTSTATUS (WINAPI * pRtlpNtQueryValueKey)(HANDLE,ULONG*,PBYTE,DWORD*,void *); +static NTSTATUS (WINAPI * pNtNotifyChangeKey)(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
static HMODULE hntdll = 0; static int CurrentTest = 0; @@ -183,6 +184,7 @@ static BOOL InitFunctionPtrs(void) NTDLL_GET_PROC(NtQueryInformationProcess) NTDLL_GET_PROC(NtSetValueKey) NTDLL_GET_PROC(NtOpenKey) + NTDLL_GET_PROC(NtNotifyChangeKey) NTDLL_GET_PROC(RtlFormatCurrentUserKeyPath) NTDLL_GET_PROC(RtlCompareUnicodeString) NTDLL_GET_PROC(RtlReAllocateHeap) @@ -1502,6 +1504,28 @@ static void test_NtQueryKey(void) pNtClose(key); }
+static void test_notify(void) +{ + OBJECT_ATTRIBUTES attr; + IO_STATUS_BLOCK iosb; + NTSTATUS status; + HANDLE key, event; + + InitializeObjectAttributes(&attr, &winetestpath, 0, 0, 0); + + status = pNtOpenKey(&key, KEY_ALL_ACCESS, &attr); + ok(status == STATUS_SUCCESS, "NtOpenKey Failed: 0x%08x\n", status); + + event = CreateEventW(NULL, FALSE, FALSE, NULL); + ok(event != NULL, "CreateEvent failed: %u\n", GetLastError()); + + status = pNtNotifyChangeKey(key, event, NULL, NULL, &iosb, REG_NOTIFY_CHANGE_NAME, FALSE, NULL, 0, TRUE); + todo_wine ok(status == STATUS_PENDING, "NtNotifyChangeKey returned %x\n", status); + + pNtClose(key); + pNtClose(event); +} + START_TEST(reg) { static const WCHAR winetest[] = {'\','W','i','n','e','T','e','s','t',0}; @@ -1526,6 +1550,7 @@ START_TEST(reg) test_NtQueryLicenseKey(); test_NtQueryValueKey(); test_long_value_name(); + test_notify(); test_NtDeleteKey(); test_symlinks(); test_redirection();