Alexandre Julliard : kernel32: Move timer queue functions to kernelbase.

Alexandre Julliard julliard at winehq.org
Mon Jul 1 15:15:15 CDT 2019


Module: wine
Branch: master
Commit: d33d05ce273151b980b52939a703fe35bee849fc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=d33d05ce273151b980b52939a703fe35bee849fc

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Jun 27 16:42:17 2019 +0200

kernel32: Move timer queue functions to kernelbase.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/kernel32.spec     |  10 ++--
 dlls/kernel32/sync.c            | 104 +---------------------------------------
 dlls/kernelbase/kernelbase.spec |  10 ++--
 dlls/kernelbase/sync.c          |  61 +++++++++++++++++++++++
 4 files changed, 72 insertions(+), 113 deletions(-)

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index f371ad7..be9ed3f 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -213,7 +213,7 @@
 # @ stub CancelThreadpoolIo
 @ stdcall CancelTimerQueueTimer(ptr ptr)
 @ stdcall -import CancelWaitableTimer(long)
-@ stdcall ChangeTimerQueueTimer(ptr ptr long long)
+@ stdcall -import ChangeTimerQueueTimer(ptr ptr long long)
 # @ stub CheckElevation
 # @ stub CheckElevationEnabled
 # @ stub CheckForReadOnlyResource
@@ -335,8 +335,8 @@
 @ stdcall CreateThreadpoolTimer(ptr ptr ptr)
 @ stdcall CreateThreadpoolWait(ptr ptr ptr)
 @ stdcall CreateThreadpoolWork(ptr ptr ptr)
-@ stdcall CreateTimerQueue ()
-@ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long)
+@ stdcall -import CreateTimerQueue()
+@ stdcall -import CreateTimerQueueTimer(ptr long ptr ptr long long long)
 @ stdcall CreateToolhelp32Snapshot(long long)
 @ stdcall -arch=x86_64 CreateUmsCompletionList(ptr)
 @ stdcall -arch=x86_64 CreateUmsThreadContext(ptr)
@@ -369,8 +369,8 @@
 # @ stub DisableThreadProfiling
 @ stdcall DisassociateCurrentThreadFromCallback(ptr) ntdll.TpDisassociateCallback
 @ stdcall DeleteTimerQueue(long)
-@ stdcall DeleteTimerQueueEx (long long)
-@ stdcall DeleteTimerQueueTimer(long long long)
+@ stdcall -import DeleteTimerQueueEx(long long)
+@ stdcall -import DeleteTimerQueueTimer(long long long)
 @ stdcall -arch=x86_64 DeleteUmsCompletionList(ptr)
 @ stdcall -arch=x86_64 DeleteUmsThreadContext(ptr)
 @ stdcall DeleteVolumeMountPointA(str)
diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c
index f12234d..5b8eef6 100644
--- a/dlls/kernel32/sync.c
+++ b/dlls/kernel32/sync.c
@@ -682,40 +682,6 @@ HANDLE WINAPI OpenWaitableTimerA( DWORD access, BOOL inherit, LPCSTR name )
 
 
 /***********************************************************************
- *           CreateTimerQueue  (KERNEL32.@)
- */
-HANDLE WINAPI CreateTimerQueue(void)
-{
-    HANDLE q;
-    NTSTATUS status = RtlCreateTimerQueue(&q);
-
-    if (status != STATUS_SUCCESS)
-    {
-        SetLastError( RtlNtStatusToDosError(status) );
-        return NULL;
-    }
-
-    return q;
-}
-
-
-/***********************************************************************
- *           DeleteTimerQueueEx  (KERNEL32.@)
- */
-BOOL WINAPI DeleteTimerQueueEx(HANDLE TimerQueue, HANDLE CompletionEvent)
-{
-    NTSTATUS status = RtlDeleteTimerQueueEx(TimerQueue, CompletionEvent);
-
-    if (status != STATUS_SUCCESS)
-    {
-        SetLastError( RtlNtStatusToDosError(status) );
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-/***********************************************************************
  *           DeleteTimerQueue  (KERNEL32.@)
  */
 BOOL WINAPI DeleteTimerQueue(HANDLE TimerQueue)
@@ -724,81 +690,13 @@ BOOL WINAPI DeleteTimerQueue(HANDLE TimerQueue)
 }
 
 /***********************************************************************
- *           CreateTimerQueueTimer  (KERNEL32.@)
- *
- * Creates a timer-queue timer. This timer expires at the specified due
- * time (in ms), then after every specified period (in ms). When the timer
- * expires, the callback function is called.
- *
- * RETURNS
- *   nonzero on success or zero on failure
- */
-BOOL WINAPI CreateTimerQueueTimer( PHANDLE phNewTimer, HANDLE TimerQueue,
-                                   WAITORTIMERCALLBACK Callback, PVOID Parameter,
-                                   DWORD DueTime, DWORD Period, ULONG Flags )
-{
-    NTSTATUS status = RtlCreateTimer(phNewTimer, TimerQueue, Callback,
-                                     Parameter, DueTime, Period, Flags);
-
-    if (status != STATUS_SUCCESS)
-    {
-        SetLastError( RtlNtStatusToDosError(status) );
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-/***********************************************************************
- *           ChangeTimerQueueTimer  (KERNEL32.@)
- *
- * Changes the times at which the timer expires.
- *
- * RETURNS
- *   nonzero on success or zero on failure
- */
-BOOL WINAPI ChangeTimerQueueTimer( HANDLE TimerQueue, HANDLE Timer,
-                                   ULONG DueTime, ULONG Period )
-{
-    NTSTATUS status = RtlUpdateTimer(TimerQueue, Timer, DueTime, Period);
-
-    if (status != STATUS_SUCCESS)
-    {
-        SetLastError( RtlNtStatusToDosError(status) );
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-/***********************************************************************
  *           CancelTimerQueueTimer    (KERNEL32.@)
  */
 BOOL WINAPI CancelTimerQueueTimer(HANDLE queue, HANDLE timer)
 {
-    FIXME("stub: %p %p\n", queue, timer);
-    return FALSE;
+    return DeleteTimerQueueTimer( queue, timer, NULL );
 }
 
-/***********************************************************************
- *           DeleteTimerQueueTimer  (KERNEL32.@)
- *
- * Cancels a timer-queue timer.
- *
- * RETURNS
- *   nonzero on success or zero on failure
- */
-BOOL WINAPI DeleteTimerQueueTimer( HANDLE TimerQueue, HANDLE Timer,
-                                   HANDLE CompletionEvent )
-{
-    NTSTATUS status = RtlDeleteTimer(TimerQueue, Timer, CompletionEvent);
-    if (status != STATUS_SUCCESS)
-    {
-        SetLastError( RtlNtStatusToDosError(status) );
-        return FALSE;
-    }
-    return TRUE;
-}
 
 
 /*
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index fb4559d..c81fd0e 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -108,7 +108,7 @@
 @ stub CancelThreadpoolIo
 @ stdcall CancelWaitableTimer(long)
 # @ stub CeipIsOptedIn
-@ stdcall ChangeTimerQueueTimer(ptr ptr long long) kernel32.ChangeTimerQueueTimer
+@ stdcall ChangeTimerQueueTimer(ptr ptr long long)
 @ stdcall CharLowerA(str)
 @ stdcall CharLowerBuffA(str long)
 @ stdcall CharLowerBuffW(wstr long)
@@ -229,8 +229,8 @@
 @ stdcall CreateThreadpoolTimer(ptr ptr ptr) kernel32.CreateThreadpoolTimer
 @ stdcall CreateThreadpoolWait(ptr ptr ptr) kernel32.CreateThreadpoolWait
 @ stdcall CreateThreadpoolWork(ptr ptr ptr) kernel32.CreateThreadpoolWork
-@ stdcall CreateTimerQueue() kernel32.CreateTimerQueue
-@ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long) kernel32.CreateTimerQueueTimer
+@ stdcall CreateTimerQueue()
+@ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long)
 @ stdcall CreateWaitableTimerExW(ptr wstr long long)
 @ stdcall CreateWaitableTimerW(ptr long wstr)
 @ stdcall CreateWellKnownSid(long ptr ptr ptr)
@@ -257,8 +257,8 @@
 # @ stub DeleteStateContainer
 # @ stub DeleteStateContainerValue
 # @ stub DeleteSynchronizationBarrier
-@ stdcall DeleteTimerQueueEx(long long) kernel32.DeleteTimerQueueEx
-@ stdcall DeleteTimerQueueTimer(long long long) kernel32.DeleteTimerQueueTimer
+@ stdcall DeleteTimerQueueEx(long long)
+@ stdcall DeleteTimerQueueTimer(long long long)
 @ stdcall DeleteVolumeMountPointW(wstr) kernel32.DeleteVolumeMountPointW
 @ stdcall DestroyPrivateObjectSecurity(ptr)
 @ stdcall DeviceIoControl(long long ptr long ptr long ptr ptr) kernel32.DeviceIoControl
diff --git a/dlls/kernelbase/sync.c b/dlls/kernelbase/sync.c
index 862dd0f..cd0348d 100644
--- a/dlls/kernelbase/sync.c
+++ b/dlls/kernelbase/sync.c
@@ -531,3 +531,64 @@ BOOL WINAPI DECLSPEC_HOTPATCH CancelWaitableTimer( HANDLE handle )
 {
     return set_ntstatus( NtCancelTimer( handle, NULL ));
 }
+
+
+/***********************************************************************
+ * Timer queues
+ ***********************************************************************/
+
+
+/***********************************************************************
+ *           CreateTimerQueue  (kernelbase.@)
+ */
+HANDLE WINAPI DECLSPEC_HOTPATCH CreateTimerQueue(void)
+{
+    HANDLE q;
+    NTSTATUS status = RtlCreateTimerQueue( &q );
+
+    if (status != STATUS_SUCCESS)
+    {
+        SetLastError( RtlNtStatusToDosError( status ));
+        return NULL;
+    }
+    return q;
+}
+
+
+/***********************************************************************
+ *           CreateTimerQueueTimer  (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH CreateTimerQueueTimer( PHANDLE timer, HANDLE queue,
+                                                     WAITORTIMERCALLBACK callback, PVOID arg,
+                                                     DWORD when, DWORD period, ULONG flags )
+{
+    return set_ntstatus( RtlCreateTimer( timer, queue, callback, arg, when, period, flags ));
+}
+
+
+/***********************************************************************
+ *           ChangeTimerQueueTimer  (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH ChangeTimerQueueTimer( HANDLE queue, HANDLE timer,
+                                                     ULONG when, ULONG period )
+{
+    return set_ntstatus( RtlUpdateTimer( queue, timer, when, period ));
+}
+
+
+/***********************************************************************
+ *           DeleteTimerQueueEx  (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH DeleteTimerQueueEx( HANDLE queue, HANDLE event )
+{
+    return set_ntstatus( RtlDeleteTimerQueueEx( queue, event ));
+}
+
+
+/***********************************************************************
+ *           DeleteTimerQueueTimer  (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH DeleteTimerQueueTimer( HANDLE queue, HANDLE timer, HANDLE event )
+{
+    return set_ntstatus( RtlDeleteTimer( queue, timer, event ));
+}




More information about the wine-cvs mailing list