Alexandre Julliard : wow64: Add thunks for the registry notification syscalls.

Alexandre Julliard julliard at winehq.org
Thu Jul 29 16:37:52 CDT 2021


Module: wine
Branch: master
Commit: dce59f595bbb27fff8967517fc9f7b36aa8106c2
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=dce59f595bbb27fff8967517fc9f7b36aa8106c2

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Jul 29 11:13:47 2021 +0200

wow64: Add thunks for the registry notification syscalls.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wow64/registry.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++
 dlls/wow64/syscall.h  |  2 ++
 2 files changed, 58 insertions(+)

diff --git a/dlls/wow64/registry.c b/dlls/wow64/registry.c
index 67f8f509df5..e89c65c4c5e 100644
--- a/dlls/wow64/registry.c
+++ b/dlls/wow64/registry.c
@@ -182,6 +182,62 @@ NTSTATUS WINAPI wow64_NtLoadKey2( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtNotifyChangeKey
+ */
+NTSTATUS WINAPI wow64_NtNotifyChangeKey( UINT *args )
+{
+    HANDLE handle = get_handle( &args );
+    HANDLE event = get_handle( &args );
+    ULONG apc = get_ulong( &args );
+    ULONG apc_param = get_ulong( &args );
+    IO_STATUS_BLOCK32 *io32 = get_ptr( &args );
+    ULONG filter = get_ulong( &args );
+    BOOLEAN subtree = get_ulong( &args );
+    void *buffer = get_ptr( &args );
+    ULONG len = get_ulong( &args );
+    BOOLEAN async = get_ulong( &args );
+
+    IO_STATUS_BLOCK io;
+    NTSTATUS status;
+
+    status = NtNotifyChangeKey( handle, event, apc_32to64( apc ), apc_param_32to64( apc, apc_param ),
+                                iosb_32to64( &io, io32 ), filter, subtree, buffer, len, async );
+    put_iosb( io32, &io );
+    return status;
+}
+
+
+/**********************************************************************
+ *           wow64_NtNotifyChangeMultipleKeys
+ */
+NTSTATUS WINAPI wow64_NtNotifyChangeMultipleKeys( UINT *args )
+{
+    HANDLE handle = get_handle( &args );
+    ULONG count = get_ulong( &args );
+    OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args );
+    HANDLE event = get_handle( &args );
+    ULONG apc = get_ulong( &args );
+    ULONG apc_param = get_ulong( &args );
+    IO_STATUS_BLOCK32 *io32 = get_ptr( &args );
+    ULONG filter = get_ulong( &args );
+    BOOLEAN subtree = get_ulong( &args );
+    void *buffer = get_ptr( &args );
+    ULONG len = get_ulong( &args );
+    BOOLEAN async = get_ulong( &args );
+
+    struct object_attr64 attr;
+    IO_STATUS_BLOCK io;
+    NTSTATUS status;
+
+    status = NtNotifyChangeMultipleKeys( handle, count, objattr_32to64( &attr, attr32 ), event,
+                                         apc_32to64( apc ), apc_param_32to64( apc, apc_param ),
+                                         iosb_32to64( &io, io32 ), filter, subtree, buffer, len, async );
+    put_iosb( io32, &io );
+    return status;
+}
+
+
 /**********************************************************************
  *           wow64_NtOpenKey
  */
diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h
index 77b380cac8d..ebdd2d6c6d2 100644
--- a/dlls/wow64/syscall.h
+++ b/dlls/wow64/syscall.h
@@ -92,6 +92,8 @@
     SYSCALL_ENTRY( NtMakeTemporaryObject ) \
     SYSCALL_ENTRY( NtMapViewOfSection ) \
     SYSCALL_ENTRY( NtNotifyChangeDirectoryFile ) \
+    SYSCALL_ENTRY( NtNotifyChangeKey ) \
+    SYSCALL_ENTRY( NtNotifyChangeMultipleKeys ) \
     SYSCALL_ENTRY( NtOpenDirectoryObject ) \
     SYSCALL_ENTRY( NtOpenEvent ) \
     SYSCALL_ENTRY( NtOpenFile ) \




More information about the wine-cvs mailing list