From: Torge Matthies tmatthies@codeweavers.com
Signed-off-by: Torge Matthies tmatthies@codeweavers.com --- dlls/user.exe16/message.c | 12 +++++++++--- dlls/win32u/cursoricon.c | 6 +++++- dlls/win32u/message.c | 10 ++++++++-- dlls/wow64win/user.c | 13 ------------- include/ntuser.h | 3 --- 5 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/dlls/user.exe16/message.c b/dlls/user.exe16/message.c index 9af217bf5f1..c83bb88f857 100644 --- a/dlls/user.exe16/message.c +++ b/dlls/user.exe16/message.c @@ -2600,9 +2600,15 @@ static DWORD WINAPI User16ThunkLock( DWORD *param, ULONG size ) }
+static const user32_callback_func user32_callback_table[] = +{ + (user32_callback_func)User16CallFreeIcon, + (user32_callback_func)User16ThunkLock +}; + + void register_wow_handlers(void) { - void **callback_table = NtCurrentTeb()->Peb->KernelCallbackTable; static const struct wow_handlers16 handlers16 = { button_proc16, @@ -2617,8 +2623,8 @@ void register_wow_handlers(void) call_dialog_proc_Ato16, };
- callback_table[NtUserCallFreeIcon] = User16CallFreeIcon; - callback_table[NtUserThunkLock] = User16ThunkLock; + __wine_set_user32_callback_table( user32_callback_destination_user16, user32_callback_table, + ARRAY_SIZE(user32_callback_table) );
NtUserEnableThunkLock( TRUE );
diff --git a/dlls/win32u/cursoricon.c b/dlls/win32u/cursoricon.c index 31fc97bc7cd..c6169640f64 100644 --- a/dlls/win32u/cursoricon.c +++ b/dlls/win32u/cursoricon.c @@ -294,7 +294,11 @@ static BOOL free_icon_handle( HICON handle ) } if (!IS_INTRESOURCE( obj->resname )) free( obj->resname ); free( obj ); - if (param) KeUserModeCallback( NtUserCallFreeIcon, ¶m, sizeof(param), &ret_ptr, &ret_len ); + if (param) + { + struct user32_callback_params cbparams = { user32_callback_destination_user16, 0, ¶m, sizeof(param) }; + KeUserModeCallback( NtUserDispatchCallback, &cbparams, sizeof(cbparams), &ret_ptr, &ret_len ); + } user_driver->pDestroyCursorIcon( handle ); return TRUE; } diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c index caffd837c8b..be94630bcd7 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c @@ -2112,7 +2112,10 @@ static DWORD wait_message( DWORD count, const HANDLE *handles, DWORD timeout, DW ULONG ret_len;
if (enable_thunk_lock) - lock = KeUserModeCallback( NtUserThunkLock, NULL, 0, &ret_ptr, &ret_len ); + { + struct user32_callback_params cbparams = { user32_callback_destination_user16, 1, NULL, 0 }; + lock = KeUserModeCallback( NtUserDispatchCallback, &cbparams, sizeof(cbparams), &ret_ptr, &ret_len ); + }
ret = user_driver->pMsgWaitForMultipleObjectsEx( count, handles, get_nt_timeout( &time, timeout ), mask, flags ); @@ -2125,7 +2128,10 @@ static DWORD wait_message( DWORD count, const HANDLE *handles, DWORD timeout, DW if ((mask & QS_INPUT) == QS_INPUT) get_user_thread_info()->message_count = 0;
if (enable_thunk_lock) - KeUserModeCallback( NtUserThunkLock, &lock, sizeof(lock), &ret_ptr, &ret_len ); + { + struct user32_callback_params cbparams = { user32_callback_destination_user16, 1, &lock, sizeof(lock) }; + KeUserModeCallback( NtUserDispatchCallback, &cbparams, sizeof(cbparams), &ret_ptr, &ret_len ); + }
return ret; } diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 3c598113b6e..f35b3d3b98a 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -1009,16 +1009,6 @@ static NTSTATUS WINAPI wow64_NtUserDispatchCallback( void *arg, ULONG size ) return dispatch_callback( NtUserDispatchCallback, ¶ms32, sizeof(params32) ); }
-static NTSTATUS WINAPI wow64_NtUserCallFreeIcon( void *arg, ULONG size ) -{ - return dispatch_callback( NtUserCallFreeIcon, arg, size ); -} - -static NTSTATUS WINAPI wow64_NtUserThunkLock( void *arg, ULONG size ) -{ - return dispatch_callback( NtUserThunkLock, arg, size ); -} - static NTSTATUS WINAPI wow64_NtUserCallVulkanDebugReportCallback( void *arg, ULONG size ) { FIXME( "\n" ); @@ -1103,9 +1093,6 @@ user_callback user_callbacks[] = wow64_NtUserRenderSynthesizedFormat, wow64_NtUserUnpackDDEMessage, wow64_NtUserDispatchCallback, - /* win16 hooks */ - wow64_NtUserCallFreeIcon, - wow64_NtUserThunkLock, /* Vulkan support */ wow64_NtUserCallVulkanDebugReportCallback, wow64_NtUserCallVulkanDebugUtilsCallback, diff --git a/include/ntuser.h b/include/ntuser.h index a60dd98f1d3..a7171d17202 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -47,9 +47,6 @@ enum NtUserRenderSynthesizedFormat, NtUserUnpackDDEMessage, NtUserDispatchCallback, - /* win16 hooks */ - NtUserCallFreeIcon, - NtUserThunkLock, /* Vulkan support */ NtUserCallVulkanDebugReportCallback, NtUserCallVulkanDebugUtilsCallback,