71 DPRINT(
"KiInsertTimerTable(): Timer %p, Hand: %lu\n",
Timer, Hand);
81 NextEntry = ListHead->
Blink;
82 while (NextEntry != ListHead)
91 NextEntry = NextEntry->
Blink;
98 if (NextEntry == ListHead)
158 RequestInterrupt =
TRUE;
162 return RequestInterrupt;
172 DPRINT(
"KiCompleteTimer(): Timer %p, LockQueue: %p\n",
Timer, LockQueue);
180 Timer->TimerListEntry.Flink = &ListHead;
181 Timer->TimerListEntry.Blink = &ListHead;
218 Inserted =
Timer->Header.Inserted;
247 DPRINT(
"KeInitializeTimerEx(): Timer %p, Type %s\n",
249 "NotificationTimer" :
"SynchronizationTimer");
255 Timer->Header.Inserted = 0;
256 Timer->Header.SignalState = 0;
260 Timer->DueTime.QuadPart = 0;
305 DPRINT(
"KeSetTimerEx(): Timer %p, DueTime %I64d, Period %d, Dpc %p\n",
312 Inserted =
Timer->Header.Inserted;
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
#define InsertHeadList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define KeQuerySystemTime(t)
#define KeGetCurrentIrql()
#define InitializeListHead(ListHead)
VOID FASTCALL HalRequestSoftwareInterrupt(IN KIRQL Irql)
FORCEINLINE BOOLEAN KiComputeDueTime(IN PKTIMER Timer, IN LARGE_INTEGER DueTime, OUT PULONG Hand)
FORCEINLINE VOID KiReleaseDispatcherLock(IN KIRQL OldIrql)
FORCEINLINE VOID KxRemoveTreeTimer(IN PKTIMER Timer)
FORCEINLINE VOID KiRemoveEntryTimer(IN PKTIMER Timer)
FORCEINLINE VOID KiReleaseTimerLock(IN PKSPIN_LOCK_QUEUE LockQueue)
FORCEINLINE ULONG KiComputeTimerTableIndex(IN ULONGLONG DueTime)
FORCEINLINE VOID KxUnwaitThread(IN DISPATCHER_HEADER *Object, IN KPRIORITY Increment)
FORCEINLINE PKSPIN_LOCK_QUEUE KiAcquireTimerLock(IN ULONG Hand)
FORCEINLINE VOID KiReleaseDispatcherLockFromSynchLevel(VOID)
FORCEINLINE VOID KiAcquireDispatcherLockAtSynchLevel(VOID)
FORCEINLINE KIRQL KiAcquireDispatcherLock(VOID)
FORCEINLINE VOID KxInsertTimer(IN PKTIMER Timer, IN ULONG Hand)
FORCEINLINE VOID KxUnwaitThreadForEvent(IN PKEVENT Event, IN KPRIORITY Increment)
@ TimerNotificationObject
#define Int32x32To64(a, b)
enum _TIMER_TYPE TIMER_TYPE
VOID FASTCALL KiExitDispatcher(KIRQL OldIrql)
#define KeQueryInterruptTime()
PULONG MinorVersion OPTIONAL
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
KTIMER_TABLE_ENTRY KiTimerTableListHead[TIMER_TABLE_SIZE]
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
LARGE_INTEGER KiTimeIncrementReciprocal
BOOLEAN FASTCALL KiSignalTimer(IN PKTIMER Timer)
VOID FASTCALL KiCompleteTimer(IN PKTIMER Timer, IN PKSPIN_LOCK_QUEUE LockQueue)
BOOLEAN KiEnableTimerWatchdog
BOOLEAN NTAPI KeReadStateTimer(IN PKTIMER Timer)
UCHAR KiTimeIncrementShiftCount
BOOLEAN FASTCALL KiInsertTimerTable(IN PKTIMER Timer, IN ULONG Hand)
BOOLEAN NTAPI KeSetTimerEx(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN LONG Period, IN PKDPC Dpc OPTIONAL)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
BOOLEAN FASTCALL KiInsertTreeTimer(IN PKTIMER Timer, IN LARGE_INTEGER Interval)
VOID NTAPI KeInitializeTimerEx(OUT PKTIMER Timer, IN TIMER_TYPE Type)
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_In_ WDFTIMER _In_ LONGLONG DueTime
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_ LARGE_INTEGER _In_ ULONG Period
#define ASSERT_TIMER(Object)