20 0x1, 0x2, 0x4, 0x8, 0x10, 0x20,
21 0x40, 0x80, 0x100, 0x200, 0x400, 0x800,
22 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000,
23 0x40000, 0x80000, 0x100000, 0x200000, 0x400000, 0x800000,
24 0x1000000, 0x2000000, 0x4000000, 0x8000000, 0x10000000, 0x20000000,
25 0x40000000, 0x80000000
161 PreviousCount =
Thread->SuspendCount;
171 Thread->SuspendSemaphore.Header.SignalState++;
180 return PreviousCount;
206 (AlertMode <= Thread->WaitMode))
247 !(
Thread->PriorityDecrement))
287 PreviousCount =
Thread->SuspendCount +
Thread->FreezeCount;
300 Thread->SuspendSemaphore.Header.SignalState++;
310 return PreviousCount;
339 ListHead = &
Process->ThreadListHead;
340 NextEntry = ListHead->
Flink;
350 if ((Current != CurrentThread) && (Current->
ApcQueueable))
363 if (!Current->SuspendApc.Inserted)
366 Current->SuspendApc.Inserted =
TRUE;
387 NextEntry = NextEntry->
Flink;
388 }
while (NextEntry != ListHead);
408 PreviousCount =
Thread->SuspendCount;
423 Thread->SuspendSemaphore.Header.SignalState++;
434 return PreviousCount;
454 ListHead = &
Thread->MutantListHead;
455 NextEntry = ListHead->
Flink;
456 while (NextEntry != ListHead)
489 NextEntry =
Thread->MutantListHead.Flink;
506 UCHAR IdealProcessor = 0;
537 Set = ~NodePrcb->MultiThreadProcessorSet;
545 Process->ThreadSeed = IdealProcessor;
552 Thread->IdealProcessor = IdealProcessor;
553 Thread->UserIdealProcessor = IdealProcessor;
621 PreviousCount =
Thread->SuspendCount;
638 if (!(PreviousCount) && !(
Thread->FreezeCount))
641 if (!
Thread->SuspendApc.Inserted)
653 Thread->SuspendSemaphore.Header.SignalState--;
664 return PreviousCount;
682 ListHead = &
Process->ThreadListHead;
683 NextEntry = ListHead->
Flink;
718 NextEntry = NextEntry->
Flink;
719 }
while (NextEntry != ListHead);
743 OldState =
Thread->Alerted[AlertMode];
782 Thread->Header.ThreadControlFlags = 0;
784 Thread->Header.SignalState = 0;
799 Thread->IdealProcessor = 1;
840 TimerWaitBlock->NextWaitBlock =
NULL;
858 AllocatedStack =
TRUE;
862 Thread->InitialStack = KernelStack;
863 Thread->StackBase = KernelStack;
954#undef KeGetCurrentThread
966#undef KeGetPreviousMode
989 return Thread->KernelTime;
1078 CCHAR OldIdealProcessor;
1086 OldIdealProcessor =
Thread->UserIdealProcessor;
1098 if (!
Thread->SystemAffinityActive)
1108 return OldIdealProcessor;
1135 ULONG AffinitySet, NodeMask;
1142 NodeMask = Prcb->
ParentNode->ProcessorMask & AffinitySet;
1146 AffinitySet = NodeMask;
1204 OldBasePriority =
Thread->BasePriority;
1205 OldIncrement = OldBasePriority -
Process->BasePriority;
1260 Priority += (BasePriority - OldBasePriority);
1280 Thread->PriorityDecrement = 0;
1295 return OldIncrement;
1344 OldPriority =
Thread->Priority;
1345 Thread->PriorityDecrement = 0;
1406 *ThreadAddr =
Entry;
1415 }
while (
Entry != SavedEntry);
#define NT_SUCCESS(StatCode)
BOOLEAN NTAPI KeIsExecutingDpc(VOID)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeLowerIrql(oldIrql)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
#define MAXIMUM_PROCESSORS
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
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
KIRQL NTAPI KeRaiseIrqlToSynchLevel(VOID)
#define KeGetCurrentThread
#define EXCEPTION_EXECUTE_HANDLER
NTSYSAPI void WINAPI DbgBreakPoint(void)
#define LOW_REALTIME_PRIORITY
#define InterlockedCompareExchangePointer
#define InterlockedBitTestAndSet
#define InterlockedBitTestAndReset
FORCEINLINE VOID KiAcquireApcLockRaiseToSynch(IN PKTHREAD Thread, IN PKLOCK_QUEUE_HANDLE Handle)
FORCEINLINE VOID KiReleaseDispatcherLock(IN KIRQL OldIrql)
FORCEINLINE VOID KiSetThreadSwapBusy(IN PKTHREAD Thread)
FORCEINLINE VOID KiReleaseProcessLockFromSynchLevel(IN PKLOCK_QUEUE_HANDLE Handle)
FORCEINLINE VOID KiReleasePrcbLock(IN PKPRCB Prcb)
FORCEINLINE VOID KiAcquireThreadLock(IN PKTHREAD Thread)
FORCEINLINE VOID KxUnwaitThread(IN DISPATCHER_HEADER *Object, IN KPRIORITY Increment)
#define KeLeaveCriticalRegion()
FORCEINLINE VOID KiReleaseDispatcherLockFromSynchLevel(VOID)
#define KeEnterCriticalRegion()
FORCEINLINE VOID KiReleaseProcessLock(IN PKLOCK_QUEUE_HANDLE Handle)
FORCEINLINE VOID KiReleaseThreadLock(IN PKTHREAD Thread)
FORCEINLINE VOID KiAcquireDispatcherLockAtSynchLevel(VOID)
FORCEINLINE VOID KiAcquireApcLockAtSynchLevel(IN PKTHREAD Thread, IN PKLOCK_QUEUE_HANDLE Handle)
FORCEINLINE VOID KiReleaseApcLockFromSynchLevel(IN PKLOCK_QUEUE_HANDLE Handle)
FORCEINLINE VOID KiAcquirePrcbLock(IN PKPRCB Prcb)
FORCEINLINE KIRQL KiAcquireDispatcherLock(VOID)
FORCEINLINE VOID KiAcquireProcessLockRaiseToSynch(IN PKPROCESS Process, IN PKLOCK_QUEUE_HANDLE Handle)
FORCEINLINE SCHAR KiComputeNewPriority(IN PKTHREAD Thread, IN SCHAR Adjustment)
FORCEINLINE VOID KiReleaseApcLock(IN PKLOCK_QUEUE_HANDLE Handle)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
#define _KeGetPreviousMode()
#define KeGetPreviousMode()
#define _KeGetCurrentThread()
VOID(NTAPI * PKSYSTEM_ROUTINE)(PKSTART_ROUTINE StartRoutine, PVOID StartContext)
#define THREAD_ALERT_INCREMENT
#define ASSERT_THREAD(object)
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
struct _ETHREAD * PETHREAD
#define UNREFERENCED_PARAMETER(P)
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
FORCEINLINE VOID KiRundownThread(IN PKTHREAD Thread)
VOID NTAPI KiReadyThread(IN PKTHREAD Thread)
PKPRCB KiProcessorBlock[]
LONG_PTR FASTCALL KiSwapThread(IN PKTHREAD Thread, IN PKPRCB Prcb)
KAFFINITY KeActiveProcessors
KAFFINITY FASTCALL KiSetAffinityThread(IN PKTHREAD Thread, IN KAFFINITY Affinity)
VOID FASTCALL KiUnwaitThread(IN PKTHREAD Thread, IN LONG_PTR WaitStatus, IN KPRIORITY Increment)
VOID NTAPI KiInitializeContextThread(PKTHREAD Thread, PKSYSTEM_ROUTINE SystemRoutine, PKSTART_ROUTINE StartRoutine, PVOID StartContext, PCONTEXT Context)
#define AFFINITY_MASK(Id)
PKTHREAD FASTCALL KiSelectNextThread(IN PKPRCB Prcb)
VOID FASTCALL KiActivateWaiterQueue(IN PKQUEUE Queue)
VOID FASTCALL KiInsertQueueApc(IN PKAPC Apc, IN KPRIORITY PriorityBoost)
VOID FASTCALL KiSetPriorityThread(IN PKTHREAD Thread, IN KPRIORITY Priority)
LONG NTAPI KiInsertQueue(IN PKQUEUE Queue, IN PLIST_ENTRY Entry, BOOLEAN Head)
VOID FASTCALL KiWaitTest(PVOID Object, KPRIORITY Increment)
VOID FASTCALL KiExitDispatcher(KIRQL OldIrql)
VOID NTAPI MmDeleteKernelStack(PVOID Stack, BOOLEAN GuiStack)
PVOID NTAPI MmCreateKernelStack(BOOLEAN GuiStack, UCHAR Node)
VOID NTAPI KeInitializeApc(IN PKAPC Apc, IN PKTHREAD Thread, IN KAPC_ENVIRONMENT TargetEnvironment, IN PKKERNEL_ROUTINE KernelRoutine, IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL, IN PKNORMAL_ROUTINE NormalRoutine, IN KPROCESSOR_MODE Mode, IN PVOID Context)
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
#define STATUS_SUSPEND_COUNT_EXCEEDED
KSERVICE_TABLE_DESCRIPTOR KeServiceDescriptorTable[SSDT_MAX_ENTRIES]
WORK_QUEUE_ITEM PspReaperWorkItem
#define _SEH2_EXCEPT(...)
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
#define ASSERT_IRQL_LESS_OR_EQUAL(x)
#define KERNEL_STACK_SIZE
VOID NTAPI KeInitializeSemaphore(IN PKSEMAPHORE Semaphore, IN LONG Count, IN LONG Limit)
base of all file and directory entries
LIST_ENTRY ThreadListEntry
LIST_ENTRY MutantListEntry
struct _KTHREAD *RESTRICTED_POINTER OwnerThread
struct _KTHREAD * NextThread
struct _KNODE * ParentNode
ULONG SystemAffinityActive
GROUP_AFFINITY UserAffinity
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
NTSTATUS NTAPI KeInitThread(IN OUT PKTHREAD Thread, IN PVOID KernelStack, IN PKSYSTEM_ROUTINE SystemRoutine, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext, IN PCONTEXT Context, IN PVOID Teb, IN PKPROCESS Process)
KPRIORITY NTAPI KeQueryPriorityThread(IN PKTHREAD Thread)
LIST_ENTRY PspReaperListHead
VOID NTAPI KiSuspendNop(IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2)
KPRIORITY NTAPI KeQueryBasePriorityThread(IN PKTHREAD Thread)
ULONG NTAPI KeForceResumeThread(IN PKTHREAD Thread)
VOID NTAPI KeFreezeAllThreads(VOID)
VOID NTAPI KeSetSystemAffinityThread(IN KAFFINITY Affinity)
VOID NTAPI KeUninitThread(IN PKTHREAD Thread)
VOID NTAPI KeThawAllThreads(VOID)
UCHAR NTAPI KeFindNextRightSetAffinity(IN UCHAR Number, IN ULONG Set)
ULONG NTAPI KeSuspendThread(PKTHREAD Thread)
UCHAR NTAPI KeSetIdealProcessorThread(IN PKTHREAD Thread, IN UCHAR Processor)
ULONG NTAPI KeResumeThread(IN PKTHREAD Thread)
VOID NTAPI KeInitializeThread(IN PKPROCESS Process, IN OUT PKTHREAD Thread, IN PKSYSTEM_ROUTINE SystemRoutine, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext, IN PCONTEXT Context, IN PVOID Teb, IN PVOID KernelStack)
VOID NTAPI KeTerminateThread(IN KPRIORITY Increment)
LONG NTAPI KeSetBasePriorityThread(IN PKTHREAD Thread, IN LONG Increment)
BOOLEAN NTAPI KeSetKernelStackSwapEnable(IN BOOLEAN Enable)
ULONG KiMask32Array[MAXIMUM_PRIORITY]
BOOLEAN NTAPI KeSetDisableBoostThread(IN OUT PKTHREAD Thread, IN BOOLEAN Disable)
VOID NTAPI KeRevertToUserAffinityThread(VOID)
BOOLEAN NTAPI KeAlertThread(IN PKTHREAD Thread, IN KPROCESSOR_MODE AlertMode)
KPRIORITY NTAPI KeSetPriorityThread(IN PKTHREAD Thread, IN KPRIORITY Priority)
KAFFINITY NTAPI KeSetAffinityThread(IN PKTHREAD Thread, IN KAFFINITY Affinity)
VOID NTAPI KiSuspendRundown(IN PKAPC Apc)
BOOLEAN NTAPI KeTestAlertThread(IN KPROCESSOR_MODE AlertMode)
ULONG NTAPI KeQueryRuntimeThread(IN PKTHREAD Thread, OUT PULONG UserTime)
VOID NTAPI KeRundownThread(VOID)
VOID NTAPI KeStartThread(IN OUT PKTHREAD Thread)
VOID NTAPI KeReadyThread(IN PKTHREAD Thread)
ULONG NTAPI KeAlertResumeThread(IN PKTHREAD Thread)
VOID NTAPI KeCapturePersistentThreadState(IN PVOID CurrentThread, IN ULONG Setting1, IN ULONG Setting2, IN ULONG Setting3, IN ULONG Setting4, IN ULONG Setting5, IN PVOID ThreadState)
BOOLEAN NTAPI KeReadStateThread(IN PKTHREAD Thread)
VOID NTAPI KeBoostPriorityThread(IN PKTHREAD Thread, IN KPRIORITY Increment)
EX_WORK_QUEUE ExWorkerQueue[MaximumWorkQueue]
VOID NTAPI KiSuspendThread(IN PVOID NormalContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDF_POWER_DEVICE_STATE PreviousState
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
#define MAXIMUM_SUSPEND_COUNT
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
*LockHandle LockHandle _Out_ PKLOCK_QUEUE_HANDLE LockHandle
KSTART_ROUTINE * PKSTART_ROUTINE
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
#define THREAD_WAIT_OBJECTS
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
#define ASSERT_MUTANT(Object)
_In_ ULONG _In_opt_ POBJECT_ATTRIBUTES _In_opt_ HANDLE _Out_opt_ PCLIENT_ID _In_ PKSTART_ROUTINE StartRoutine