152 PreviousCount =
Thread->SuspendCount;
162 Thread->SuspendSemaphore.Header.SignalState++;
171 return PreviousCount;
197 (AlertMode <= Thread->WaitMode))
238 !(
Thread->PriorityDecrement))
278 PreviousCount =
Thread->SuspendCount +
Thread->FreezeCount;
291 Thread->SuspendSemaphore.Header.SignalState++;
301 return PreviousCount;
330 ListHead = &
Process->ThreadListHead;
331 NextEntry = ListHead->
Flink;
341 if ((Current != CurrentThread) && (Current->
ApcQueueable))
354 if (!Current->SuspendApc.Inserted)
357 Current->SuspendApc.Inserted =
TRUE;
378 NextEntry = NextEntry->
Flink;
379 }
while (NextEntry != ListHead);
399 PreviousCount =
Thread->SuspendCount;
414 Thread->SuspendSemaphore.Header.SignalState++;
425 return PreviousCount;
445 ListHead = &
Thread->MutantListHead;
446 NextEntry = ListHead->
Flink;
447 while (NextEntry != ListHead)
480 NextEntry =
Thread->MutantListHead.Flink;
497 UCHAR IdealProcessor = 0;
528 Set = ~NodePrcb->MultiThreadProcessorSet;
536 Process->ThreadSeed = IdealProcessor;
543 Thread->IdealProcessor = IdealProcessor;
544 Thread->UserIdealProcessor = IdealProcessor;
612 PreviousCount =
Thread->SuspendCount;
629 if (!(PreviousCount) && !(
Thread->FreezeCount))
632 if (!
Thread->SuspendApc.Inserted)
644 Thread->SuspendSemaphore.Header.SignalState--;
655 return PreviousCount;
673 ListHead = &
Process->ThreadListHead;
674 NextEntry = ListHead->
Flink;
709 NextEntry = NextEntry->
Flink;
710 }
while (NextEntry != ListHead);
734 OldState =
Thread->Alerted[AlertMode];
773 Thread->Header.ThreadControlFlags = 0;
775 Thread->Header.SignalState = 0;
790 Thread->IdealProcessor = 1;
831 TimerWaitBlock->NextWaitBlock =
NULL;
849 AllocatedStack =
TRUE;
853 Thread->InitialStack = KernelStack;
854 Thread->StackBase = KernelStack;
945#undef KeGetCurrentThread
957#undef KeGetPreviousMode
980 return Thread->KernelTime;
1069 CCHAR OldIdealProcessor;
1077 OldIdealProcessor =
Thread->UserIdealProcessor;
1089 if (!
Thread->SystemAffinityActive)
1099 return OldIdealProcessor;
1177 OldBasePriority =
Thread->BasePriority;
1178 OldIncrement = OldBasePriority -
Process->BasePriority;
1233 Priority += (BasePriority - OldBasePriority);
1253 Thread->PriorityDecrement = 0;
1268 return OldIncrement;
1317 OldPriority =
Thread->Priority;
1318 Thread->PriorityDecrement = 0;
1379 *ThreadAddr =
Entry;
1388 }
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
NTSYSAPI void WINAPI DbgBreakPoint(void)
#define EXCEPTION_EXECUTE_HANDLER
#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()
FORCEINLINE KAFFINITY AFFINITY_MASK(ULONG Index)
FORCEINLINE BOOLEAN BitScanReverseAffinity(PULONG Index, KAFFINITY Mask)
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)
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
ULONG SystemAffinityActive
GROUP_AFFINITY UserAffinity
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
UCHAR NTAPI KeFindNextRightSetAffinity(IN UCHAR Number, IN KAFFINITY Set)
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)
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)
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