[XDK]
[reactos.git] / include / xdk / pstypes.h
1 /******************************************************************************
2 * Process Manager Types *
3 ******************************************************************************/
4
5 $if (_NTDDK_)
6
7 typedef VOID
8 (NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE)(
9 IN HANDLE ParentId,
10 IN HANDLE ProcessId,
11 IN BOOLEAN Create);
12
13 typedef struct _PS_CREATE_NOTIFY_INFO {
14 IN SIZE_T Size;
15 union {
16 IN ULONG Flags;
17 struct {
18 IN ULONG FileOpenNameAvailable:1;
19 IN ULONG Reserved:31;
20 };
21 };
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;
29
30 typedef VOID
31 (NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE_EX)(
32 IN OUT PEPROCESS Process,
33 IN HANDLE ProcessId,
34 IN PPS_CREATE_NOTIFY_INFO CreateInfo OPTIONAL);
35
36 typedef VOID
37 (NTAPI *PCREATE_THREAD_NOTIFY_ROUTINE)(
38 IN HANDLE ProcessId,
39 IN HANDLE ThreadId,
40 IN BOOLEAN Create);
41
42 #define IMAGE_ADDRESSING_MODE_32BIT 3
43
44 typedef struct _IMAGE_INFO {
45 _ANONYMOUS_UNION union {
46 ULONG Properties;
47 _ANONYMOUS_STRUCT struct {
48 ULONG ImageAddressingMode:8;
49 ULONG SystemModeImage:1;
50 ULONG ImageMappedToAllPids:1;
51 ULONG ExtendedInfoPresent:1;
52 ULONG Reserved:21;
53 } DUMMYSTRUCTNAME;
54 } DUMMYUNIONNAME;
55 PVOID ImageBase;
56 ULONG ImageSelector;
57 SIZE_T ImageSize;
58 ULONG ImageSectionNumber;
59 } IMAGE_INFO, *PIMAGE_INFO;
60
61 typedef struct _IMAGE_INFO_EX {
62 SIZE_T Size;
63 IMAGE_INFO ImageInfo;
64 struct _FILE_OBJECT *FileObject;
65 } IMAGE_INFO_EX, *PIMAGE_INFO_EX;
66
67 typedef VOID
68 (NTAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)(
69 IN PUNICODE_STRING FullImageName,
70 IN HANDLE ProcessId,
71 IN PIMAGE_INFO ImageInfo);
72
73 #define THREAD_CSWITCH_PMU_DISABLE FALSE
74 #define THREAD_CSWITCH_PMU_ENABLE TRUE
75
76 #define PROCESS_LUID_DOSDEVICES_ONLY 0x00000001
77
78 #define PROCESS_HANDLE_TRACING_MAX_STACKS 16
79
80 typedef struct _NT_TIB {
81 struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
82 PVOID StackBase;
83 PVOID StackLimit;
84 PVOID SubSystemTib;
85 _ANONYMOUS_UNION union {
86 PVOID FiberData;
87 ULONG Version;
88 } DUMMYUNIONNAME;
89 PVOID ArbitraryUserPointer;
90 struct _NT_TIB *Self;
91 } NT_TIB, *PNT_TIB;
92
93 typedef struct _NT_TIB32 {
94 ULONG ExceptionList;
95 ULONG StackBase;
96 ULONG StackLimit;
97 ULONG SubSystemTib;
98 __GNU_EXTENSION union {
99 ULONG FiberData;
100 ULONG Version;
101 };
102 ULONG ArbitraryUserPointer;
103 ULONG Self;
104 } NT_TIB32,*PNT_TIB32;
105
106 typedef struct _NT_TIB64 {
107 ULONG64 ExceptionList;
108 ULONG64 StackBase;
109 ULONG64 StackLimit;
110 ULONG64 SubSystemTib;
111 __GNU_EXTENSION union {
112 ULONG64 FiberData;
113 ULONG Version;
114 };
115 ULONG64 ArbitraryUserPointer;
116 ULONG64 Self;
117 } NT_TIB64,*PNT_TIB64;
118
119 typedef enum _PROCESSINFOCLASS {
120 ProcessBasicInformation,
121 ProcessQuotaLimits,
122 ProcessIoCounters,
123 ProcessVmCounters,
124 ProcessTimes,
125 ProcessBasePriority,
126 ProcessRaisePriority,
127 ProcessDebugPort,
128 ProcessExceptionPort,
129 ProcessAccessToken,
130 ProcessLdtInformation,
131 ProcessLdtSize,
132 ProcessDefaultHardErrorMode,
133 ProcessIoPortHandlers,
134 ProcessPooledUsageAndLimits,
135 ProcessWorkingSetWatch,
136 ProcessUserModeIOPL,
137 ProcessEnableAlignmentFaultFixup,
138 ProcessPriorityClass,
139 ProcessWx86Information,
140 ProcessHandleCount,
141 ProcessAffinityMask,
142 ProcessPriorityBoost,
143 ProcessDeviceMap,
144 ProcessSessionInformation,
145 ProcessForegroundInformation,
146 ProcessWow64Information,
147 ProcessImageFileName,
148 ProcessLUIDDeviceMapsEnabled,
149 ProcessBreakOnTermination,
150 ProcessDebugObjectHandle,
151 ProcessDebugFlags,
152 ProcessHandleTracing,
153 ProcessIoPriority,
154 ProcessExecuteFlags,
155 ProcessTlsInformation,
156 ProcessCookie,
157 ProcessImageInformation,
158 ProcessCycleTime,
159 ProcessPagePriority,
160 ProcessInstrumentationCallback,
161 ProcessThreadStackAllocation,
162 ProcessWorkingSetWatchEx,
163 ProcessImageFileNameWin32,
164 ProcessImageFileMapping,
165 ProcessAffinityUpdateMode,
166 ProcessMemoryAllocationMode,
167 ProcessGroupInformation,
168 ProcessTokenVirtualizationEnabled,
169 ProcessConsoleHostProcess,
170 ProcessWindowInformation,
171 MaxProcessInfoClass
172 } PROCESSINFOCLASS;
173
174 typedef enum _THREADINFOCLASS {
175 ThreadBasicInformation,
176 ThreadTimes,
177 ThreadPriority,
178 ThreadBasePriority,
179 ThreadAffinityMask,
180 ThreadImpersonationToken,
181 ThreadDescriptorTableEntry,
182 ThreadEnableAlignmentFaultFixup,
183 ThreadEventPair_Reusable,
184 ThreadQuerySetWin32StartAddress,
185 ThreadZeroTlsCell,
186 ThreadPerformanceCount,
187 ThreadAmILastThread,
188 ThreadIdealProcessor,
189 ThreadPriorityBoost,
190 ThreadSetTlsArrayAddress,
191 ThreadIsIoPending,
192 ThreadHideFromDebugger,
193 ThreadBreakOnTermination,
194 ThreadSwitchLegacyState,
195 ThreadIsTerminated,
196 ThreadLastSystemCall,
197 ThreadIoPriority,
198 ThreadCycleTime,
199 ThreadPagePriority,
200 ThreadActualBasePriority,
201 ThreadTebInformation,
202 ThreadCSwitchMon,
203 ThreadCSwitchPmu,
204 ThreadWow64Context,
205 ThreadGroupInformation,
206 ThreadUmsInformation,
207 ThreadCounterProfiling,
208 ThreadIdealProcessorEx,
209 MaxThreadInfoClass
210 } THREADINFOCLASS;
211
212 typedef struct _PAGE_PRIORITY_INFORMATION {
213 ULONG PagePriority;
214 } PAGE_PRIORITY_INFORMATION, *PPAGE_PRIORITY_INFORMATION;
215
216 typedef struct _PROCESS_WS_WATCH_INFORMATION {
217 PVOID FaultingPc;
218 PVOID FaultingVa;
219 } PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION;
220
221 typedef struct _PROCESS_BASIC_INFORMATION {
222 NTSTATUS ExitStatus;
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;
229
230 typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION {
231 SIZE_T Size;
232 PROCESS_BASIC_INFORMATION BasicInfo;
233 union {
234 ULONG Flags;
235 struct {
236 ULONG IsProtectedProcess:1;
237 ULONG IsWow64Process:1;
238 ULONG IsProcessDeleting:1;
239 ULONG IsCrossSessionCreate:1;
240 ULONG SpareBits:28;
241 } DUMMYSTRUCTNAME;
242 } DUMMYUNIONNAME;
243 } PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION;
244
245 typedef struct _PROCESS_DEVICEMAP_INFORMATION {
246 __GNU_EXTENSION union {
247 struct {
248 HANDLE DirectoryHandle;
249 } Set;
250 struct {
251 ULONG DriveMap;
252 UCHAR DriveType[32];
253 } Query;
254 };
255 } PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION;
256
257 typedef struct _PROCESS_DEVICEMAP_INFORMATION_EX {
258 union {
259 struct {
260 HANDLE DirectoryHandle;
261 } Set;
262 struct {
263 ULONG DriveMap;
264 UCHAR DriveType[32];
265 } Query;
266 } DUMMYUNIONNAME;
267 ULONG Flags;
268 } PROCESS_DEVICEMAP_INFORMATION_EX, *PPROCESS_DEVICEMAP_INFORMATION_EX;
269
270 typedef struct _PROCESS_SESSION_INFORMATION {
271 ULONG SessionId;
272 } PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
273
274 typedef struct _PROCESS_HANDLE_TRACING_ENABLE {
275 ULONG Flags;
276 } PROCESS_HANDLE_TRACING_ENABLE, *PPROCESS_HANDLE_TRACING_ENABLE;
277
278 typedef struct _PROCESS_HANDLE_TRACING_ENABLE_EX {
279 ULONG Flags;
280 ULONG TotalSlots;
281 } PROCESS_HANDLE_TRACING_ENABLE_EX, *PPROCESS_HANDLE_TRACING_ENABLE_EX;
282
283 typedef struct _PROCESS_HANDLE_TRACING_ENTRY {
284 HANDLE Handle;
285 CLIENT_ID ClientId;
286 ULONG Type;
287 PVOID Stacks[PROCESS_HANDLE_TRACING_MAX_STACKS];
288 } PROCESS_HANDLE_TRACING_ENTRY, *PPROCESS_HANDLE_TRACING_ENTRY;
289
290 typedef struct _PROCESS_HANDLE_TRACING_QUERY {
291 HANDLE Handle;
292 ULONG TotalTraces;
293 PROCESS_HANDLE_TRACING_ENTRY HandleTrace[1];
294 } PROCESS_HANDLE_TRACING_QUERY, *PPROCESS_HANDLE_TRACING_QUERY;
295
296 $endif
297
298 $if (_WDMDDK_)
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
304
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
314
315 #define PROCESS_DUP_HANDLE (0x0040)
316
317 #if (NTDDI_VERSION >= NTDDI_VISTA)
318 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF)
319 #else
320 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF)
321 #endif
322
323 #if (NTDDI_VERSION >= NTDDI_VISTA)
324 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF)
325 #else
326 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF)
327 #endif
328
329 #define LOW_PRIORITY 0
330 #define LOW_REALTIME_PRIORITY 16
331 #define HIGH_PRIORITY 31
332 #define MAXIMUM_PRIORITY 32
333 $endif
334