Module: wine Branch: stable Commit: cdd4c607a654550462b0275d233638846edd78ea URL: https://source.winehq.org/git/wine.git/?a=commit;h=cdd4c607a654550462b0275d2... Author: Paul Gofman <pgofman(a)codeweavers.com> Date: Fri May 29 10:53:06 2020 +0300 ntoskrnl.exe: Add stub for ExRegisterCallback() function. Signed-off-by: Paul Gofman <pgofman(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 7bc99ae1254f467a23b46756dce40a15494f0758) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/ntoskrnl.exe/ntoskrnl.c | 9 +++++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- include/ddk/wdm.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index ec0f376d6cd..5b99d4d17ec 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -2057,6 +2057,14 @@ NTSTATUS WINAPI ExCreateCallback(PCALLBACK_OBJECT *obj, POBJECT_ATTRIBUTES attr, return STATUS_SUCCESS; } +void * WINAPI ExRegisterCallback(PCALLBACK_OBJECT callback_object, + PCALLBACK_FUNCTION callback_function, void *callback_context) +{ + FIXME("callback_object %p, callback_function %p, callback_context %p stub.\n", + callback_object, callback_function, callback_context); + + return (void *)0xdeadbeef; +} /*********************************************************************** * ExFreePool (NTOSKRNL.EXE.@) @@ -2993,6 +3001,7 @@ PVOID WINAPI MmGetSystemRoutineAddress(PUNICODE_STRING SystemRoutineName) if (!pFunc) { hMod = GetModuleHandleW( halW ); + if (hMod) pFunc = GetProcAddress( hMod, routineNameA.Buffer ); } RtlFreeAnsiString( &routineNameA ); diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index a39247811e5..b65857b82b8 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -180,7 +180,7 @@ @ stub ExRaiseException @ stub ExRaiseHardError @ stub ExRaiseStatus -@ stub ExRegisterCallback +@ stdcall ExRegisterCallback(ptr ptr ptr) @ stub ExReinitializeResourceLite @ stdcall ExReleaseResourceForThreadLite(ptr long) @ extern ExSemaphoreObjectType diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h index 5152a89842b..fbb9242cd5b 100644 --- a/include/ddk/wdm.h +++ b/include/ddk/wdm.h @@ -1296,6 +1296,7 @@ typedef void * (NTAPI *PALLOCATE_FUNCTION)(POOL_TYPE, SIZE_T, ULONG); typedef void * (NTAPI *PALLOCATE_FUNCTION_EX)(POOL_TYPE, SIZE_T, ULONG, PLOOKASIDE_LIST_EX); typedef void (NTAPI *PFREE_FUNCTION)(void *); typedef void (NTAPI *PFREE_FUNCTION_EX)(void *, PLOOKASIDE_LIST_EX); +typedef void (NTAPI *PCALLBACK_FUNCTION)(void *, void *, void *); #ifdef _WIN64 #define LOOKASIDE_ALIGN DECLSPEC_CACHEALIGN @@ -1567,6 +1568,7 @@ PSLIST_ENTRY WINAPI ExInterlockedPushEntrySList(PSLIST_HEADER,PSLIST_ENTRY,PKSPI LIST_ENTRY * WINAPI ExInterlockedRemoveHeadList(LIST_ENTRY*,KSPIN_LOCK*); BOOLEAN WINAPI ExIsResourceAcquiredExclusiveLite(ERESOURCE*); ULONG WINAPI ExIsResourceAcquiredSharedLite(ERESOURCE*); +void * WINAPI ExRegisterCallback(PCALLBACK_OBJECT,PCALLBACK_FUNCTION,void*); void FASTCALL ExReleaseFastMutexUnsafe(PFAST_MUTEX); void WINAPI ExReleaseResourceForThreadLite(ERESOURCE*,ERESOURCE_THREAD); ULONG WINAPI ExSetTimerResolution(ULONG,BOOLEAN);