typedef struct _ETHREAD { KTHREAD Tcb; LARGE_INTEGER CreateTime; union { LARGE_INTEGER ExitTime; LIST_ENTRY KeyedWaitChain; }; long ExitStatus; union { LIST_ENTRY PostBlockList; struct { void *ForwardLinkShadow; void *StartAddress; }; }; union { TERMINATION_PORT *TerminationPort; ETHREAD *ReaperLink; void *KeyedWaitValue; }; unsigned __int64 ActiveTimerListLock; LIST_ENTRY ActiveTimerListHead; CLIENT_ID Cid; union { KSEMAPHORE KeyedWaitSemaphore; KSEMAPHORE AlpcWaitSemaphore; }; PS_CLIENT_SECURITY_CONTEXT ClientSecurity; LIST_ENTRY IrpList; unsigned __int64 TopLevelIrp; DEVICE_OBJECT *DeviceToVerify; PSP_CPU_QUOTA_APC *CpuQuotaApc; void *Win32StartAddress; void *LegacyPowerObject; LIST_ENTRY ThreadListEntry; EX_RUNDOWN_REF RundownProtect; EX_PUSH_LOCK ThreadLock; unsigned long ReadClusterSize; volatile long MmLockOrdering; union { unsigned long CrossThreadFlags; struct { unsigned long Terminated : 1; unsigned long ThreadInserted : 1; unsigned long HideFromDebugger : 1; unsigned long ActiveImpersonationInfo : 1; unsigned long Reserved : 1; unsigned long HardErrorsAreDisabled : 1; unsigned long BreakOnTermination : 1; unsigned long SkipCreationMsg : 1; unsigned long SkipTerminationMsg : 1; unsigned long CopyTokenOnOpen : 1; unsigned long ThreadIoPriority : 3; unsigned long ThreadPagePriority : 3; unsigned long RundownFail : 1; unsigned long NeedsWorkingSetAging : 1; }; }; union { unsigned long SameThreadPassiveFlags; struct { unsigned long ActiveExWorker : 1; unsigned long ExWorkerCanWaitUser : 1; unsigned long MemoryMaker : 1; unsigned long ClonedThread : 1; unsigned long KeyedEventInUse : 1; unsigned long RateApcState : 2; unsigned long SelfTerminate : 1; }; }; union { unsigned long SameThreadApcFlags; struct { unsigned char Spare : 1; volatile unsigned char StartAddressInvalid : 1; unsigned char EtwPageFaultCalloutActive : 1; unsigned char OwnsProcessWorkingSetExclusive : 1; unsigned char OwnsProcessWorkingSetShared : 1; unsigned char OwnsSystemCacheWorkingSetExclusive : 1; unsigned char OwnsSystemCacheWorkingSetShared : 1; unsigned char OwnsSessionWorkingSetExclusive : 1; unsigned char OwnsSessionWorkingSetShared : 1; unsigned char OwnsProcessAddressSpaceExclusive : 1; unsigned char OwnsProcessAddressSpaceShared : 1; unsigned char SuppressSymbolLoad : 1; unsigned char Prefetching : 1; unsigned char OwnsDynamicMemoryShared : 1; unsigned char OwnsChangeControlAreaExclusive : 1; unsigned char OwnsChangeControlAreaShared : 1; unsigned char OwnsPagedPoolWorkingSetExclusive : 1; unsigned char OwnsPagedPoolWorkingSetShared : 1; unsigned char OwnsSystemPtesWorkingSetExclusive : 1; unsigned char OwnsSystemPtesWorkingSetShared : 1; unsigned char TrimTrigger : 2; unsigned char Spare1 : 2; unsigned char PriorityRegionActive; }; }; unsigned char CacheManagerActive; unsigned char DisablePageFaultClustering; unsigned char ActiveFaultCount; unsigned char LockOrderState; unsigned __int64 AlpcMessageId; union { void *AlpcMessage; unsigned long AlpcReceiveAttributeSet; }; LIST_ENTRY AlpcWaitListEntry; unsigned long CacheManagerCount; unsigned long IoBoostCount; unsigned __int64 IrpListLock; void *ReservedForSynchTracking; SINGLE_LIST_ENTRY CmCallbackListHead; unsigned long KernelStackReference; } ETHREAD, *PETHREAD;