From dce59f595bbb27fff8967517fc9f7b36aa8106c2 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 29 Jul 2021 11:13:47 +0200 Subject: [PATCH] wow64: Add thunks for the registry notification syscalls. Signed-off-by: Alexandre Julliard --- 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 ) \