1 /******************************************************************************
2 * Process Manager Types *
3 ******************************************************************************/
8 (NTAPI
*PCREATE_PROCESS_NOTIFY_ROUTINE
)(
13 typedef struct _PS_CREATE_NOTIFY_INFO
{
18 IN ULONG FileOpenNameAvailable
:1;
22 IN HANDLE ParentProcessId
;
23 IN CLIENT_ID CreatingThreadId
;
24 IN OUT
struct _FILE_OBJECT
*FileObject
;
25 IN PCUNICODE_STRING ImageFileName
;
26 IN PCUNICODE_STRING CommandLine OPTIONAL
;
27 IN OUT NTSTATUS CreationStatus
;
28 } PS_CREATE_NOTIFY_INFO
, *PPS_CREATE_NOTIFY_INFO
;
31 (NTAPI
*PCREATE_PROCESS_NOTIFY_ROUTINE_EX
)(
32 IN OUT PEPROCESS Process
,
34 IN PPS_CREATE_NOTIFY_INFO CreateInfo OPTIONAL
);
37 (NTAPI
*PCREATE_THREAD_NOTIFY_ROUTINE
)(
42 #define IMAGE_ADDRESSING_MODE_32BIT 3
44 typedef struct _IMAGE_INFO
{
45 _ANONYMOUS_UNION
union {
47 _ANONYMOUS_STRUCT
struct {
48 ULONG ImageAddressingMode
:8;
49 ULONG SystemModeImage
:1;
50 ULONG ImageMappedToAllPids
:1;
51 ULONG ExtendedInfoPresent
:1;
58 ULONG ImageSectionNumber
;
59 } IMAGE_INFO
, *PIMAGE_INFO
;
61 typedef struct _IMAGE_INFO_EX
{
64 struct _FILE_OBJECT
*FileObject
;
65 } IMAGE_INFO_EX
, *PIMAGE_INFO_EX
;
68 (NTAPI
*PLOAD_IMAGE_NOTIFY_ROUTINE
)(
69 IN PUNICODE_STRING FullImageName
,
71 IN PIMAGE_INFO ImageInfo
);
73 #define THREAD_CSWITCH_PMU_DISABLE FALSE
74 #define THREAD_CSWITCH_PMU_ENABLE TRUE
76 #define PROCESS_LUID_DOSDEVICES_ONLY 0x00000001
78 #define PROCESS_HANDLE_TRACING_MAX_STACKS 16
80 typedef struct _NT_TIB
{
81 struct _EXCEPTION_REGISTRATION_RECORD
*ExceptionList
;
85 _ANONYMOUS_UNION
union {
89 PVOID ArbitraryUserPointer
;
93 typedef struct _NT_TIB32
{
98 __GNU_EXTENSION
union {
102 ULONG ArbitraryUserPointer
;
104 } NT_TIB32
,*PNT_TIB32
;
106 typedef struct _NT_TIB64
{
107 ULONG64 ExceptionList
;
110 ULONG64 SubSystemTib
;
111 __GNU_EXTENSION
union {
115 ULONG64 ArbitraryUserPointer
;
117 } NT_TIB64
,*PNT_TIB64
;
119 typedef enum _PROCESSINFOCLASS
{
120 ProcessBasicInformation
,
126 ProcessRaisePriority
,
128 ProcessExceptionPort
,
130 ProcessLdtInformation
,
132 ProcessDefaultHardErrorMode
,
133 ProcessIoPortHandlers
,
134 ProcessPooledUsageAndLimits
,
135 ProcessWorkingSetWatch
,
137 ProcessEnableAlignmentFaultFixup
,
138 ProcessPriorityClass
,
139 ProcessWx86Information
,
142 ProcessPriorityBoost
,
144 ProcessSessionInformation
,
145 ProcessForegroundInformation
,
146 ProcessWow64Information
,
147 ProcessImageFileName
,
148 ProcessLUIDDeviceMapsEnabled
,
149 ProcessBreakOnTermination
,
150 ProcessDebugObjectHandle
,
152 ProcessHandleTracing
,
155 ProcessTlsInformation
,
157 ProcessImageInformation
,
160 ProcessInstrumentationCallback
,
161 ProcessThreadStackAllocation
,
162 ProcessWorkingSetWatchEx
,
163 ProcessImageFileNameWin32
,
164 ProcessImageFileMapping
,
165 ProcessAffinityUpdateMode
,
166 ProcessMemoryAllocationMode
,
167 ProcessGroupInformation
,
168 ProcessTokenVirtualizationEnabled
,
169 ProcessConsoleHostProcess
,
170 ProcessWindowInformation
,
174 typedef enum _THREADINFOCLASS
{
175 ThreadBasicInformation
,
180 ThreadImpersonationToken
,
181 ThreadDescriptorTableEntry
,
182 ThreadEnableAlignmentFaultFixup
,
183 ThreadEventPair_Reusable
,
184 ThreadQuerySetWin32StartAddress
,
186 ThreadPerformanceCount
,
188 ThreadIdealProcessor
,
190 ThreadSetTlsArrayAddress
,
192 ThreadHideFromDebugger
,
193 ThreadBreakOnTermination
,
194 ThreadSwitchLegacyState
,
196 ThreadLastSystemCall
,
200 ThreadActualBasePriority
,
201 ThreadTebInformation
,
205 ThreadGroupInformation
,
206 ThreadUmsInformation
,
207 ThreadCounterProfiling
,
208 ThreadIdealProcessorEx
,
212 typedef struct _PAGE_PRIORITY_INFORMATION
{
214 } PAGE_PRIORITY_INFORMATION
, *PPAGE_PRIORITY_INFORMATION
;
216 typedef struct _PROCESS_WS_WATCH_INFORMATION
{
219 } PROCESS_WS_WATCH_INFORMATION
, *PPROCESS_WS_WATCH_INFORMATION
;
221 typedef struct _PROCESS_BASIC_INFORMATION
{
223 struct _PEB
*PebBaseAddress
;
224 ULONG_PTR AffinityMask
;
225 KPRIORITY BasePriority
;
226 ULONG_PTR UniqueProcessId
;
227 ULONG_PTR InheritedFromUniqueProcessId
;
228 } PROCESS_BASIC_INFORMATION
,*PPROCESS_BASIC_INFORMATION
;
230 typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION
{
232 PROCESS_BASIC_INFORMATION BasicInfo
;
236 ULONG IsProtectedProcess
:1;
237 ULONG IsWow64Process
:1;
238 ULONG IsProcessDeleting
:1;
239 ULONG IsCrossSessionCreate
:1;
243 } PROCESS_EXTENDED_BASIC_INFORMATION
, *PPROCESS_EXTENDED_BASIC_INFORMATION
;
245 typedef struct _PROCESS_DEVICEMAP_INFORMATION
{
246 __GNU_EXTENSION
union {
248 HANDLE DirectoryHandle
;
255 } PROCESS_DEVICEMAP_INFORMATION
, *PPROCESS_DEVICEMAP_INFORMATION
;
257 typedef struct _PROCESS_DEVICEMAP_INFORMATION_EX
{
260 HANDLE DirectoryHandle
;
268 } PROCESS_DEVICEMAP_INFORMATION_EX
, *PPROCESS_DEVICEMAP_INFORMATION_EX
;
270 typedef struct _PROCESS_SESSION_INFORMATION
{
272 } PROCESS_SESSION_INFORMATION
, *PPROCESS_SESSION_INFORMATION
;
274 typedef struct _PROCESS_HANDLE_TRACING_ENABLE
{
276 } PROCESS_HANDLE_TRACING_ENABLE
, *PPROCESS_HANDLE_TRACING_ENABLE
;
278 typedef struct _PROCESS_HANDLE_TRACING_ENABLE_EX
{
281 } PROCESS_HANDLE_TRACING_ENABLE_EX
, *PPROCESS_HANDLE_TRACING_ENABLE_EX
;
283 typedef struct _PROCESS_HANDLE_TRACING_ENTRY
{
287 PVOID Stacks
[PROCESS_HANDLE_TRACING_MAX_STACKS
];
288 } PROCESS_HANDLE_TRACING_ENTRY
, *PPROCESS_HANDLE_TRACING_ENTRY
;
290 typedef struct _PROCESS_HANDLE_TRACING_QUERY
{
293 PROCESS_HANDLE_TRACING_ENTRY HandleTrace
[1];
294 } PROCESS_HANDLE_TRACING_QUERY
, *PPROCESS_HANDLE_TRACING_QUERY
;
299 #define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001
300 #define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
301 #define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004
302 #define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008
303 #define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010
305 /* Thread Access Rights */
306 #define THREAD_TERMINATE 0x0001
307 #define THREAD_SUSPEND_RESUME 0x0002
308 #define THREAD_ALERT 0x0004
309 #define THREAD_GET_CONTEXT 0x0008
310 #define THREAD_SET_CONTEXT 0x0010
311 #define THREAD_SET_INFORMATION 0x0020
312 #define THREAD_SET_LIMITED_INFORMATION 0x0400
313 #define THREAD_QUERY_LIMITED_INFORMATION 0x0800
315 #define PROCESS_DUP_HANDLE (0x0040)
317 #if (NTDDI_VERSION >= NTDDI_VISTA)
318 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF)
320 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF)
323 #if (NTDDI_VERSION >= NTDDI_VISTA)
324 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF)
326 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF)
329 #define LOW_PRIORITY 0
330 #define LOW_REALTIME_PRIORITY 16
331 #define HIGH_PRIORITY 31
332 #define MAXIMUM_PRIORITY 32