3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the Process Manager
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
30 #ifndef NTOS_MODE_USER
39 #ifndef NTOS_MODE_USER
42 // Kernel Exported Object Types
44 extern POBJECT_TYPE NTSYSAPI PsJobType
;
46 #endif // !NTOS_MODE_USER
49 // KUSER_SHARED_DATA location in User Mode
51 #define USER_SHARED_DATA (0x7FFE0000)
56 #define FLG_STOP_ON_EXCEPTION 0x00000001
57 #define FLG_SHOW_LDR_SNAPS 0x00000002
58 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
59 #define FLG_STOP_ON_HUNG_GUI 0x00000008
60 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
61 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
62 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
63 #define FLG_HEAP_VALIDATE_ALL 0x00000080
64 #define FLG_APPLICATION_VERIFIER 0x00000100
65 #define FLG_POOL_ENABLE_TAGGING 0x00000400
66 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
67 #define FLG_USER_STACK_TRACE_DB 0x00001000
68 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
69 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
70 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
71 #define FLG_DISABLE_STACK_EXTENSION 0x00010000
72 #define FLG_ENABLE_CSRDEBUG 0x00020000
73 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
74 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
75 #if (NTDDI_VERSION < NTDDI_WINXP)
76 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
78 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000
80 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
81 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
82 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
83 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
84 #define FLG_HEAP_PAGE_ALLOCS 0x02000000
85 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
86 #define FLG_VALID_BITS 0x07FFFFFF
89 // Flags for NtCreateProcessEx
91 #define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001
92 #define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002
93 #define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004
94 #define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008
95 #define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010
96 #define PROCESS_CREATE_FLAGS_ALL_LARGE_PAGE_FLAGS PROCESS_CREATE_FLAGS_LARGE_PAGES
97 #define PROCESS_CREATE_FLAGS_LEGAL_MASK (PROCESS_CREATE_FLAGS_BREAKAWAY | \
98 PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT | \
99 PROCESS_CREATE_FLAGS_INHERIT_HANDLES | \
100 PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE | \
101 PROCESS_CREATE_FLAGS_ALL_LARGE_PAGE_FLAGS)
104 // Process priority classes
106 #define PROCESS_PRIORITY_CLASS_INVALID 0
107 #define PROCESS_PRIORITY_CLASS_IDLE 1
108 #define PROCESS_PRIORITY_CLASS_NORMAL 2
109 #define PROCESS_PRIORITY_CLASS_HIGH 3
110 #define PROCESS_PRIORITY_CLASS_REALTIME 4
111 #define PROCESS_PRIORITY_CLASS_BELOW_NORMAL 5
112 #define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL 6
115 // Process base priorities
117 #define PROCESS_PRIORITY_IDLE 3
118 #define PROCESS_PRIORITY_NORMAL 8
119 #define PROCESS_PRIORITY_NORMAL_FOREGROUND 9
122 // Process memory priorities
124 #define MEMORY_PRIORITY_BACKGROUND 0
125 #define MEMORY_PRIORITY_UNKNOWN 1
126 #define MEMORY_PRIORITY_FOREGROUND 2
129 // Process Priority Separation Values (OR)
131 #define PSP_DEFAULT_QUANTUMS 0x00
132 #define PSP_VARIABLE_QUANTUMS 0x04
133 #define PSP_FIXED_QUANTUMS 0x08
134 #define PSP_LONG_QUANTUMS 0x10
135 #define PSP_SHORT_QUANTUMS 0x20
137 #ifndef NTOS_MODE_USER
139 // Thread Access Types
141 #define THREAD_QUERY_INFORMATION 0x0040
142 #define THREAD_SET_THREAD_TOKEN 0x0080
143 #define THREAD_IMPERSONATE 0x0100
144 #define THREAD_DIRECT_IMPERSONATION 0x0200
147 // Process Access Types
149 #define PROCESS_TERMINATE 0x0001
150 #define PROCESS_CREATE_THREAD 0x0002
151 #define PROCESS_SET_SESSIONID 0x0004
152 #define PROCESS_VM_OPERATION 0x0008
153 #define PROCESS_VM_READ 0x0010
154 #define PROCESS_VM_WRITE 0x0020
155 #define PROCESS_CREATE_PROCESS 0x0080
156 #define PROCESS_SET_QUOTA 0x0100
157 #define PROCESS_SET_INFORMATION 0x0200
158 #define PROCESS_QUERY_INFORMATION 0x0400
159 #define PROCESS_SUSPEND_RESUME 0x0800
160 #define PROCESS_QUERY_LIMITED_INFORMATION 0x1000
161 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
162 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
166 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
172 // Thread Base Priorities
174 #define THREAD_BASE_PRIORITY_LOWRT 15
175 #define THREAD_BASE_PRIORITY_MAX 2
176 #define THREAD_BASE_PRIORITY_MIN -2
177 #define THREAD_BASE_PRIORITY_IDLE -15
182 #define TLS_MINIMUM_AVAILABLE 64
185 // TEB Active Frame Flags
187 #define TEB_ACTIVE_FRAME_CONTEXT_FLAG_EXTENDED 0x1
192 #define JOB_OBJECT_ASSIGN_PROCESS 0x1
193 #define JOB_OBJECT_SET_ATTRIBUTES 0x2
194 #define JOB_OBJECT_QUERY 0x4
195 #define JOB_OBJECT_TERMINATE 0x8
196 #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES 0x10
197 #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
204 #define JOB_OBJECT_LIMIT_WORKINGSET 0x1
205 #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x2
206 #define JOB_OBJECT_LIMIT_JOB_TIME 0x4
207 #define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x8
208 #define JOB_OBJECT_LIMIT_AFFINITY 0x10
209 #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x20
210 #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x40
211 #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x80
212 #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x100
213 #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x200
214 #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x400
215 #define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x800
216 #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x1000
217 #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x2000
220 // Cross Thread Flags
222 #define CT_TERMINATED_BIT 0x1
223 #define CT_DEAD_THREAD_BIT 0x2
224 #define CT_HIDE_FROM_DEBUGGER_BIT 0x4
225 #define CT_ACTIVE_IMPERSONATION_INFO_BIT 0x8
226 #define CT_SYSTEM_THREAD_BIT 0x10
227 #define CT_HARD_ERRORS_ARE_DISABLED_BIT 0x20
228 #define CT_BREAK_ON_TERMINATION_BIT 0x40
229 #define CT_SKIP_CREATION_MSG_BIT 0x80
230 #define CT_SKIP_TERMINATION_MSG_BIT 0x100
233 // Same Thread Passive Flags
235 #define STP_ACTIVE_EX_WORKER_BIT 0x1
236 #define STP_EX_WORKER_CAN_WAIT_USER_BIT 0x2
237 #define STP_MEMORY_MAKER_BIT 0x4
238 #define STP_KEYED_EVENT_IN_USE_BIT 0x8
241 // Same Thread APC Flags
243 #define STA_LPC_RECEIVED_MSG_ID_VALID_BIT 0x1
244 #define STA_LPC_EXIT_THREAD_CALLED_BIT 0x2
245 #define STA_ADDRESS_SPACE_OWNER_BIT 0x4
246 #define STA_OWNS_WORKING_SET_BITS 0x1F8
249 // Kernel Process flags (maybe in ketypes.h?)
251 #define KPSF_AUTO_ALIGNMENT_BIT 0
252 #define KPSF_DISABLE_BOOST_BIT 1
257 #define PSF_CREATE_REPORTED_BIT 0x1
258 #define PSF_NO_DEBUG_INHERIT_BIT 0x2
259 #define PSF_PROCESS_EXITING_BIT 0x4
260 #define PSF_PROCESS_DELETE_BIT 0x8
261 #define PSF_WOW64_SPLIT_PAGES_BIT 0x10
262 #define PSF_VM_DELETED_BIT 0x20
263 #define PSF_OUTSWAP_ENABLED_BIT 0x40
264 #define PSF_OUTSWAPPED_BIT 0x80
265 #define PSF_FORK_FAILED_BIT 0x100
266 #define PSF_WOW64_VA_SPACE_4GB_BIT 0x200
267 #define PSF_ADDRESS_SPACE_INITIALIZED_BIT 0x400
268 #define PSF_SET_TIMER_RESOLUTION_BIT 0x1000
269 #define PSF_BREAK_ON_TERMINATION_BIT 0x2000
270 #define PSF_SESSION_CREATION_UNDERWAY_BIT 0x4000
271 #define PSF_WRITE_WATCH_BIT 0x8000
272 #define PSF_PROCESS_IN_SESSION_BIT 0x10000
273 #define PSF_OVERRIDE_ADDRESS_SPACE_BIT 0x20000
274 #define PSF_HAS_ADDRESS_SPACE_BIT 0x40000
275 #define PSF_LAUNCH_PREFETCHED_BIT 0x80000
276 #define PSF_INJECT_INPAGE_ERRORS_BIT 0x100000
277 #define PSF_VM_TOP_DOWN_BIT 0x200000
278 #define PSF_IMAGE_NOTIFY_DONE_BIT 0x400000
279 #define PSF_PDE_UPDATE_NEEDED_BIT 0x800000
280 #define PSF_VDM_ALLOWED_BIT 0x1000000
281 #define PSF_SWAP_ALLOWED_BIT 0x2000000
282 #define PSF_CREATE_FAILED_BIT 0x4000000
283 #define PSF_DEFAULT_IO_PRIORITY_BIT 0x8000000
286 // Vista Process Flags
288 #define PSF2_PROTECTED_BIT 0x800
294 #define TLS_EXPANSION_SLOTS 1024
296 #ifdef NTOS_MODE_USER
298 // Thread Native Base Priorities
300 #define LOW_PRIORITY 0
301 #define LOW_REALTIME_PRIORITY 16
302 #define HIGH_PRIORITY 31
303 #define MAXIMUM_PRIORITY 32
306 // Current Process/Thread built-in 'special' handles
308 #define NtCurrentProcess() ((HANDLE)(LONG_PTR)-1)
309 #define ZwCurrentProcess() NtCurrentProcess()
310 #define NtCurrentThread() ((HANDLE)(LONG_PTR)-2)
311 #define ZwCurrentThread() NtCurrentThread()
314 // Process/Thread/Job Information Classes for NtQueryInformationProcess/Thread/Job
316 typedef enum _PROCESSINFOCLASS
318 ProcessBasicInformation
,
324 ProcessRaisePriority
,
326 ProcessExceptionPort
,
328 ProcessLdtInformation
,
330 ProcessDefaultHardErrorMode
,
331 ProcessIoPortHandlers
,
332 ProcessPooledUsageAndLimits
,
333 ProcessWorkingSetWatch
,
335 ProcessEnableAlignmentFaultFixup
,
336 ProcessPriorityClass
,
337 ProcessWx86Information
,
340 ProcessPriorityBoost
,
342 ProcessSessionInformation
,
343 ProcessForegroundInformation
,
344 ProcessWow64Information
,
345 ProcessImageFileName
,
346 ProcessLUIDDeviceMapsEnabled
,
347 ProcessBreakOnTermination
,
348 ProcessDebugObjectHandle
,
350 ProcessHandleTracing
,
353 ProcessTlsInformation
,
355 ProcessImageInformation
,
358 ProcessInstrumentationCallback
,
359 ProcessThreadStackAllocation
,
360 ProcessWorkingSetWatchEx
,
361 ProcessImageFileNameWin32
,
362 ProcessImageFileMapping
,
363 ProcessAffinityUpdateMode
,
364 ProcessMemoryAllocationMode
,
368 typedef enum _THREADINFOCLASS
370 ThreadBasicInformation
,
375 ThreadImpersonationToken
,
376 ThreadDescriptorTableEntry
,
377 ThreadEnableAlignmentFaultFixup
,
378 ThreadEventPair_Reusable
,
379 ThreadQuerySetWin32StartAddress
,
381 ThreadPerformanceCount
,
383 ThreadIdealProcessor
,
385 ThreadSetTlsArrayAddress
,
387 ThreadHideFromDebugger
,
388 ThreadBreakOnTermination
,
389 ThreadSwitchLegacyState
,
391 ThreadLastSystemCall
,
395 ThreadActualBasePriority
,
396 ThreadTebInformation
,
403 typedef enum _PSPROCESSPRIORITYMODE
405 PsProcessPriorityForeground
,
406 PsProcessPriorityBackground
,
407 PsProcessPrioritySpinning
408 } PSPROCESSPRIORITYMODE
;
410 typedef enum _JOBOBJECTINFOCLASS
412 JobObjectBasicAccountingInformation
= 1,
413 JobObjectBasicLimitInformation
,
414 JobObjectBasicProcessIdList
,
415 JobObjectBasicUIRestrictions
,
416 JobObjectSecurityLimitInformation
,
417 JobObjectEndOfJobTimeInformation
,
418 JobObjectAssociateCompletionPortInformation
,
419 JobObjectBasicAndIoAccountingInformation
,
420 JobObjectExtendedLimitInformation
,
421 JobObjectJobSetInformation
,
422 MaxJobObjectInfoClass
423 } JOBOBJECTINFOCLASS
;
426 // Power Event Events for Win32K Power Event Callback
428 typedef enum _PSPOWEREVENTTYPE
432 PsW32PowerPolicyChanged
= 2,
433 PsW32SystemPowerState
= 3,
435 PsW32DisplayState
= 5,
436 PsW32CapabilitiesChanged
= 6,
437 PsW32SetStateFailed
= 7,
440 PsW32GdiPrepareResumeUI
= 10,
441 PsW32GdiOffRequest
= 11,
442 PsW32MonitorOff
= 12,
446 // Power State Tasks for Win32K Power State Callback
448 typedef enum _POWERSTATETASK
450 PowerState_BlockSessionSwitch
= 0,
452 PowerState_QueryApps
= 2,
453 PowerState_QueryServices
= 3,
454 PowerState_QueryAppsFailed
= 4,
455 PowerState_QueryServicesFailed
= 5,
456 PowerState_SuspendApps
= 6,
457 PowerState_SuspendServices
= 7,
458 PowerState_ShowUI
= 8,
459 PowerState_NotifyWL
= 9,
460 PowerState_ResumeApps
= 10,
461 PowerState_ResumeServices
= 11,
462 PowerState_UnBlockSessionSwitch
= 12,
464 PowerState_BlockInput
= 14,
465 PowerState_UnblockInput
= 15,
469 // Win32K Job Callback Types
471 typedef enum _PSW32JOBCALLOUTTYPE
473 PsW32JobCalloutSetInformation
= 0,
474 PsW32JobCalloutAddProcess
= 1,
475 PsW32JobCalloutTerminate
= 2,
476 } PSW32JOBCALLOUTTYPE
;
479 // Win32K Thread Callback Types
481 typedef enum _PSW32THREADCALLOUTTYPE
483 PsW32ThreadCalloutInitialize
,
484 PsW32ThreadCalloutExit
,
485 } PSW32THREADCALLOUTTYPE
;
488 // Declare empty structure definitions so that they may be referenced by
489 // routines before they are defined
494 struct _WIN32_POWEREVENT_PARAMETERS
;
495 struct _WIN32_POWERSTATE_PARAMETERS
;
496 struct _WIN32_JOBCALLOUT_PARAMETERS
;
497 struct _WIN32_OPENMETHOD_PARAMETERS
;
498 struct _WIN32_OKAYTOCLOSEMETHOD_PARAMETERS
;
499 struct _WIN32_CLOSEMETHOD_PARAMETERS
;
500 struct _WIN32_DELETEMETHOD_PARAMETERS
;
501 struct _WIN32_PARSEMETHOD_PARAMETERS
;
504 // Win32K Process and Thread Callbacks
508 (NTAPI
*PKWIN32_PROCESS_CALLOUT
)(
509 _In_
struct _EPROCESS
*Process
,
515 (NTAPI
*PKWIN32_THREAD_CALLOUT
)(
516 _In_
struct _ETHREAD
*Thread
,
517 _In_ PSW32THREADCALLOUTTYPE Type
522 (NTAPI
*PKWIN32_GLOBALATOMTABLE_CALLOUT
)(
528 (NTAPI
*PKWIN32_POWEREVENT_CALLOUT
)(
529 _In_
struct _WIN32_POWEREVENT_PARAMETERS
*Parameters
534 (NTAPI
*PKWIN32_POWERSTATE_CALLOUT
)(
535 _In_
struct _WIN32_POWERSTATE_PARAMETERS
*Parameters
540 (NTAPI
*PKWIN32_JOB_CALLOUT
)(
541 _In_
struct _WIN32_JOBCALLOUT_PARAMETERS
*Parameters
546 (NTAPI
*PGDI_BATCHFLUSH_ROUTINE
)(
552 (NTAPI
*PKWIN32_OPENMETHOD_CALLOUT
)(
553 _In_
struct _WIN32_OPENMETHOD_PARAMETERS
*Parameters
558 (NTAPI
*PKWIN32_OKTOCLOSEMETHOD_CALLOUT
)(
559 _In_
struct _WIN32_OKAYTOCLOSEMETHOD_PARAMETERS
*Parameters
564 (NTAPI
*PKWIN32_CLOSEMETHOD_CALLOUT
)(
565 _In_
struct _WIN32_CLOSEMETHOD_PARAMETERS
*Parameters
570 (NTAPI
*PKWIN32_DELETEMETHOD_CALLOUT
)(
571 _In_
struct _WIN32_DELETEMETHOD_PARAMETERS
*Parameters
576 (NTAPI
*PKWIN32_PARSEMETHOD_CALLOUT
)(
577 _In_
struct _WIN32_PARSEMETHOD_PARAMETERS
*Parameters
582 (NTAPI
*PKWIN32_SESSION_CALLOUT
)(
586 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
589 (NTAPI
*PKWIN32_WIN32DATACOLLECTION_CALLOUT
)(
590 _In_
struct _EPROCESS
*Process
,
601 (NTAPI
*PLEGO_NOTIFY_ROUTINE
)(
608 (NTAPI
*PPOST_PROCESS_INIT_ROUTINE
)(
613 // Descriptor Table Entry Definition
616 #define _DESCRIPTOR_TABLE_ENTRY_DEFINED
617 typedef struct _DESCRIPTOR_TABLE_ENTRY
620 LDT_ENTRY Descriptor
;
621 } DESCRIPTOR_TABLE_ENTRY
, *PDESCRIPTOR_TABLE_ENTRY
;
628 (NTAPI
*PPEBLOCKROUTINE
)(
633 // PEB Free Block Descriptor
635 typedef struct _PEB_FREE_BLOCK
637 struct _PEB_FREE_BLOCK
* Next
;
639 } PEB_FREE_BLOCK
, *PPEB_FREE_BLOCK
;
644 typedef struct _INITIAL_PEB
646 BOOLEAN InheritedAddressSpace
;
647 BOOLEAN ReadImageFileExecOptions
;
648 BOOLEAN BeingDebugged
;
652 #if (NTDDI_VERSION >= NTDDI_WS03)
655 BOOLEAN ImageUsesLargePages
:1;
656 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
657 BOOLEAN IsProtectedProcess
:1;
658 BOOLEAN IsLegacyProcess
:1;
669 } INITIAL_PEB
, *PINITIAL_PEB
;
674 typedef struct _INITIAL_TEB
676 PVOID PreviousStackBase
;
677 PVOID PreviousStackLimit
;
680 PVOID AllocatedStackBase
;
681 } INITIAL_TEB
, *PINITIAL_TEB
;
684 // TEB Active Frame Structures
686 typedef struct _TEB_ACTIVE_FRAME_CONTEXT
690 } TEB_ACTIVE_FRAME_CONTEXT
, *PTEB_ACTIVE_FRAME_CONTEXT
;
691 typedef const struct _TEB_ACTIVE_FRAME_CONTEXT
*PCTEB_ACTIVE_FRAME_CONTEXT
;
693 typedef struct _TEB_ACTIVE_FRAME_CONTEXT_EX
695 TEB_ACTIVE_FRAME_CONTEXT BasicContext
;
696 PCSTR SourceLocation
;
697 } TEB_ACTIVE_FRAME_CONTEXT_EX
, *PTEB_ACTIVE_FRAME_CONTEXT_EX
;
698 typedef const struct _TEB_ACTIVE_FRAME_CONTEXT_EX
*PCTEB_ACTIVE_FRAME_CONTEXT_EX
;
700 typedef struct _TEB_ACTIVE_FRAME
703 struct _TEB_ACTIVE_FRAME
*Previous
;
704 PCTEB_ACTIVE_FRAME_CONTEXT Context
;
705 } TEB_ACTIVE_FRAME
, *PTEB_ACTIVE_FRAME
;
706 typedef const struct _TEB_ACTIVE_FRAME
*PCTEB_ACTIVE_FRAME
;
708 typedef struct _TEB_ACTIVE_FRAME_EX
710 TEB_ACTIVE_FRAME BasicFrame
;
711 PVOID ExtensionIdentifier
;
712 } TEB_ACTIVE_FRAME_EX
, *PTEB_ACTIVE_FRAME_EX
;
713 typedef const struct _TEB_ACTIVE_FRAME_EX
*PCTEB_ACTIVE_FRAME_EX
;
715 typedef struct _CLIENT_ID32
719 } CLIENT_ID32
, *PCLIENT_ID32
;
721 typedef struct _CLIENT_ID64
723 ULONG64 UniqueProcess
;
724 ULONG64 UniqueThread
;
725 } CLIENT_ID64
, *PCLIENT_ID64
;
727 #if (NTDDI_VERSION < NTDDI_WS03)
728 typedef struct _Wx86ThreadState
731 PVOID DeallocationCpu
;
732 BOOLEAN UseKnownWx86Dll
;
734 } Wx86ThreadState
, *PWx86ThreadState
;
738 // PEB.AppCompatFlags
739 // Tag FLAG_MASK_KERNEL
741 typedef enum _APPCOMPAT_FLAGS
743 GetShortPathNameNT4
= 0x1,
744 GetDiskFreeSpace2GB
= 0x8,
745 FTMFromCurrentAPI
= 0x20,
746 DisallowCOMBindingNotifications
= 0x40,
747 Ole32ValidatePointers
= 0x80,
748 DisableCicero
= 0x100,
749 Ole32EnableAsyncDocFile
= 0x200,
750 EnableLegacyExceptionHandlinginOLE
= 0x400,
751 DisableAdvanceRPCClientHardening
= 0x800,
752 DisableMaybeNULLSizeisConsistencycheck
= 0x1000,
753 DisableAdvancedRPCrangeCheck
= 0x4000,
754 EnableLegacyExceptionHandlingInRPC
= 0x8000,
755 EnableLegacyNTFSFlagsForDocfileOpens
= 0x10000,
756 DisableNDRIIDConsistencyCheck
= 0x20000,
757 UserDisableForwarderPatch
= 0x40000,
758 DisableNewWMPAINTDispatchInOLE
= 0x100000,
759 DoNotAddToCache
= 0x80000000,
764 // PEB.AppCompatFlagsUser.LowPart
765 // Tag FLAG_MASK_USER
767 typedef enum _APPCOMPAT_USERFLAGS
769 DisableAnimation
= 0x1,
770 DisableKeyboardCues
= 0x2,
771 No50StylebitsInSetWindowLong
= 0x4,
772 DisableDrawPatternRect
= 0x8,
773 MSShellDialog
= 0x10,
774 NoDDETerminateDuringDestroy
= 0x20,
775 GiveupForeground
= 0x40,
776 AlwaysActiveMenus
= 0x80,
777 NoMouseHideInEdit
= 0x100,
778 NoGdiBatching
= 0x200,
779 FontSubstitution
= 0x400,
780 No50StylebitsInCreateWindow
= 0x800,
781 NoCustomPaperSizes
= 0x1000,
782 AllTheDdeHacks
= 0x2000,
783 UseDefaultCharset
= 0x4000,
784 NoCharDeadKey
= 0x8000,
785 NoTryExceptForWindowProc
= 0x10000,
786 NoInitInsertReplaceFlags
= 0x20000,
789 NoDdeAsyncReg
= 0x100000,
790 StrictLLHook
= 0x200000,
792 NoTimerCallbackProtection
= 0x1000000,
793 HighDpiAware
= 0x2000000,
794 OpenGLEmfAware
= 0x4000000,
795 EnableTransparantBltMirror
= 0x8000000,
796 NoPaddedBorder
= 0x10000000,
797 ForceLegacyResizeCM
= 0x20000000,
798 HardwareAudioMixer
= 0x40000000,
799 DisableSWCursorOnMoveSize
= 0x80000000,
801 DisableWindowArrangement
= 0x100000000,
802 ReorderWaveForCommunications
= 0x200000000,
803 NoGdiHwAcceleration
= 0x400000000,
805 } APPCOMPAT_USERFLAGS
;
808 // PEB.AppCompatFlagsUser.HighPart
809 // Tag FLAG_MASK_USER
811 typedef enum _APPCOMPAT_USERFLAGS_HIGHPART
813 DisableWindowArrangement
= 0x1,
814 ReorderWaveForCommunications
= 0x2,
815 NoGdiHwAcceleration
= 0x4,
816 } APPCOMPAT_USERFLAGS_HIGHPART
;
819 // Process Environment Block (PEB)
820 // Thread Environment Block (TEB)
826 // Explicit 32 bit PEB/TEB
828 #define EXPLICIT_32BIT
830 #undef EXPLICIT_32BIT
833 // Explicit 64 bit PEB/TEB
835 #define EXPLICIT_64BIT
837 #undef EXPLICIT_64BIT
840 #ifdef NTOS_MODE_USER
843 // Process Information Structures for NtQueryProcessInformation
845 typedef struct _PROCESS_BASIC_INFORMATION
849 ULONG_PTR AffinityMask
;
850 KPRIORITY BasePriority
;
851 ULONG_PTR UniqueProcessId
;
852 ULONG_PTR InheritedFromUniqueProcessId
;
853 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
855 typedef struct _PROCESS_ACCESS_TOKEN
859 } PROCESS_ACCESS_TOKEN
, *PPROCESS_ACCESS_TOKEN
;
861 typedef struct _PROCESS_DEVICEMAP_INFORMATION
867 HANDLE DirectoryHandle
;
875 } PROCESS_DEVICEMAP_INFORMATION
, *PPROCESS_DEVICEMAP_INFORMATION
;
877 typedef struct _KERNEL_USER_TIMES
879 LARGE_INTEGER CreateTime
;
880 LARGE_INTEGER ExitTime
;
881 LARGE_INTEGER KernelTime
;
882 LARGE_INTEGER UserTime
;
883 } KERNEL_USER_TIMES
, *PKERNEL_USER_TIMES
;
885 typedef struct _POOLED_USAGE_AND_LIMITS
887 SIZE_T PeakPagedPoolUsage
;
888 SIZE_T PagedPoolUsage
;
889 SIZE_T PagedPoolLimit
;
890 SIZE_T PeakNonPagedPoolUsage
;
891 SIZE_T NonPagedPoolUsage
;
892 SIZE_T NonPagedPoolLimit
;
893 SIZE_T PeakPagefileUsage
;
894 SIZE_T PagefileUsage
;
895 SIZE_T PagefileLimit
;
896 } POOLED_USAGE_AND_LIMITS
, *PPOOLED_USAGE_AND_LIMITS
;
898 typedef struct _PROCESS_SESSION_INFORMATION
901 } PROCESS_SESSION_INFORMATION
, *PPROCESS_SESSION_INFORMATION
;
905 typedef struct DECLSPEC_ALIGN(4) _PROCESS_PRIORITY_CLASS
909 } PROCESS_PRIORITY_CLASS
, *PPROCESS_PRIORITY_CLASS
;
911 typedef struct _PROCESS_FOREGROUND_BACKGROUND
914 } PROCESS_FOREGROUND_BACKGROUND
, *PPROCESS_FOREGROUND_BACKGROUND
;
917 // Apphelp SHIM Cache
919 typedef enum _APPHELPCACHESERVICECLASS
921 ApphelpCacheServiceLookup
= 0,
922 ApphelpCacheServiceRemove
= 1,
923 ApphelpCacheServiceUpdate
= 2,
924 ApphelpCacheServiceFlush
= 3,
925 ApphelpCacheServiceDump
= 4,
927 ApphelpDBGReadRegistry
= 0x100,
928 ApphelpDBGWriteRegistry
= 0x101,
929 } APPHELPCACHESERVICECLASS
;
932 typedef struct _APPHELP_CACHE_SERVICE_LOOKUP
934 UNICODE_STRING ImageName
;
936 } APPHELP_CACHE_SERVICE_LOOKUP
, *PAPPHELP_CACHE_SERVICE_LOOKUP
;
940 // Thread Information Structures for NtQueryProcessInformation
942 typedef struct _THREAD_BASIC_INFORMATION
945 PVOID TebBaseAddress
;
947 KAFFINITY AffinityMask
;
949 KPRIORITY BasePriority
;
950 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
952 #ifndef NTOS_MODE_USER
957 typedef struct _JOB_SET_ARRAY
962 } JOB_SET_ARRAY
, *PJOB_SET_ARRAY
;
965 // EPROCESS Quota Structures
967 typedef struct _EPROCESS_QUOTA_ENTRY
973 } EPROCESS_QUOTA_ENTRY
, *PEPROCESS_QUOTA_ENTRY
;
975 typedef struct _EPROCESS_QUOTA_BLOCK
977 EPROCESS_QUOTA_ENTRY QuotaEntry
[3];
978 LIST_ENTRY QuotaList
;
979 ULONG ReferenceCount
;
981 } EPROCESS_QUOTA_BLOCK
, *PEPROCESS_QUOTA_BLOCK
;
984 // Process Pagefault History
986 typedef struct _PAGEFAULT_HISTORY
992 PROCESS_WS_WATCH_INFORMATION WatchInfo
[1];
993 } PAGEFAULT_HISTORY
, *PPAGEFAULT_HISTORY
;
996 // Process Impersonation Information
998 typedef struct _PS_IMPERSONATION_INFORMATION
1000 PACCESS_TOKEN Token
;
1002 BOOLEAN EffectiveOnly
;
1003 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
1004 } PS_IMPERSONATION_INFORMATION
, *PPS_IMPERSONATION_INFORMATION
;
1007 // Process Termination Port
1009 typedef struct _TERMINATION_PORT
1011 struct _TERMINATION_PORT
*Next
;
1013 } TERMINATION_PORT
, *PTERMINATION_PORT
;
1016 // Per-Process APC Rate Limiting
1018 typedef struct _PSP_RATE_APC
1022 SINGLE_LIST_ENTRY NextApc
;
1023 ULONGLONG ExcessCycles
;
1025 ULONGLONG TargetGEneration
;
1027 } PSP_RATE_APC
, *PPSP_RATE_APC
;
1030 // Executive Thread (ETHREAD)
1032 typedef struct _ETHREAD
1035 LARGE_INTEGER CreateTime
;
1038 LARGE_INTEGER ExitTime
;
1039 LIST_ENTRY LpcReplyChain
;
1040 LIST_ENTRY KeyedWaitChain
;
1044 NTSTATUS ExitStatus
;
1047 LIST_ENTRY PostBlockList
;
1050 struct _TERMINATION_PORT
*TerminationPort
;
1051 struct _ETHREAD
*ReaperLink
;
1052 PVOID KeyedWaitValue
;
1053 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1054 PVOID Win32StartParameter
;
1057 KSPIN_LOCK ActiveTimerListLock
;
1058 LIST_ENTRY ActiveTimerListHead
;
1060 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1061 KSEMAPHORE KeyedWaitSemaphore
;
1065 KSEMAPHORE LpcReplySemaphore
;
1066 KSEMAPHORE KeyedWaitSemaphore
;
1070 PVOID LpcReplyMessage
;
1071 PVOID LpcWaitingOnPort
;
1074 PPS_IMPERSONATION_INFORMATION ImpersonationInfo
;
1076 ULONG_PTR TopLevelIrp
;
1077 PDEVICE_OBJECT DeviceToVerify
;
1078 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1079 PPSP_RATE_APC RateControlApc
;
1081 struct _EPROCESS
*ThreadsProcess
;
1083 PVOID Win32StartAddress
;
1086 PKSTART_ROUTINE StartAddress
;
1087 ULONG LpcReceivedMessageId
;
1089 LIST_ENTRY ThreadListEntry
;
1090 EX_RUNDOWN_REF RundownProtect
;
1091 EX_PUSH_LOCK ThreadLock
;
1092 #if (NTDDI_VERSION < NTDDI_LONGHORN)
1093 ULONG LpcReplyMessageId
;
1095 ULONG ReadClusterSize
;
1096 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1099 ACCESS_MASK GrantedAccess
;
1106 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1107 ULONG ThreadInserted
:1;
1111 ULONG HideFromDebugger
:1;
1112 ULONG ActiveImpersonationInfo
:1;
1113 ULONG SystemThread
:1;
1114 ULONG HardErrorsAreDisabled
:1;
1115 ULONG BreakOnTermination
:1;
1116 ULONG SkipCreationMsg
:1;
1117 ULONG SkipTerminationMsg
:1;
1118 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1119 ULONG CreateMsgSent
:1;
1120 ULONG ThreadIoPriority
:3;
1121 ULONG ThreadPagePriority
:3;
1122 ULONG PendingRatecontrol
:1;
1125 ULONG CrossThreadFlags
;
1131 ULONG ActiveExWorker
:1;
1132 ULONG ExWorkerCanWaitUser
:1;
1133 ULONG MemoryMaker
:1;
1134 ULONG KeyedEventInUse
:1;
1135 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1136 ULONG RateApcState
:2;
1139 ULONG SameThreadPassiveFlags
;
1145 ULONG LpcReceivedMsgIdValid
:1;
1146 ULONG LpcExitThreadCalled
:1;
1147 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1150 ULONG AddressSpaceOwner
:1;
1152 ULONG OwnsProcessWorkingSetExclusive
:1;
1153 ULONG OwnsProcessWorkingSetShared
:1;
1154 ULONG OwnsSystemWorkingSetExclusive
:1;
1155 ULONG OwnsSystemWorkingSetShared
:1;
1156 ULONG OwnsSessionWorkingSetExclusive
:1;
1157 ULONG OwnsSessionWorkingSetShared
:1;
1158 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1159 ULONG SuppressSymbolLoad
:1;
1161 ULONG PriorityRegionActive
:4;
1166 ULONG SameThreadApcFlags
;
1168 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1169 UCHAR CacheManagerActive
;
1171 UCHAR ForwardClusterOnly
;
1173 UCHAR DisablePageFaultClustering
;
1174 UCHAR ActiveFaultCount
;
1175 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1176 ULONG AlpcMessageId
;
1180 ULONG AlpcReceiveAttributeSet
;
1182 LIST_ENTRY AlpcWaitListEntry
;
1183 KSEMAPHORE AlpcWaitSemaphore
;
1184 ULONG CacheManagerCount
;
1189 // Executive Process (EPROCESS)
1191 typedef struct _EPROCESS
1194 EX_PUSH_LOCK ProcessLock
;
1195 LARGE_INTEGER CreateTime
;
1196 LARGE_INTEGER ExitTime
;
1197 EX_RUNDOWN_REF RundownProtect
;
1198 HANDLE UniqueProcessId
;
1199 LIST_ENTRY ActiveProcessLinks
;
1200 SIZE_T QuotaUsage
[3]; /* 0=PagedPool, 1=NonPagedPool, 2=Pagefile */
1201 SIZE_T QuotaPeak
[3]; /* ditto */
1202 SIZE_T CommitCharge
;
1203 SIZE_T PeakVirtualSize
;
1205 LIST_ENTRY SessionProcessLinks
;
1207 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1210 PVOID ExceptionPortData
;
1211 ULONG ExceptionPortValue
;
1212 UCHAR ExceptionPortState
:3;
1215 PVOID ExceptionPort
;
1217 PHANDLE_TABLE ObjectTable
;
1219 PFN_NUMBER WorkingSetPage
;
1220 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1221 EX_PUSH_LOCK AddressCreationLock
;
1222 PETHREAD RotateInProgress
;
1224 KGUARDED_MUTEX AddressCreationLock
;
1225 KSPIN_LOCK HyperSpaceLock
;
1227 PETHREAD ForkInProgress
;
1228 ULONG_PTR HardwareTrigger
;
1229 PMM_AVL_TABLE PhysicalVadRoot
;
1231 PFN_NUMBER NumberOfPrivatePages
;
1232 PFN_NUMBER NumberOfLockedPages
;
1233 PVOID
*Win32Process
;
1235 PVOID SectionObject
;
1236 PVOID SectionBaseAddress
;
1237 PEPROCESS_QUOTA_BLOCK QuotaBlock
;
1238 PPAGEFAULT_HISTORY WorkingSetWatch
;
1239 PVOID Win32WindowStation
;
1240 HANDLE InheritedFromUniqueProcessId
;
1241 PVOID LdtInformation
;
1245 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1246 PVOID EtwDataSource
;
1253 HARDWARE_PTE PageDirectoryPte
;
1257 CHAR ImageFileName
[16];
1258 LIST_ENTRY JobLinks
;
1259 PVOID LockedPagesList
;
1260 LIST_ENTRY ThreadListHead
;
1263 struct _WOW64_PROCESS
*Wow64Process
;
1267 ULONG ActiveThreads
;
1268 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1269 ULONG ImagePathHash
;
1271 ACCESS_MASK GrantedAccess
;
1273 ULONG DefaultHardErrorProcessing
;
1274 NTSTATUS LastThreadExitStatus
;
1276 EX_FAST_REF PrefetchTrace
;
1277 LARGE_INTEGER ReadOperationCount
;
1278 LARGE_INTEGER WriteOperationCount
;
1279 LARGE_INTEGER OtherOperationCount
;
1280 LARGE_INTEGER ReadTransferCount
;
1281 LARGE_INTEGER WriteTransferCount
;
1282 LARGE_INTEGER OtherTransferCount
;
1283 SIZE_T CommitChargeLimit
;
1284 SIZE_T CommitChargePeak
;
1286 SE_AUDIT_PROCESS_CREATION_INFO SeAuditProcessCreationInfo
;
1291 LIST_ENTRY MmProcessLinks
;
1293 ULONG ModifiedPageCount
;
1294 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1299 ULONG JobNotReallyActive
:1;
1300 ULONG AccountingFolded
:1;
1301 ULONG NewProcessReported
:1;
1302 ULONG ExitProcessReported
:1;
1303 ULONG ReportCommitChanges
:1;
1304 ULONG LastReportMemory
:1;
1305 ULONG ReportPhysicalPageChanges
:1;
1306 ULONG HandleTableRundown
:1;
1307 ULONG NeedsHandleRundown
:1;
1308 ULONG RefTraceEnabled
:1;
1310 ULONG ProtectedProcess
:1;
1311 ULONG DefaultPagePriority
:3;
1312 ULONG ProcessDeleteSelf
:1;
1313 ULONG ProcessVerifierTarget
:1;
1324 ULONG CreateReported
:1;
1325 ULONG NoDebugInherit
:1;
1326 ULONG ProcessExiting
:1;
1327 ULONG ProcessDelete
:1;
1328 ULONG Wow64SplitPages
:1;
1330 ULONG OutswapEnabled
:1;
1333 ULONG Wow64VaSpace4Gb
:1;
1334 ULONG AddressSpaceInitialized
:2;
1335 ULONG SetTimerResolution
:1;
1336 ULONG BreakOnTermination
:1;
1337 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1338 ULONG DeprioritizeViews
:1;
1340 ULONG SessionCreationUnderway
:1;
1343 ULONG ProcessInSession
:1;
1344 ULONG OverrideAddressSpace
:1;
1345 ULONG HasAddressSpace
:1;
1346 ULONG LaunchPrefetched
:1;
1347 ULONG InjectInpageErrors
:1;
1349 ULONG ImageNotifyDone
:1;
1350 ULONG PdeUpdateNeeded
:1;
1352 ULONG SmapAllowed
:1;
1353 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1354 ULONG ProcessInserted
:1;
1356 ULONG CreateFailed
:1;
1358 ULONG DefaultIoPriority
:3;
1359 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1360 ULONG SparePsFlags1
:2;
1368 NTSTATUS ExitStatus
;
1369 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1372 USHORT NextPageColor
;
1378 UCHAR SubSystemMinorVersion
;
1379 UCHAR SubSystemMajorVersion
;
1381 USHORT SubSystemVersion
;
1383 UCHAR PriorityClass
;
1384 MM_AVL_TABLE VadRoot
;
1389 // Job Token Filter Data
1391 #include <pshpack1.h>
1392 typedef struct _PS_JOB_TOKEN_FILTER
1394 ULONG CapturedSidCount
;
1395 PSID_AND_ATTRIBUTES CapturedSids
;
1396 ULONG CapturedSidsLength
;
1397 ULONG CapturedGroupCount
;
1398 PSID_AND_ATTRIBUTES CapturedGroups
;
1399 ULONG CapturedGroupsLength
;
1400 ULONG CapturedPrivilegeCount
;
1401 PLUID_AND_ATTRIBUTES CapturedPrivileges
;
1402 ULONG CapturedPrivilegesLength
;
1403 } PS_JOB_TOKEN_FILTER
, *PPS_JOB_TOKEN_FILTER
;
1406 // Executive Job (EJOB)
1408 typedef struct _EJOB
1411 LIST_ENTRY JobLinks
;
1412 LIST_ENTRY ProcessListHead
;
1414 LARGE_INTEGER TotalUserTime
;
1415 LARGE_INTEGER TotalKernelTime
;
1416 LARGE_INTEGER ThisPeriodTotalUserTime
;
1417 LARGE_INTEGER ThisPeriodTotalKernelTime
;
1418 ULONG TotalPageFaultCount
;
1419 ULONG TotalProcesses
;
1420 ULONG ActiveProcesses
;
1421 ULONG TotalTerminatedProcesses
;
1422 LARGE_INTEGER PerProcessUserTimeLimit
;
1423 LARGE_INTEGER PerJobUserTimeLimit
;
1425 ULONG MinimumWorkingSetSize
;
1426 ULONG MaximumWorkingSetSize
;
1427 ULONG ActiveProcessLimit
;
1429 UCHAR PriorityClass
;
1430 ULONG UIRestrictionsClass
;
1431 ULONG SecurityLimitFlags
;
1433 PPS_JOB_TOKEN_FILTER Filter
;
1434 ULONG EndOfJobTimeAction
;
1435 PVOID CompletionPort
;
1436 PVOID CompletionKey
;
1438 ULONG SchedulingClass
;
1439 ULONGLONG ReadOperationCount
;
1440 ULONGLONG WriteOperationCount
;
1441 ULONGLONG OtherOperationCount
;
1442 ULONGLONG ReadTransferCount
;
1443 ULONGLONG WriteTransferCount
;
1444 ULONGLONG OtherTransferCount
;
1446 ULONG ProcessMemoryLimit
;
1447 ULONG JobMemoryLimit
;
1448 ULONG PeakProcessMemoryUsed
;
1449 ULONG PeakJobMemoryUsed
;
1450 ULONG CurrentJobMemoryUsed
;
1451 #if (NTDDI_VERSION >= NTDDI_WINXP) && (NTDDI_VERSION < NTDDI_WS03)
1452 FAST_MUTEX MemoryLimitsLock
;
1453 #elif (NTDDI_VERSION >= NTDDI_WS03) && (NTDDI_VERSION < NTDDI_LONGHORN)
1454 KGUARDED_MUTEX MemoryLimitsLock
;
1455 #elif (NTDDI_VERSION >= NTDDI_LONGHORN)
1456 EX_PUSH_LOCK MemoryLimitsLock
;
1458 LIST_ENTRY JobSetLinks
;
1462 #include <poppack.h>
1465 // Job Information Structures for NtQueryInformationJobObject
1468 typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
1470 LARGE_INTEGER TotalUserTime
;
1471 LARGE_INTEGER TotalKernelTime
;
1472 LARGE_INTEGER ThisPeriodTotalUserTime
;
1473 LARGE_INTEGER ThisPeriodTotalKernelTime
;
1474 ULONG TotalPageFaultCount
;
1475 ULONG TotalProcesses
;
1476 ULONG ActiveProcesses
;
1477 ULONG TotalTerminatedProcesses
;
1478 } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
, *PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION
;
1480 typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION
1482 LARGE_INTEGER PerProcessUserTimeLimit
;
1483 LARGE_INTEGER PerJobUserTimeLimit
;
1485 SIZE_T MinimumWorkingSetSize
;
1486 SIZE_T MaximumWorkingSetSize
;
1487 ULONG ActiveProcessLimit
;
1489 ULONG PriorityClass
;
1490 ULONG SchedulingClass
;
1491 } JOBOBJECT_BASIC_LIMIT_INFORMATION
, *PJOBOBJECT_BASIC_LIMIT_INFORMATION
;
1493 typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST
1495 ULONG NumberOfAssignedProcesses
;
1496 ULONG NumberOfProcessIdsInList
;
1497 ULONG_PTR ProcessIdList
[1];
1498 } JOBOBJECT_BASIC_PROCESS_ID_LIST
, *PJOBOBJECT_BASIC_PROCESS_ID_LIST
;
1500 typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS
1502 ULONG UIRestrictionsClass
;
1503 } JOBOBJECT_BASIC_UI_RESTRICTIONS
, *PJOBOBJECT_BASIC_UI_RESTRICTIONS
;
1505 typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION
1507 ULONG SecurityLimitFlags
;
1509 PTOKEN_GROUPS SidsToDisable
;
1510 PTOKEN_PRIVILEGES PrivilegesToDelete
;
1511 PTOKEN_GROUPS RestrictedSids
;
1512 } JOBOBJECT_SECURITY_LIMIT_INFORMATION
, *PJOBOBJECT_SECURITY_LIMIT_INFORMATION
;
1514 typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION
1516 ULONG EndOfJobTimeAction
;
1517 } JOBOBJECT_END_OF_JOB_TIME_INFORMATION
, PJOBOBJECT_END_OF_JOB_TIME_INFORMATION
;
1519 typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT
1521 PVOID CompletionKey
;
1522 HANDLE CompletionPort
;
1523 } JOBOBJECT_ASSOCIATE_COMPLETION_PORT
, *PJOBOBJECT_ASSOCIATE_COMPLETION_PORT
;
1525 typedef struct JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
1527 JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo
;
1529 } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
, *PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION
;
1531 typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION
1533 JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation
;
1535 SIZE_T ProcessMemoryLimit
;
1536 SIZE_T JobMemoryLimit
;
1537 SIZE_T PeakProcessMemoryUsed
;
1538 SIZE_T PeakJobMemoryUsed
;
1539 } JOBOBJECT_EXTENDED_LIMIT_INFORMATION
, *PJOBOBJECT_EXTENDED_LIMIT_INFORMATION
;
1543 // Win32K Callback Registration Data
1545 typedef struct _WIN32_POWEREVENT_PARAMETERS
1547 PSPOWEREVENTTYPE EventNumber
;
1549 } WIN32_POWEREVENT_PARAMETERS
, *PWIN32_POWEREVENT_PARAMETERS
;
1551 typedef struct _WIN32_POWERSTATE_PARAMETERS
1554 POWER_ACTION SystemAction
;
1555 SYSTEM_POWER_STATE MinSystemState
;
1557 POWERSTATETASK PowerStateTask
;
1558 } WIN32_POWERSTATE_PARAMETERS
, *PWIN32_POWERSTATE_PARAMETERS
;
1560 typedef struct _WIN32_JOBCALLOUT_PARAMETERS
1563 PSW32JOBCALLOUTTYPE CalloutType
;
1565 } WIN32_JOBCALLOUT_PARAMETERS
, *PWIN32_JOBCALLOUT_PARAMETERS
;
1567 typedef struct _WIN32_OPENMETHOD_PARAMETERS
1569 OB_OPEN_REASON OpenReason
;
1572 ULONG GrantedAccess
;
1574 } WIN32_OPENMETHOD_PARAMETERS
, *PWIN32_OPENMETHOD_PARAMETERS
;
1576 typedef struct _WIN32_OKAYTOCLOSEMETHOD_PARAMETERS
1581 KPROCESSOR_MODE PreviousMode
;
1582 } WIN32_OKAYTOCLOSEMETHOD_PARAMETERS
, *PWIN32_OKAYTOCLOSEMETHOD_PARAMETERS
;
1584 typedef struct _WIN32_CLOSEMETHOD_PARAMETERS
1588 ACCESS_MASK AccessMask
;
1589 ULONG ProcessHandleCount
;
1590 ULONG SystemHandleCount
;
1591 } WIN32_CLOSEMETHOD_PARAMETERS
, *PWIN32_CLOSEMETHOD_PARAMETERS
;
1593 typedef struct _WIN32_DELETEMETHOD_PARAMETERS
1596 } WIN32_DELETEMETHOD_PARAMETERS
, *PWIN32_DELETEMETHOD_PARAMETERS
;
1598 typedef struct _WIN32_PARSEMETHOD_PARAMETERS
1602 PACCESS_STATE AccessState
;
1603 KPROCESSOR_MODE AccessMode
;
1605 _Out_ PUNICODE_STRING CompleteName
;
1606 PUNICODE_STRING RemainingName
;
1608 PSECURITY_QUALITY_OF_SERVICE SecurityQos
;
1610 } WIN32_PARSEMETHOD_PARAMETERS
, *PWIN32_PARSEMETHOD_PARAMETERS
;
1612 typedef struct _WIN32_CALLOUTS_FPNS
1614 PKWIN32_PROCESS_CALLOUT ProcessCallout
;
1615 PKWIN32_THREAD_CALLOUT ThreadCallout
;
1616 PKWIN32_GLOBALATOMTABLE_CALLOUT GlobalAtomTableCallout
;
1617 PKWIN32_POWEREVENT_CALLOUT PowerEventCallout
;
1618 PKWIN32_POWERSTATE_CALLOUT PowerStateCallout
;
1619 PKWIN32_JOB_CALLOUT JobCallout
;
1620 PGDI_BATCHFLUSH_ROUTINE BatchFlushRoutine
;
1621 PKWIN32_SESSION_CALLOUT DesktopOpenProcedure
;
1622 PKWIN32_SESSION_CALLOUT DesktopOkToCloseProcedure
;
1623 PKWIN32_SESSION_CALLOUT DesktopCloseProcedure
;
1624 PKWIN32_SESSION_CALLOUT DesktopDeleteProcedure
;
1625 PKWIN32_SESSION_CALLOUT WindowStationOkToCloseProcedure
;
1626 PKWIN32_SESSION_CALLOUT WindowStationCloseProcedure
;
1627 PKWIN32_SESSION_CALLOUT WindowStationDeleteProcedure
;
1628 PKWIN32_SESSION_CALLOUT WindowStationParseProcedure
;
1629 PKWIN32_SESSION_CALLOUT WindowStationOpenProcedure
;
1630 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
1631 PKWIN32_WIN32DATACOLLECTION_CALLOUT Win32DataCollectionProcedure
;
1633 } WIN32_CALLOUTS_FPNS
, *PWIN32_CALLOUTS_FPNS
;
1635 #endif // !NTOS_MODE_USER
1641 #endif // _PSTYPES_H