47 NextEntry = ListHead->
Flink;
48 while (NextEntry != ListHead)
52 NextEntry = NextEntry->
Flink;
55 if (
Timer->DueTime.QuadPart <= CurrentTime.QuadPart)
62 DPRINT1(
"Invalid timer state!\n");
136 while (ListHead != ListHead->
Flink)
140 NextEntry = ListHead->
Flink;
145 if ((NextEntry != ListHead) &&
155 Timer->Header.SignalState = 1;
158 TimerDpc =
Timer->Dpc;
211 DpcEntry[DpcCalls].
Dpc = TimerDpc;
220 if (!(ActiveTimers) || !(
Timers))
226 for (
i = 0; DpcCalls; DpcCalls--,
i++)
251 if (NextEntry != ListHead)
255 Timer->DueTime.QuadPart);
260 Timer->DueTime.QuadPart;
274 for (
i = 0; DpcCalls; DpcCalls--,
i++)
312 for (
i = 0; DpcCalls; DpcCalls--,
i++)
355 while (ExpiredListHead->Flink != ExpiredListHead)
367 Timer->Header.SignalState = 1;
370 TimerDpc =
Timer->Dpc;
423 DpcEntry[DpcCalls].
Dpc = TimerDpc;
439 for (
i = 0; DpcCalls; DpcCalls--,
i++)
488 (
Thread->ApcState.Process->DisableQuantum))
548 KxQueueReadyThread(
Thread, Prcb);
576 ListHead = &DpcData->DpcListHead;
582 Prcb->DpcRoutineActive =
TRUE;
585 if (Prcb->TimerRequest)
588 TimerHand = Prcb->TimerHand;
589 Prcb->TimerRequest = 0;
602 DpcEntry = ListHead->
Flink;
605 if (DpcEntry != ListHead)
613 DeferredRoutine =
Dpc->DeferredRoutine;
623 Prcb->DebugDpcTime = 0;
653 Prcb->DpcRoutineActive =
FALSE;
654 Prcb->DpcInterruptRequested =
FALSE;
658 if (Prcb->DeferredReadyListHead.Next)
687 Dpc->DeferredRoutine = DeferredRoutine;
755 ASSERT(Prcb == CurrentPrcb);
780 DpcConfigured =
TRUE;
810 if (Prcb != CurrentPrcb)
856 if (Prcb != CurrentPrcb)
870 return DpcConfigured;
888 DpcData =
Dpc->DpcData;
895 if (DpcData ==
Dpc->DpcData)
920KeFlushQueuedDpcs(
VOID)
922 ULONG ProcessorIndex;
1014 ReverseBarrier.
Barrier = Barrier;
#define InterlockedExchange
#define InterlockedDecrement
#define _Requires_lock_not_held_(lock)
VOID NTAPI KeGenericCallDpc(IN PKDEFERRED_ROUTINE Routine, IN PVOID Context)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
FAST_MUTEX KiGenericCallDpcMutex
ULONG KiAdjustDpcThreshold
ULONG KiTimeLimitIsrMicroseconds
ULONG KiMaximumDpcQueueDepth
BOOLEAN KeThreadDpcEnable
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
VOID NTAPI KeSetTargetProcessorDpc(IN PKDPC Dpc, IN CCHAR Number)
VOID FASTCALL KiTimerListExpire(IN PLIST_ENTRY ExpiredListHead, IN KIRQL OldIrql)
BOOLEAN NTAPI KeRemoveQueueDpc(IN PKDPC Dpc)
BOOLEAN NTAPI KeSignalCallDpcSynchronize(IN PVOID SystemArgument2)
VOID NTAPI KeInitializeThreadedDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
VOID NTAPI KiCheckTimerTable(IN ULARGE_INTEGER CurrentTime)
VOID NTAPI KiInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext, IN KOBJECTS Type)
VOID NTAPI KeSignalCallDpcDone(IN PVOID SystemArgument1)
BOOLEAN NTAPI KeIsExecutingDpc(VOID)
VOID NTAPI KiTimerExpiration(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
VOID NTAPI KeSetImportanceDpc(IN PKDPC Dpc, IN KDPC_IMPORTANCE Importance)
VOID FASTCALL KiRetireDpcList(IN PKPRCB Prcb)
#define _IRQL_requires_max_(irql)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define KeRaiseIrql(irql, oldIrql)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeQuerySystemTime(t)
#define KeGetCurrentIrql()
#define MAXIMUM_PROCESSORS
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID FASTCALL HalRequestSoftwareInterrupt(IN KIRQL Irql)
KIRQL NTAPI KeRaiseIrqlToSynchLevel(VOID)
#define KeGetCurrentThread
NTSYSAPI void WINAPI DbgBreakPoint(void)
#define LOW_REALTIME_PRIORITY
#define InterlockedCompareExchangePointer
void __cdecl _disable(void)
void __cdecl _enable(void)
FORCEINLINE VOID KiReleaseDispatcherLock(IN KIRQL OldIrql)
FORCEINLINE PKTHREAD KiSelectReadyThread(IN KPRIORITY Priority, IN PKPRCB Prcb)
FORCEINLINE VOID KiSetThreadSwapBusy(IN PKTHREAD Thread)
FORCEINLINE VOID KiRemoveEntryTimer(IN PKTIMER Timer)
FORCEINLINE VOID KiReleaseTimerLock(IN PKSPIN_LOCK_QUEUE LockQueue)
FORCEINLINE VOID KiReleasePrcbLock(IN PKPRCB Prcb)
FORCEINLINE VOID KiAcquireThreadLock(IN PKTHREAD Thread)
FORCEINLINE VOID KxUnwaitThread(IN DISPATCHER_HEADER *Object, IN KPRIORITY Increment)
FORCEINLINE PKSPIN_LOCK_QUEUE KiAcquireTimerLock(IN ULONG Hand)
FORCEINLINE VOID KiReleaseThreadLock(IN PKTHREAD Thread)
FORCEINLINE VOID KiAcquirePrcbLock(IN PKPRCB Prcb)
FORCEINLINE KIRQL KiAcquireDispatcherLock(VOID)
FORCEINLINE SCHAR KiComputeNewPriority(IN PKTHREAD Thread, IN SCHAR Adjustment)
FORCEINLINE VOID KxUnwaitThreadForEvent(IN PKEVENT Event, IN KPRIORITY Increment)
static PLARGE_INTEGER Time
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
FORCEINLINE KAFFINITY AFFINITY_MASK(ULONG Index)
@ TimerNotificationObject
#define Int32x32To64(a, b)
#define UNREFERENCED_PARAMETER(P)
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
FORCEINLINE BOOLEAN KeDisableInterrupts(VOID)
NTKERNELAPI volatile KSYSTEM_TIME KeTickCount
KTIMER_TABLE_ENTRY KiTimerTableListHead[TIMER_TABLE_SIZE]
PKPRCB KiProcessorBlock[]
BOOLEAN FASTCALL KiSwapContext(IN KIRQL WaitIrql, IN PKTHREAD CurrentThread)
VOID FASTCALL KiProcessDeferredReadyList(IN PKPRCB Prcb)
VOID FASTCALL KiIpiSend(KAFFINITY TargetSet, ULONG IpiRequest)
VOID NTAPI KiQuantumEnd(VOID)
BOOLEAN FASTCALL KiInsertTreeTimer(IN PKTIMER Timer, IN LARGE_INTEGER Interval)
VOID FASTCALL KiAcquireSpinLock(IN PKSPIN_LOCK SpinLock)
VOID FASTCALL KiReleaseSpinLock(IN PKSPIN_LOCK SpinLock)
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
#define UNIMPLEMENTED_FATAL(...)
#define KeQueryInterruptTime()
#define KeAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock)
PKDEFERRED_ROUTINE Routine
volatile ULONG DpcQueueDepth
PKDEFERRED_ROUTINE DeferredRoutine
LONG MaximumDpcQueueDepth
struct _KTHREAD * CurrentThread
struct _KTHREAD * NextThread
UCHAR DpcInterruptRequested
struct _LIST_ENTRY * Flink
VOID NTAPI KeSetSystemAffinityThread(IN KAFFINITY Affinity)
VOID NTAPI KeRevertToUserAffinityThread(VOID)
#define CONTAINING_RECORD(address, type, field)
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_ KDPC_IMPORTANCE Importance
_In_ LARGE_INTEGER _In_ ULONG Period
_In_ LONG _In_ LONG Limit
enum _KDPC_IMPORTANCE KDPC_IMPORTANCE
#define ASSERT_DPC(Object)
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
KDEFERRED_ROUTINE * PKDEFERRED_ROUTINE