[PATCH 0/1] MR5497: ntdll: Implement NtQueueApcThreadEx()
Should resolve a crash in `libogg` in the game "Cabal Online" -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5497
From: Isaac Marovitz <isaacryu(a)icloud.com> --- dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/unix/thread.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 014c221e59f..3238450fd73 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -338,6 +338,7 @@ @ stdcall -syscall NtQueryVirtualMemory(long ptr long ptr long ptr) @ stdcall -syscall NtQueryVolumeInformationFile(long ptr ptr long long) @ stdcall -syscall NtQueueApcThread(long ptr long long long) +@ stdcall -syscall NtQueueApcThreadEx(long long ptr long long long) @ stdcall -syscall NtRaiseException(ptr ptr long) @ stdcall -syscall NtRaiseHardError(long long ptr ptr long ptr) @ stdcall -syscall NtReadFile(long long ptr ptr ptr ptr long ptr ptr) diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c index 7ae5c022fb2..d9e9704259f 100644 --- a/dlls/ntdll/unix/thread.c +++ b/dlls/ntdll/unix/thread.c @@ -1689,6 +1689,34 @@ NTSTATUS WINAPI NtQueueApcThread( HANDLE handle, PNTAPCFUNC func, ULONG_PTR arg1 } +/****************************************************************************** + * NtQueueApcThreadEx (NTDLL.@) + */ +NTSTATUS WINAPI NtQueueApcThreadEx( HANDLE handle, HANDLE reserve_handle, PNTAPCFUNC func, + ULONG_PTR arg1, ULONG_PTR arg2, ULONG_PTR arg3 ) +{ + NTSTATUS ret; + + SERVER_START_REQ( queue_apc ) + { + FIXME( "reserve handle should be used: %p\n", reserve_handle ) + req->handle = wine_server_obj_handle( handle ); + if (func) + { + req->call.type = APC_USER; + req->call.user.func = wine_server_client_ptr( func ); + req->call.user.args[0] = arg1; + req->call.user.args[1] = arg2; + req->call.user.args[2] = arg3; + } + else req->call.type = APC_NONE; /* wake up only */ + ret = wine_server_call( req ); + } + SERVER_END_REQ; + return ret; +} + + /*********************************************************************** * set_thread_context */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5497
participants (2)
-
Isaac Marovitz -
Isaac Marovitz (@IsaacMarovitz)