From: Torge Matthies tmatthies@codeweavers.com
Signed-off-by: Torge Matthies tmatthies@codeweavers.com --- dlls/wineandroid.drv/dllmain.c | 2 +- dlls/winemac.drv/dllmain.c | 10 +++------- dlls/winemac.drv/macdrv_main.c | 3 ++- dlls/winemac.drv/unixlib.h | 6 ++---- 4 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/dlls/wineandroid.drv/dllmain.c b/dlls/wineandroid.drv/dllmain.c index da24fb6a859..50c204931d6 100644 --- a/dlls/wineandroid.drv/dllmain.c +++ b/dlls/wineandroid.drv/dllmain.c @@ -113,7 +113,7 @@ static void CALLBACK register_window_callback( ULONG_PTR arg1, ULONG_PTR arg2, U }
-static user32_callback_func user32_callback_table[] = +static const user32_callback_func user32_callback_table[] = { android_start_device }; diff --git a/dlls/winemac.drv/dllmain.c b/dlls/winemac.drv/dllmain.c index 083c539dd26..03b97d9fb97 100644 --- a/dlls/winemac.drv/dllmain.c +++ b/dlls/winemac.drv/dllmain.c @@ -367,8 +367,7 @@ cleanup: return 0; }
-typedef NTSTATUS (WINAPI *kernel_callback)(void *params, ULONG size); -static const kernel_callback kernel_callbacks[] = +static const user32_callback_func user32_callback_table[] = { macdrv_app_icon, macdrv_app_quit_request, @@ -379,13 +378,10 @@ static const kernel_callback kernel_callbacks[] = macdrv_ime_set_text, };
-C_ASSERT(NtUserDriverCallbackFirst + ARRAYSIZE(kernel_callbacks) == client_func_last); -
static BOOL process_attach(void) { struct init_params params; - void **callback_table;
struct localized_string *str; struct localized_string strings[] = { @@ -416,8 +412,8 @@ static BOOL process_attach(void)
if (MACDRV_CALL(init, ¶ms)) return FALSE;
- callback_table = NtCurrentTeb()->Peb->KernelCallbackTable; - memcpy( callback_table + NtUserDriverCallbackFirst, kernel_callbacks, sizeof(kernel_callbacks) ); + __wine_set_user32_callback_table( user32_callback_destination_driver, user32_callback_table, + ARRAY_SIZE(user32_callback_table) ); return TRUE; }
diff --git a/dlls/winemac.drv/macdrv_main.c b/dlls/winemac.drv/macdrv_main.c index 2350ec61b21..67b6bb383e7 100644 --- a/dlls/winemac.drv/macdrv_main.c +++ b/dlls/winemac.drv/macdrv_main.c @@ -614,7 +614,8 @@ NTSTATUS macdrv_client_func(enum macdrv_client_funcs id, const void *params, ULO { void *ret_ptr; ULONG ret_len; - return KeUserModeCallback(id, params, size, &ret_ptr, &ret_len); + struct user32_callback_params cbparams = { user32_callback_destination_driver, id, params, size }; + return KeUserModeCallback(NtUserDispatchCallback, &cbparams, sizeof(cbparams), &ret_ptr, &ret_len); }
diff --git a/dlls/winemac.drv/unixlib.h b/dlls/winemac.drv/unixlib.h index 5fe19a94fee..c21615571d6 100644 --- a/dlls/winemac.drv/unixlib.h +++ b/dlls/winemac.drv/unixlib.h @@ -98,10 +98,10 @@ struct quit_result_params int result; };
-/* driver client callbacks exposed with KernelCallbackTable interface */ +/* driver client callbacks exposed with NtUserDispatchCallback interface */ enum macdrv_client_funcs { - client_func_app_icon = NtUserDriverCallbackFirst, + client_func_app_icon, client_func_app_quit_request, client_func_dnd_query_drag, client_func_dnd_query_drop, @@ -197,5 +197,3 @@ static inline void *param_ptr(UINT64 param) { return (void *)(UINT_PTR)param; } - -C_ASSERT(client_func_last <= NtUserDriverCallbackLast + 1);