Provide stubs for Create/DeleteTimerQueueTimer.
diff --git a/dlls/kernel/kernel32.spec b/dlls/kernel/kernel32.spec
index 04a6d4f..10f59a4 100644
--- a/dlls/kernel/kernel32.spec
+++ b/dlls/kernel/kernel32.spec
@@ -955,15 +955,17 @@
@ stdcall SetThreadExecutionState(long) SetThreadExecutionState
# Windows 2000, Terminal Server 4.0 SP4 functions
+@ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long) CreateTimerQueueTimer
+@ stdcall DeleteTimerQueueTimer(long long long) DeleteTimerQueueTimer
+@ stdcall GetCalendarInfoA(long long long ptr long ptr) GetCalendarInfoA
+@ stdcall GetCalendarInfoW(long long long ptr long ptr) GetCalendarInfoW
@ stdcall GetSystemWindowsDirectoryA(ptr long) GetSystemWindowsDirectoryA
@ stdcall GetSystemWindowsDirectoryW(ptr long) GetSystemWindowsDirectoryW
@ stdcall InitializeCriticalSectionAndSpinCount(ptr long) InitializeCriticalSectionAndSpinCount
@ stdcall ProcessIdToSessionId(long ptr) ProcessIdToSessionId
-@ stdcall SetCriticalSectionSpinCount(ptr long) SetCriticalSectionSpinCount
-@ stdcall GetCalendarInfoA(long long long ptr long ptr) GetCalendarInfoA
-@ stdcall GetCalendarInfoW(long long long ptr long ptr) GetCalendarInfoW
@ stdcall SetCalendarInfoA(long long long str) SetCalendarInfoA
@ stdcall SetCalendarInfoW(long long long wstr) SetCalendarInfoW
+@ stdcall SetCriticalSectionSpinCount(ptr long) SetCriticalSectionSpinCount
@ stdcall VerifyVersionInfoA(long long long long) VerifyVersionInfoA
@ stdcall VerifyVersionInfoW(long long long long) VerifyVersionInfoW
diff --git a/include/winbase.h b/include/winbase.h
index 0aebe0d..cdf69f6 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -50,7 +50,8 @@
typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
-
+typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK;
+
#define EXCEPTION_DEBUG_EVENT 1
#define CREATE_THREAD_DEBUG_EVENT 2
#define CREATE_PROCESS_DEBUG_EVENT 3
@@ -1202,6 +1203,7 @@
#define CreateSemaphore WINELIB_NAME_AW(CreateSemaphore)
DWORD WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
+BOOL WINAPI CreateTimerQueueTimer(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,DWORD,DWORD,ULONG);
HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
#define CreateWaitableTimer WINELIB_NAME_AW(CreateWaitableTimer)
@@ -1210,6 +1212,7 @@
void WINAPI DebugBreak(void);
BOOL WINAPI DebugBreakProcess(HANDLE);
BOOL WINAPI DebugSetProcessKillOnExit(BOOL);
+BOOL WINAPI DeleteTimerQueueTimer(HANDLE,HANDLE,HANDLE);
BOOL WINAPI DeregisterEventSource(HANDLE);
BOOL WINAPI DeviceIoControl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
BOOL WINAPI DisableThreadLibraryCalls(HMODULE);
diff --git a/include/winnt.h b/include/winnt.h
index c3efdde..eacde73 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -117,6 +117,7 @@
#define CALLBACK __stdcall
#define WINAPI __stdcall
+#define NTAPI __stdcall
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
#define CDECL __cdecl
@@ -3513,4 +3514,6 @@
ULONG_PTR SpinCount;
} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
+typedef VOID (NTAPI * WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN );
+
#endif /* __WINE_WINNT_H */
diff --git a/scheduler/timer.c b/scheduler/timer.c
index 210a1d2..3fe9dff 100644
--- a/scheduler/timer.c
+++ b/scheduler/timer.c
@@ -28,6 +28,9 @@
#include "wine/unicode.h"
#include "file.h" /* for FILETIME routines */
#include "wine/server.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(timer);
/***********************************************************************
@@ -173,3 +176,45 @@
SERVER_END_REQ;
return ret;
}
+
+
+/***********************************************************************
+ * 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 faillure
+ *
+ * BUGS
+ * Unimplemented
+ */
+BOOL WINAPI CreateTimerQueueTimer( PHANDLE phNewTimer, HANDLE TimerQueue,
+ WAITORTIMERCALLBACK Callback, PVOID Parameter,
+ DWORD DueTime, DWORD Period, ULONG Flags )
+{
+ FIXME("stub\n");
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return TRUE;
+}
+
+/***********************************************************************
+ * DeleteTimerQueueTimer (KERNEL32.@)
+ *
+ * Cancels a timer-queue timer.
+ *
+ * RETURNS
+ * nonzero on success or zero on faillure
+ *
+ * BUGS
+ * Unimplemented
+ */
+BOOL WINAPI DeleteTimerQueueTimer( HANDLE TimerQueue, HANDLE Timer,
+ HANDLE CompletionEvent )
+{
+ FIXME("stub\n");
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return TRUE;
+}