Go to the source code of this file.
|
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) |
|
◆ ID_EVENT_SYSTIMER_ANIMATEDFADE
#define ID_EVENT_SYSTIMER_ANIMATEDFADE (0xFFF6) |
◆ ID_EVENT_SYSTIMER_FLASHWIN
#define ID_EVENT_SYSTIMER_FLASHWIN (0xFFF8) |
◆ ID_EVENT_SYSTIMER_INVALIDATEDCES
#define ID_EVENT_SYSTIMER_INVALIDATEDCES (0xFFF5) |
◆ ID_EVENT_SYSTIMER_MOUSEHOVER
◆ ID_EVENT_SYSTIMER_TRACKWIN
#define ID_EVENT_SYSTIMER_TRACKWIN (0xFFF7) |
◆ TMRF_INIT
◆ TMRF_ONESHOT
◆ TMRF_READY
◆ TMRF_RIT
◆ TMRF_SYSTEM
◆ TMRF_TIFROMWND
◆ TMRF_WAITING
◆ PTIMER
◆ TIMER
◆ DestroyTimersForThread()
Definition at line 549 of file timer.c.
561 if ((pTmr) && (pTmr->
pti == pti))
569 return TimersRemoved;
static LIST_ENTRY TimersListHead
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
static BOOL FASTCALL RemoveTimer(PTIMER pTmr)
#define TimerEnterExclusive()
Referenced by ExitThreadCallback().
◆ DestroyTimersForWindow()
Definition at line 522 of file timer.c.
545 return TimersRemoved;
static LIST_ENTRY TimersListHead
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
static BOOL FASTCALL RemoveTimer(PTIMER pTmr)
#define TimerEnterExclusive()
Referenced by co_UserFreeWindow(), and IntClientShutdown().
◆ FindSystemTimer()
Definition at line 126 of file timer.c.
137 if ( pMsg->lParam == (
LPARAM)pTmr->
pfn &&
static LIST_ENTRY TimersListHead
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
#define TimerEnterExclusive()
Referenced by IntDispatchMessage().
◆ InitTimerImpl()
Definition at line 594 of file timer.c.
#define STATUS_INSUFFICIENT_RESOURCES
NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP, PULONG, ULONG)
NTSTATUS ExInitializeResourceLite(PULONG res)
#define NUM_WINDOW_LESS_TIMERS
static LIST_ENTRY TimersListHead
static PVOID WindowLessTimersBitMapBuffer
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
#define STATUS_UNSUCCESSFUL
#define ExAllocatePoolWithTag(hernya, size, tag)
#define InitializeListHead(ListHead)
NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP)
#define ALIGN_UP_BY(size, align)
static RTL_BITMAP WindowLessTimersBitMap
Referenced by DriverEntry().
◆ IntKillTimer()
Definition at line 573 of file timer.c.
576 TRACE(
"IntKillTimer Window %p id %uI systemtimer %s\n",
577 Window, IDEvent, SystemTimer ?
"TRUE" :
"FALSE");
PTIMER FASTCALL FindTimer(PWND Window, UINT_PTR nID, UINT flags)
static BOOL FASTCALL RemoveTimer(PTIMER pTmr)
#define TimerEnterExclusive()
Referenced by co_UserHideCaret(), IntFlashWindowEx(), IntRemoveTrackMouseEvent(), IntTrackMouseEvent(), IntTrackMouseMove(), NtUserCallHwndParam(), NtUserCreateCaret(), NtUserKillTimer(), and SystemTimerProc().
◆ IntSetTimer()
Definition at line 177 of file timer.c.
192 TRACE(
"Adjusting uElapse\n");
199 TRACE(
"Adjusting uElapse\n");
207 TRACE(
"Adjusting uElapse\n");
213 if ((
Window) && (IDEvent == 0))
227 ERR(
"Unable to find a free window-less timer id\n");
245 pTmr->
pti =
Window->head.pti->pEThread->Tcb.Win32Thread;
257 pTmr->
pfn = TimerFunc;
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
#define USER_TIMER_MINIMUM
struct _LIST_ENTRY * Blink
#define IntUnlockWindowlessTimerBitmap()
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
#define ERROR_NO_SYSTEM_RESOURCES
PTIMER FASTCALL FindTimer(PWND Window, UINT_PTR nID, UINT flags)
#define NUM_WINDOW_LESS_TIMERS
static LIST_ENTRY TimersListHead
NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP, ULONG, ULONG)
struct _LIST_ENTRY * Flink
unsigned __int3264 UINT_PTR
#define USER_TIMER_MAXIMUM
_In_ WDFTIMER _In_ LONGLONG DueTime
#define IntLockWindowlessTimerBitmap()
static PTIMER FASTCALL CreateTimer(VOID)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
static RTL_BITMAP WindowLessTimersBitMap
Referenced by co_IntSetCaretPos(), co_UserShowCaret(), IntFlashWindowEx(), IntTrackMouseEvent(), IntTrackMouseMove(), NtUserCreateCaret(), NtUserSetSystemTimer(), NtUserSetTimer(), StartTheTimers(), and SystemTimerSet().
◆ PostTimerMessages()
Definition at line 395 of file timer.c.
411 (pTmr->
pti == pti) &&
#define QS_ALLPOSTMESSAGE
#define EngGetTickCount32()
TW_UINT32 TW_UINT16 TW_UINT16 MSG
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
#define InsertTailList(ListHead, Entry)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
static LIST_ENTRY TimersListHead
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
VOID FASTCALL ClearMsgBitsMask(PTHREADINFO pti, UINT MessageBits)
VOID FASTCALL MsqPostMessage(PTHREADINFO pti, MSG *Msg, BOOLEAN HardwareMessage, DWORD MessageBits, DWORD dwQEvent, LONG_PTR ExtraInfo)
#define TimerEnterExclusive()
Referenced by co_IntPeekMessage().
◆ ProcessTimers()
Definition at line 446 of file timer.c.
518 TRACE(
"TimerCount = %d\n", TimerCount);
VOID FASTCALL MsqWakeQueue(PTHREADINFO pti, DWORD MessageBits, BOOL KeyEvent)
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
#define EngGetTickCount32()
static LIST_ENTRY TimersListHead
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
PKEVENT pEventQueueServer
_In_ WDFTIMER _In_ LONGLONG DueTime
#define TimerEnterExclusive()
static PLARGE_INTEGER Time
Referenced by RawInputThreadMain().
◆ StartTheTimers()
Definition at line 368 of file timer.c.
UINT_PTR FASTCALL IntSetTimer(PWND Window, UINT_PTR IDEvent, UINT Elapse, TIMERPROC TimerFunc, INT Type)
VOID CALLBACK HungAppSysTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
Referenced by RawInputThreadMain().
◆ SystemTimerProc()
Definition at line 280 of file timer.c.
293 ERR(
"System Timer Proc has invalid window handle! %p Id: %u\n",
hwnd, idEvent);
299 TRACE(
"Windowless Timer Running!\n" );
339 TRACE(
"Generating WM_NCMOUSEHOVER\n");
360 ERR(
"System Timer Proc invalid id %u!\n", idEvent);
BOOL FASTCALL IntFlashWindowEx(PWND pWnd, PFLASHWINFO pfwi)
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
#define ID_EVENT_SYSTIMER_MOUSEHOVER
WPARAM FASTCALL MsqGetDownKeyState(PUSER_MESSAGE_QUEUE MessageQueue)
BOOL FASTCALL IntKillTimer(PWND Window, UINT_PTR IDEvent, BOOL SystemTimer)
PWND FASTCALL UserGetWindowObject(HWND hWnd)
#define UserHMGetHandle(obj)
#define ID_EVENT_SYSTIMER_FLASHWIN
FORCEINLINE BOOL RECTL_bPointInRect(_In_ const RECTL *prcl, _In_ INT x, _In_ INT y)
Referenced by IntFlashWindowEx(), IntTrackMouseEvent(), and IntTrackMouseMove().
◆ SystemTimerSet()
Definition at line 379 of file timer.c.
387 TRACE(
"SysemTimerSet: Access Denied!\n");
UINT_PTR FASTCALL IntSetTimer(PWND Window, UINT_PTR IDEvent, UINT Elapse, TIMERPROC TimerFunc, INT Type)
#define ERROR_ACCESS_DENIED
#define PsGetCurrentProcess
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
◆ ValidateTimerCallback()
Definition at line 150 of file timer.c.
164 (pTmr->
pti->
ppi == pti->ppi) )
static LIST_ENTRY TimersListHead
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
#define TimerEnterExclusive()
Referenced by IntDispatchMessage(), and NtUserValidateTimerCallback().
◆ MasterTimer