Fix build
[reactos.git] / reactos / include / ndk / pstypes.h
1 /*
2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/pstypes.h
4 * PURPOSE: Defintions for Process Manager Types not documented in DDK/IFS.
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
6 * UPDATE HISTORY:
7 * Created 06/10/04
8 */
9 #ifndef _PSTYPES_H
10 #define _PSTYPES_H
11
12 /* DEPENDENCIES **************************************************************/
13 #include "ldrtypes.h"
14 #include "rtltypes.h"
15
16 /* EXPORTED DATA *************************************************************/
17
18 extern NTOSAPI struct _EPROCESS* PsInitialSystemProcess;
19 extern NTOSAPI POBJECT_TYPE PsProcessType;
20 extern NTOSAPI POBJECT_TYPE PsThreadType;
21
22 /* CONSTANTS *****************************************************************/
23
24 /* These are not exposed to drivers normally */
25 #ifndef _NTOS_MODE_USER
26 #define JOB_OBJECT_ASSIGN_PROCESS (1)
27 #define JOB_OBJECT_SET_ATTRIBUTES (2)
28 #define JOB_OBJECT_QUERY (4)
29 #define JOB_OBJECT_TERMINATE (8)
30 #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (16)
31 #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
32 #endif
33
34 #define THREAD_ALERT 0x4
35
36 #define USER_SHARED_DATA (0x7FFE0000)
37
38 /* Process priority classes */
39 #define PROCESS_PRIORITY_CLASS_HIGH (4) /* FIXME */
40 #define PROCESS_PRIORITY_CLASS_IDLE (0) /* FIXME */
41 #define PROCESS_PRIORITY_CLASS_NORMAL (2) /* FIXME */
42 #define PROCESS_PRIORITY_CLASS_REALTIME (5) /* FIXME */
43 #define PROCESS_PRIORITY_CLASS_BELOW_NORMAL (1) /* FIXME */
44 #define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL (3) /* FIXME */
45
46 /* Global Flags */
47 #define FLG_STOP_ON_EXCEPTION 0x00000001
48 #define FLG_SHOW_LDR_SNAPS 0x00000002
49 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
50 #define FLG_STOP_ON_HUNG_GUI 0x00000008
51 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
52 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
53 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
54 #define FLG_HEAP_VALIDATE_ALL 0x00000080
55 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
56 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
57 #define FLG_POOL_ENABLE_TAGGING 0x00000400
58 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
59 #define FLG_USER_STACK_TRACE_DB 0x00001000
60 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
61 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
62 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
63 #define FLG_IGNORE_DEBUG_PRIV 0x00010000
64 #define FLG_ENABLE_CSRDEBUG 0x00020000
65 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
66 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
67 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
68 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
69 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
70 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
71 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000
72 #define FLG_HEAP_PAGE_ALLOCS 0x02000000
73 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000
74
75 /* ENUMERATIONS **************************************************************/
76
77 /* FUNCTION TYPES ************************************************************/
78 typedef VOID (STDCALL *PPEBLOCKROUTINE)(PVOID);
79
80 typedef NTSTATUS
81 (STDCALL *PW32_PROCESS_CALLBACK)(
82 struct _EPROCESS *Process,
83 BOOLEAN Create
84 );
85
86 typedef NTSTATUS
87 (STDCALL *PW32_THREAD_CALLBACK)(
88 struct _ETHREAD *Thread,
89 BOOLEAN Create
90 );
91
92 /* TYPES *********************************************************************/
93
94 struct _ETHREAD;
95
96 typedef struct _CURDIR
97 {
98 UNICODE_STRING DosPath;
99 PVOID Handle;
100 } CURDIR, *PCURDIR;
101
102 typedef struct _DESCRIPTOR_TABLE_ENTRY
103 {
104 ULONG Selector;
105 LDT_ENTRY Descriptor;
106 } DESCRIPTOR_TABLE_ENTRY, *PDESCRIPTOR_TABLE_ENTRY;
107
108 typedef struct _PEB_FREE_BLOCK
109 {
110 struct _PEB_FREE_BLOCK* Next;
111 ULONG Size;
112 } PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
113
114 typedef struct _PEB
115 {
116 UCHAR InheritedAddressSpace; /* 00h */
117 UCHAR ReadImageFileExecOptions; /* 01h */
118 UCHAR BeingDebugged; /* 02h */
119 BOOLEAN SpareBool; /* 03h */
120 HANDLE Mutant; /* 04h */
121 PVOID ImageBaseAddress; /* 08h */
122 PPEB_LDR_DATA Ldr; /* 0Ch */
123 PRTL_USER_PROCESS_PARAMETERS ProcessParameters; /* 10h */
124 PVOID SubSystemData; /* 14h */
125 PVOID ProcessHeap; /* 18h */
126 PVOID FastPebLock; /* 1Ch */
127 PPEBLOCKROUTINE FastPebLockRoutine; /* 20h */
128 PPEBLOCKROUTINE FastPebUnlockRoutine; /* 24h */
129 ULONG EnvironmentUpdateCount; /* 28h */
130 PVOID* KernelCallbackTable; /* 2Ch */
131 PVOID EventLogSection; /* 30h */
132 PVOID EventLog; /* 34h */
133 PPEB_FREE_BLOCK FreeList; /* 38h */
134 ULONG TlsExpansionCounter; /* 3Ch */
135 PVOID TlsBitmap; /* 40h */
136 ULONG TlsBitmapBits[0x2]; /* 44h */
137 PVOID ReadOnlySharedMemoryBase; /* 4Ch */
138 PVOID ReadOnlySharedMemoryHeap; /* 50h */
139 PVOID* ReadOnlyStaticServerData; /* 54h */
140 PVOID AnsiCodePageData; /* 58h */
141 PVOID OemCodePageData; /* 5Ch */
142 PVOID UnicodeCaseTableData; /* 60h */
143 ULONG NumberOfProcessors; /* 64h */
144 ULONG NtGlobalFlag; /* 68h */
145 LARGE_INTEGER CriticalSectionTimeout; /* 70h */
146 ULONG HeapSegmentReserve; /* 78h */
147 ULONG HeapSegmentCommit; /* 7Ch */
148 ULONG HeapDeCommitTotalFreeThreshold; /* 80h */
149 ULONG HeapDeCommitFreeBlockThreshold; /* 84h */
150 ULONG NumberOfHeaps; /* 88h */
151 ULONG MaximumNumberOfHeaps; /* 8Ch */
152 PVOID* ProcessHeaps; /* 90h */
153 PVOID GdiSharedHandleTable; /* 94h */
154 PVOID ProcessStarterHelper; /* 98h */
155 PVOID GdiDCAttributeList; /* 9Ch */
156 PVOID LoaderLock; /* A0h */
157 ULONG OSMajorVersion; /* A4h */
158 ULONG OSMinorVersion; /* A8h */
159 USHORT OSBuildNumber; /* ACh */
160 USHORT OSCSDVersion; /* AEh */
161 ULONG OSPlatformId; /* B0h */
162 ULONG ImageSubSystem; /* B4h */
163 ULONG ImageSubSystemMajorVersion; /* B8h */
164 ULONG ImageSubSystemMinorVersion; /* BCh */
165 ULONG ImageProcessAffinityMask; /* C0h */
166 ULONG GdiHandleBuffer[0x22]; /* C4h */
167 PVOID PostProcessInitRoutine; /* 14Ch */
168 PVOID *TlsExpansionBitmap; /* 150h */
169 ULONG TlsExpansionBitmapBits[0x20]; /* 154h */
170 ULONG SessionId; /* 1D4h */
171 PVOID AppCompatInfo; /* 1D8h */
172 UNICODE_STRING CSDVersion; /* 1DCh */
173 } PEB;
174
175 typedef struct _GDI_TEB_BATCH
176 {
177 ULONG Offset;
178 ULONG HDC;
179 ULONG Buffer[0x136];
180 } GDI_TEB_BATCH, *PGDI_TEB_BATCH;
181
182 typedef struct _INITIAL_TEB
183 {
184 PVOID StackBase;
185 PVOID StackLimit;
186 PVOID StackCommit;
187 PVOID StackCommitMax;
188 PVOID StackReserved;
189 } INITIAL_TEB, *PINITIAL_TEB;
190
191 typedef struct _TEB
192 {
193 NT_TIB Tib; /* 00h */
194 PVOID EnvironmentPointer; /* 1Ch */
195 CLIENT_ID Cid; /* 20h */
196 PVOID ActiveRpcInfo; /* 28h */
197 PVOID ThreadLocalStoragePointer; /* 2Ch */
198 struct _PEB *Peb; /* 30h */
199 ULONG LastErrorValue; /* 34h */
200 ULONG CountOfOwnedCriticalSections; /* 38h */
201 PVOID CsrClientThread; /* 3Ch */
202 struct _W32THREAD* Win32ThreadInfo; /* 40h */
203 ULONG Win32ClientInfo[0x1F]; /* 44h */
204 PVOID WOW32Reserved; /* C0h */
205 LCID CurrentLocale; /* C4h */
206 ULONG FpSoftwareStatusRegister; /* C8h */
207 PVOID SystemReserved1[0x36]; /* CCh */
208 PVOID Spare1; /* 1A4h */
209 LONG ExceptionCode; /* 1A8h */
210 UCHAR SpareBytes1[0x28]; /* 1ACh */
211 PVOID SystemReserved2[0xA]; /* 1D4h */
212 GDI_TEB_BATCH GdiTebBatch; /* 1FCh */
213 ULONG gdiRgn; /* 6DCh */
214 ULONG gdiPen; /* 6E0h */
215 ULONG gdiBrush; /* 6E4h */
216 CLIENT_ID RealClientId; /* 6E8h */
217 PVOID GdiCachedProcessHandle; /* 6F0h */
218 ULONG GdiClientPID; /* 6F4h */
219 ULONG GdiClientTID; /* 6F8h */
220 PVOID GdiThreadLocaleInfo; /* 6FCh */
221 PVOID UserReserved[5]; /* 700h */
222 PVOID glDispatchTable[0x118]; /* 714h */
223 ULONG glReserved1[0x1A]; /* B74h */
224 PVOID glReserved2; /* BDCh */
225 PVOID glSectionInfo; /* BE0h */
226 PVOID glSection; /* BE4h */
227 PVOID glTable; /* BE8h */
228 PVOID glCurrentRC; /* BECh */
229 PVOID glContext; /* BF0h */
230 NTSTATUS LastStatusValue; /* BF4h */
231 UNICODE_STRING StaticUnicodeString; /* BF8h */
232 WCHAR StaticUnicodeBuffer[0x105]; /* C00h */
233 PVOID DeallocationStack; /* E0Ch */
234 PVOID TlsSlots[0x40]; /* E10h */
235 LIST_ENTRY TlsLinks; /* F10h */
236 PVOID Vdm; /* F18h */
237 PVOID ReservedForNtRpc; /* F1Ch */
238 PVOID DbgSsReserved[0x2]; /* F20h */
239 ULONG HardErrorDisabled; /* F28h */
240 PVOID Instrumentation[0x10]; /* F2Ch */
241 PVOID WinSockData; /* F6Ch */
242 ULONG GdiBatchCount; /* F70h */
243 USHORT _Spare2; /* F74h */
244 BOOLEAN IsFiber; /* F76h */
245 UCHAR Spare3; /* F77h */
246 ULONG _Spare4; /* F78h */
247 ULONG _Spare5; /* F7Ch */
248 PVOID ReservedForOle; /* F80h */
249 ULONG WaitingOnLoaderLock; /* F84h */
250 ULONG _Unknown[11]; /* F88h */
251 PVOID FlsSlots; /* FB4h */
252 PVOID WineDebugInfo; /* Needed for WINE DLL's */
253 } TEB, *PTEB;
254
255 /* KERNEL MODE ONLY **********************************************************/
256 #ifndef NTOS_MODE_USER
257
258 #include "mmtypes.h"
259 #include "obtypes.h"
260 #include "extypes.h"
261 #include "setypes.h"
262
263 /* FIXME: see note in mmtypes.h */
264 #ifdef _NTOSKRNL_
265 #include <internal/mm.h>
266 #endif
267
268 typedef struct _EPROCESS_QUOTA_ENTRY
269 {
270 ULONG Usage;
271 ULONG Limit;
272 ULONG Peak;
273 ULONG Return;
274 } EPROCESS_QUOTA_ENTRY, *PEPROCESS_QUOTA_ENTRY;
275
276 typedef struct _EPROCESS_QUOTA_BLOCK
277 {
278 EPROCESS_QUOTA_ENTRY QuotaEntry[3];
279 LIST_ENTRY QuotaList;
280 ULONG ReferenceCount;
281 ULONG ProcessCount;
282 } EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK;
283
284 typedef struct _PAGEFAULT_HISTORY
285 {
286 ULONG CurrentIndex;
287 ULONG MapIndex;
288 KSPIN_LOCK SpinLock;
289 PVOID Reserved;
290 PROCESS_WS_WATCH_INFORMATION WatchInfo[1];
291 } PAGEFAULT_HISTORY, *PPAGEFAULT_HISTORY;
292
293 typedef struct _PS_IMPERSONATION_INFORMATION
294 {
295 PACCESS_TOKEN Token;
296 BOOLEAN CopyOnOpen;
297 BOOLEAN EffectiveOnly;
298 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
299 } PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION;
300
301 #include <pshpack4.h>
302 /*
303 * NAME: ETHREAD
304 * DESCRIPTION: Internal Executive Thread Structure.
305 * PORTABILITY: Architecture Independent.
306 * KERNEL VERSION: 5.2
307 * DOCUMENTATION: http://reactos.com/wiki/index.php/ETHREAD
308 */
309 typedef struct _ETHREAD
310 {
311 KTHREAD Tcb; /* 1C0 */
312 LARGE_INTEGER CreateTime; /* 1C0 */
313 LARGE_INTEGER ExitTime; /* 1C0 */
314 union
315 {
316 LIST_ENTRY LpcReplyChain; /* 1C0 */
317 LIST_ENTRY KeyedWaitChain; /* 1C0 */
318 };
319 union
320 {
321 NTSTATUS ExitStatus; /* 1C8 */
322 PVOID OfsChain; /* 1C8 */
323 };
324 LIST_ENTRY PostBlockList; /* 1CC */
325 union
326 {
327 struct _TERMINATION_PORT *TerminationPort; /* 1D4 */
328 struct _ETHREAD *ReaperLink; /* 1D4 */
329 PVOID KeyedWaitValue; /* 1D4 */
330 };
331 KSPIN_LOCK ActiveTimerListLock; /* 1D8 */
332 LIST_ENTRY ActiveTimerListHead; /* 1D8 */
333 CLIENT_ID Cid; /* 1E0 */
334 union
335 {
336 KSEMAPHORE LpcReplySemaphore; /* 1E4 */
337 KSEMAPHORE KeyedReplySemaphore; /* 1E4 */
338 };
339 union
340 {
341 PVOID LpcReplyMessage; /* 200 */
342 PVOID LpcWaitingOnPort; /* 200 */
343 };
344 PPS_IMPERSONATION_INFORMATION ImpersonationInfo; /* 204 */
345 LIST_ENTRY IrpList; /* 208 */
346 ULONG TopLevelIrp; /* 210 */
347 PDEVICE_OBJECT DeviceToVerify; /* 214 */
348 struct _EPROCESS *ThreadsProcess; /* 218 */
349 PKSTART_ROUTINE StartAddress; /* 21C */
350 union
351 {
352 PTHREAD_START_ROUTINE Win32StartAddress; /* 220 */
353 ULONG LpcReceivedMessageId; /* 220 */
354 };
355 LIST_ENTRY ThreadListEntry; /* 224 */
356 EX_RUNDOWN_REF RundownProtect; /* 22C */
357 EX_PUSH_LOCK ThreadLock; /* 230 */
358 ULONG LpcReplyMessageId; /* 234 */
359 ULONG ReadClusterSize; /* 238 */
360 ACCESS_MASK GrantedAccess; /* 23C */
361 union
362 {
363 struct
364 {
365 ULONG Terminated:1;
366 ULONG DeadThread:1;
367 ULONG HideFromDebugger:1;
368 ULONG ActiveImpersonationInfo:1;
369 ULONG SystemThread:1;
370 ULONG HardErrorsAreDisabled:1;
371 ULONG BreakOnTermination:1;
372 ULONG SkipCreationMsg:1;
373 ULONG SkipTerminationMsg:1;
374 };
375 ULONG CrossThreadFlags; /* 240 */
376 };
377 union
378 {
379 struct
380 {
381 ULONG ActiveExWorker:1;
382 ULONG ExWorkerCanWaitUser:1;
383 ULONG MemoryMaker:1;
384 ULONG KeyedEventInUse:1;
385 };
386 ULONG SameThreadPassiveFlags; /* 244 */
387 };
388 union
389 {
390 struct
391 {
392 ULONG LpcReceivedMsgIdValid:1;
393 ULONG LpcExitThreadCalled:1;
394 ULONG AddressSpaceOwner:1;
395 ULONG OwnsProcessWorkingSetExclusive:1;
396 ULONG OwnsProcessWorkingSetShared:1;
397 ULONG OwnsSystemWorkingSetExclusive:1;
398 ULONG OwnsSystemWorkingSetShared:1;
399 ULONG OwnsSessionWorkingSetExclusive:1;
400 ULONG OwnsSessionWorkingSetShared:1;
401 ULONG ApcNeeded:1;
402 };
403 ULONG SameThreadApcFlags; /* 248 */
404 };
405 UCHAR ForwardClusterOnly; /* 24C */
406 UCHAR DisablePageFaultClustering; /* 24D */
407 UCHAR ActiveFaultCount; /* 24E */
408 } ETHREAD;
409
410 /*
411 * NAME: EPROCESS
412 * DESCRIPTION: Internal Executive Process Structure.
413 * PORTABILITY: Architecture Independent.
414 * KERNEL VERSION: 5.2
415 * DOCUMENTATION: http://reactos.com/wiki/index.php/EPROCESS
416 */
417 typedef struct _EPROCESS
418 {
419 KPROCESS Pcb; /* 000 */
420 EX_PUSH_LOCK ProcessLock; /* 078 */
421 LARGE_INTEGER CreateTime; /* 080 */
422 LARGE_INTEGER ExitTime; /* 088 */
423 EX_RUNDOWN_REF RundownProtect; /* 090 */
424 HANDLE UniqueProcessId; /* 094 */
425 LIST_ENTRY ActiveProcessLinks; /* 098 */
426 ULONG QuotaUsage[3]; /* 0A0 */
427 ULONG QuotaPeak[3]; /* 0AC */
428 ULONG CommitCharge; /* 0B8 */
429 ULONG PeakVirtualSize; /* 0BC */
430 ULONG VirtualSize; /* 0C0 */
431 LIST_ENTRY SessionProcessLinks; /* 0C4 */
432 PVOID DebugPort; /* 0CC */
433 PVOID ExceptionPort; /* 0D0 */
434 PHANDLE_TABLE ObjectTable; /* 0D4 */
435 EX_FAST_REF Token; /* 0D8 */
436 ULONG WorkingSetPage; /* 0DC */
437 KGUARDED_MUTEX AddressCreationLock; /* 0E0 */
438 KSPIN_LOCK HyperSpaceLock; /* 100 */
439 PETHREAD ForkInProgress; /* 104 */
440 ULONG HardwareTrigger; /* 108 */
441 MM_AVL_TABLE PhysicalVadroot; /* 10C */
442 PVOID CloneRoot; /* 110 */
443 ULONG NumberOfPrivatePages; /* 114 */
444 ULONG NumberOfLockedPages; /* 118 */
445 PVOID *Win32Process; /* 11C */
446 struct _EJOB *Job; /* 120 */
447 PVOID SectionObject; /* 124 */
448 PVOID SectionBaseAddress; /* 128 */
449 PEPROCESS_QUOTA_BLOCK QuotaBlock; /* 12C */
450 PPAGEFAULT_HISTORY WorkingSetWatch; /* 130 */
451 PVOID Win32WindowStation; /* 134 */
452 HANDLE InheritedFromUniqueProcessId; /* 138 */
453 PVOID LdtInformation; /* 13C */
454 PVOID VadFreeHint; /* 140 */
455 PVOID VdmObjects; /* 144 */
456 PVOID DeviceMap; /* 148 */
457 PVOID Spare0[3]; /* 14C */
458 union
459 {
460 HARDWARE_PTE_X86 PagedirectoryPte; /* 158 */
461 ULONGLONG Filler; /* 158 */
462 };
463 ULONG Session; /* 160 */
464 CHAR ImageFileName[16]; /* 164 */
465 LIST_ENTRY JobLinks; /* 174 */
466 PVOID LockedPagesList; /* 17C */
467 LIST_ENTRY ThreadListHead; /* 184 */
468 PVOID SecurityPort; /* 188 */
469 PVOID PaeTop; /* 18C */
470 ULONG ActiveThreds; /* 190 */
471 ACCESS_MASK GrantedAccess; /* 194 */
472 ULONG DefaultHardErrorProcessing; /* 198 */
473 NTSTATUS LastThreadExitStatus; /* 19C */
474 struct _PEB* Peb; /* 1A0 */
475 EX_FAST_REF PrefetchTrace; /* 1A4 */
476 LARGE_INTEGER ReadOperationCount; /* 1A8 */
477 LARGE_INTEGER WriteOperationCount; /* 1B0 */
478 LARGE_INTEGER OtherOperationCount; /* 1B8 */
479 LARGE_INTEGER ReadTransferCount; /* 1C0 */
480 LARGE_INTEGER WriteTransferCount; /* 1C8 */
481 LARGE_INTEGER OtherTransferCount; /* 1D0 */
482 ULONG CommitChargeLimit; /* 1D8 */
483 ULONG CommitChargePeak; /* 1DC */
484 PVOID AweInfo; /* 1E0 */
485 SE_AUDIT_PROCESS_CREATION_INFO SeAuditProcessCreationInfo; /* 1E4 */
486 MMSUPPORT Vm; /* 1E8 */
487 LIST_ENTRY MmProcessLinks; /* 230 */
488 ULONG ModifiedPageCount; /* 238 */
489 ULONG JobStatus; /* 23C */
490 union
491 {
492 struct
493 {
494 ULONG CreateReported:1;
495 ULONG NoDebugInherit:1;
496 ULONG ProcessExiting:1;
497 ULONG ProcessDelete:1;
498 ULONG Wow64SplitPages:1;
499 ULONG VmDeleted:1;
500 ULONG OutswapEnabled:1;
501 ULONG Outswapped:1;
502 ULONG ForkFailed:1;
503 ULONG Wow64VaSpace4Gb:1;
504 ULONG AddressSpaceInitialized:2;
505 ULONG SetTimerResolution:1;
506 ULONG BreakOnTermination:1;
507 ULONG SessionCreationUnderway:1;
508 ULONG WriteWatch:1;
509 ULONG ProcessInSession:1;
510 ULONG OverrideAddressSpace:1;
511 ULONG HasAddressSpace:1;
512 ULONG LaunchPrefetched:1;
513 ULONG InjectInpageErrors:1;
514 ULONG VmTopDown:1;
515 ULONG ImageNotifyDone:1;
516 ULONG PdeUpdateNeeded:1;
517 ULONG VdmAllowed:1;
518 ULONG SmapAllowed:1;
519 ULONG CreateFailed:1;
520 ULONG DefaultIoPriority:3;
521 ULONG Spare1:1;
522 ULONG Spare2:1;
523 };
524 ULONG Flags; /* 240 */
525 };
526
527 NTSTATUS ExitStatus; /* 244 */
528 USHORT NextPageColor; /* 248 */
529 union
530 {
531 struct
532 {
533 UCHAR SubSystemMinorVersion; /* 24A */
534 UCHAR SubSystemMajorVersion; /* 24B */
535 };
536 USHORT SubSystemVersion; /* 24A */
537 };
538 UCHAR PriorityClass; /* 24C */
539 MM_AVL_TABLE VadRoot; /* 250 */
540 ULONG Cookie; /* 270 */
541
542 /***************************************************************
543 * REACTOS SPECIFIC START
544 ***************************************************************/
545 /* FIXME WILL BE DEPRECATED WITH PUSHLOCK SUPPORT IN 0.3.0 */
546 KEVENT LockEvent; /* 274 */
547 ULONG LockCount; /* 284 */
548 struct _KTHREAD *LockOwner; /* 288 */
549
550 /* FIXME MOVE TO AVL TREES */
551 MADDRESS_SPACE AddressSpace; /* 28C */
552 } EPROCESS;
553 #include <poppack.h>
554
555 #include <pshpack1.h>
556 typedef struct _PS_JOB_TOKEN_FILTER
557 {
558 UINT CapturedSidCount;
559 PSID_AND_ATTRIBUTES CapturedSids;
560 UINT CapturedSidsLength;
561 UINT CapturedGroupCount;
562 PSID_AND_ATTRIBUTES CapturedGroups;
563 UINT CapturedGroupsLength;
564 UINT CapturedPrivilegeCount;
565 PLUID_AND_ATTRIBUTES CapturedPrivileges;
566 UINT CapturedPrivilegesLength;
567 } PS_JOB_TOKEN_FILTER, *PPS_JOB_TOKEN_FILTER;
568
569 typedef struct _EJOB
570 {
571 KEVENT Event;
572 LIST_ENTRY JobLinks;
573 LIST_ENTRY ProcessListHead;
574 ERESOURCE JobLock;
575 LARGE_INTEGER TotalUserTime;
576 LARGE_INTEGER TotalKernelTime;
577 LARGE_INTEGER ThisPeriodTotalUserTime;
578 LARGE_INTEGER ThisPeriodTotalKernelTime;
579 UINT TotalPageFaultCount;
580 UINT TotalProcesses;
581 UINT ActiveProcesses;
582 UINT TotalTerminatedProcesses;
583 LARGE_INTEGER PerProcessUserTimeLimit;
584 LARGE_INTEGER PerJobUserTimeLimit;
585 UINT LimitFlags;
586 UINT MinimumWorkingSetSize;
587 UINT MaximumWorkingSetSize;
588 UINT ActiveProcessLimit;
589 UINT Affinity;
590 BYTE PriorityClass;
591 UINT UIRestrictionsClass;
592 UINT SecurityLimitFlags;
593 PVOID Token;
594 PPS_JOB_TOKEN_FILTER Filter;
595 UINT EndOfJobTimeAction;
596 PVOID CompletionPort;
597 PVOID CompletionKey;
598 UINT SessionId;
599 UINT SchedulingClass;
600 ULONGLONG ReadOperationCount;
601 ULONGLONG WriteOperationCount;
602 ULONGLONG OtherOperationCount;
603 ULONGLONG ReadTransferCount;
604 ULONGLONG WriteTransferCount;
605 ULONGLONG OtherTransferCount;
606 IO_COUNTERS IoInfo;
607 UINT ProcessMemoryLimit;
608 UINT JobMemoryLimit;
609 UINT PeakProcessMemoryUsed;
610 UINT PeakJobMemoryUsed;
611 UINT CurrentJobMemoryUsed;
612 KGUARDED_MUTEX MemoryLimitsLock;
613 ULONG MemberLevel;
614 ULONG JobFlags;
615 } EJOB, *PEJOB;
616 #include <poppack.h>
617
618 typedef struct _W32_CALLOUT_DATA
619 {
620 PW32_PROCESS_CALLBACK W32ProcessCallout;
621 PW32_THREAD_CALLBACK W32ThreadCallout;
622 PVOID UserGlobalAtomTableCallout;
623 PVOID UserPowerEventCallout;
624 PVOID UserPowerStateCallout;
625 PVOID UserJobCallout;
626 PVOID NtGdiUserFlushUserBatch;
627 OB_OPEN_METHOD DesktopOpen;
628 PVOID DesktopUnmap;
629 OB_DELETE_METHOD DesktopDelete;
630 OB_OKAYTOCLOSE_METHOD WinstaOkayToClose;
631 OB_DELETE_METHOD WinStaDelete;
632 OB_PARSE_METHOD WinStaParse;
633 OB_OPEN_METHOD WinStaOpen;
634
635 /* FIXME: These are ROS-ONLY and are fixed in a future local patch */
636 OB_FIND_METHOD WinStaFind;
637 OB_OPEN_METHOD WinStaCreate;
638 OB_CREATE_METHOD DesktopCreate;
639 } W32_CALLOUT_DATA, *PW32_CALLOUT_DATA;
640
641 #endif
642
643 #endif