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