Jacek Caban : ntdll: Fixed argument order in NtNotifyChangeKey.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Nov 6 09:06:33 CST 2015
Module: wine
Branch: master
Commit: a0d0d0dd0a5b4a500ab8d37cc6e687a202997d56
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a0d0d0dd0a5b4a500ab8d37cc6e687a202997d56
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Nov 6 13:58:44 2015 +0100
ntdll: Fixed argument order in NtNotifyChangeKey.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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();
More information about the wine-cvs
mailing list