-#ifndef _WIN32K_TIMER_H
-#define _WIN32K_TIMER_H
+#pragma once
typedef struct _TIMER
{
+ HEAD head;
LIST_ENTRY ptmrList;
- PW32THREADINFO pti;
- PWINDOW_OBJECT pWnd; // hWnd
+ PTHREADINFO pti;
+ PWND pWnd; // hWnd
UINT_PTR nID; // Specifies a nonzero timer identifier.
INT cmsCountdown; // uElapse
INT cmsRate; // uElapse
TIMERPROC pfn; // lpTimerFunc
} TIMER, *PTIMER;
-NTSTATUS FASTCALL InitTimerImpl(VOID);
-BOOL FASTCALL IntKillTimer(HWND Wnd, UINT_PTR IDEvent, BOOL SystemTimer);
-UINT_PTR FASTCALL IntSetTimer(HWND Wnd, UINT_PTR IDEvent, UINT Elapse, TIMERPROC TimerFunc, BOOL SystemTimer);
+//
+// Timer structure flags.
+//
+#define TMRF_READY 0x0001
+#define TMRF_SYSTEM 0x0002
+#define TMRF_RIT 0x0004
+#define TMRF_INIT 0x0008
+#define TMRF_ONESHOT 0x0010
+#define TMRF_WAITING 0x0020
+#define TMRF_TIFROMWND 0x0040
-#endif /* _WIN32K_TIMER_H */
+extern PKTIMER MasterTimer;
+
+INIT_FUNCTION
+NTSTATUS
+NTAPI
+InitTimerImpl(VOID);
+BOOL FASTCALL DestroyTimersForThread(PTHREADINFO pti);
+BOOL FASTCALL DestroyTimersForWindow(PTHREADINFO pti, PWND Window);
+BOOL FASTCALL IntKillTimer(PWND Window, UINT_PTR IDEvent, BOOL SystemTimer);
+UINT_PTR FASTCALL IntSetTimer(PWND Window, UINT_PTR IDEvent, UINT Elapse, TIMERPROC TimerFunc, INT Type);
+PTIMER FASTCALL FindSystemTimer(PMSG);
+BOOL FASTCALL ValidateTimerCallback(PTHREADINFO,LPARAM);
+VOID CALLBACK SystemTimerProc(HWND,UINT,UINT_PTR,DWORD);
+UINT_PTR FASTCALL SystemTimerSet(PWND,UINT_PTR,UINT,TIMERPROC);
+BOOL FASTCALL PostTimerMessages(PWND);
+VOID FASTCALL ProcessTimers(VOID);
+VOID FASTCALL StartTheTimers(VOID);