Module: wine Branch: master Commit: fc230cd4e34eeaf49c7a3ea88beccf3ea337f103 URL: https://source.winehq.org/git/wine.git/?a=commit;h=fc230cd4e34eeaf49c7a3ea88...
Author: Zebediah Figura z.figura12@gmail.com Date: Tue Nov 27 19:43:07 2018 -0600
ntoskrnl.exe: Implement KeCancelTimer().
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- dlls/ntoskrnl.exe/sync.c | 16 ++++++++++++++++ include/ddk/wdm.h | 1 + 3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index f56bde1..a30459a 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -517,7 +517,7 @@ @ stub KeAttachProcess @ stub KeBugCheck @ stub KeBugCheckEx -@ stub KeCancelTimer +@ stdcall KeCancelTimer(ptr) @ stub KeCapturePersistentThreadState @ stdcall KeClearEvent(ptr) @ stub KeConnectInterrupt diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c index 06db1de..1cd0e52 100644 --- a/dlls/ntoskrnl.exe/sync.c +++ b/dlls/ntoskrnl.exe/sync.c @@ -348,3 +348,19 @@ BOOLEAN WINAPI KeSetTimerEx( KTIMER *timer, LARGE_INTEGER duetime, LONG period,
return ret; } + +BOOLEAN WINAPI KeCancelTimer( KTIMER *timer ) +{ + BOOL ret; + + TRACE("timer %p.\n", timer); + + EnterCriticalSection( &sync_cs ); + ret = timer->Header.Inserted; + timer->Header.Inserted = FALSE; + CloseHandle(timer->Header.WaitListHead.Blink); + timer->Header.WaitListHead.Blink = NULL; + LeaveCriticalSection( &sync_cs ); + + return ret; +} diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h index 8472b09..56e1d84 100644 --- a/include/ddk/wdm.h +++ b/include/ddk/wdm.h @@ -1419,6 +1419,7 @@ void WINAPI IoReleaseCancelSpinLock(KIRQL); NTSTATUS WINAPI IoSetDeviceInterfaceState(UNICODE_STRING*,BOOLEAN); NTSTATUS WINAPI IoWMIRegistrationControl(PDEVICE_OBJECT,ULONG);
+BOOLEAN WINAPI KeCancelTimer(KTIMER*); void WINAPI KeClearEvent(PRKEVENT); PKTHREAD WINAPI KeGetCurrentThread(void); void WINAPI KeInitializeEvent(PRKEVENT,EVENT_TYPE,BOOLEAN);