[PATCH 4/6] ntoskrnl.exe: Implement KeCancelTimer().

Zebediah Figura z.figura12 at gmail.com
Tue Nov 27 19:43:07 CST 2018


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 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 f56bde130d..a30459a039 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 06db1dec63..1cd0e5253a 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 8472b09d49..56e1d84c3e 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);
-- 
2.14.1




More information about the wine-devel mailing list