Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenpstypes.h
Go to the documentation of this file.
00001 /*++ NDK Version: 0098 00002 00003 Copyright (c) Alex Ionescu. All rights reserved. 00004 00005 Header Name: 00006 00007 pstypes.h 00008 00009 Abstract: 00010 00011 Type definitions for the Process Manager 00012 00013 Author: 00014 00015 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006 00016 00017 --*/ 00018 00019 #ifndef _PSTYPES_H 00020 #define _PSTYPES_H 00021 00022 // 00023 // Dependencies 00024 // 00025 #include <umtypes.h> 00026 #include <ldrtypes.h> 00027 #include <mmtypes.h> 00028 #include <obtypes.h> 00029 #include <rtltypes.h> 00030 #ifndef NTOS_MODE_USER 00031 #include <extypes.h> 00032 #include <setypes.h> 00033 #endif 00034 00035 #ifndef NTOS_MODE_USER 00036 00037 // 00038 // Kernel Exported Object Types 00039 // 00040 extern POBJECT_TYPE NTSYSAPI PsJobType; 00041 00042 #endif // !NTOS_MODE_USER 00043 00044 // 00045 // KUSER_SHARED_DATA location in User Mode 00046 // 00047 #define USER_SHARED_DATA (0x7FFE0000) 00048 00049 // 00050 // Global Flags 00051 // 00052 #define FLG_STOP_ON_EXCEPTION 0x00000001 00053 #define FLG_SHOW_LDR_SNAPS 0x00000002 00054 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004 00055 #define FLG_STOP_ON_HUNG_GUI 0x00000008 00056 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010 00057 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020 00058 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040 00059 #define FLG_HEAP_VALIDATE_ALL 0x00000080 00060 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100 00061 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200 00062 #define FLG_POOL_ENABLE_TAGGING 0x00000400 00063 #define FLG_HEAP_ENABLE_TAGGING 0x00000800 00064 #define FLG_USER_STACK_TRACE_DB 0x00001000 00065 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000 00066 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000 00067 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000 00068 #define FLG_IGNORE_DEBUG_PRIV 0x00010000 00069 #define FLG_ENABLE_CSRDEBUG 0x00020000 00070 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000 00071 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000 00072 #if (NTDDI_VERSION < NTDDI_WINXP) 00073 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000 00074 #else 00075 #define FLG_ENABLE_SYSTEM_CRIT_BREAKS 0x00100000 00076 #endif 00077 #define FLG_HEAP_DISABLE_COALESCING 0x00200000 00078 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000 00079 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000 00080 #define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000 00081 #define FLG_HEAP_PAGE_ALLOCS 0x02000000 00082 #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000 00083 #define FLG_VALID_BITS 0x07FFFFFF 00084 00085 // 00086 // Flags for NtCreateProcessEx 00087 // 00088 #define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001 00089 #define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002 00090 #define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004 00091 #define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008 00092 #define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010 00093 00094 // 00095 // Process priority classes 00096 // 00097 #define PROCESS_PRIORITY_CLASS_INVALID 0 00098 #define PROCESS_PRIORITY_CLASS_IDLE 1 00099 #define PROCESS_PRIORITY_CLASS_NORMAL 2 00100 #define PROCESS_PRIORITY_CLASS_HIGH 3 00101 #define PROCESS_PRIORITY_CLASS_REALTIME 4 00102 #define PROCESS_PRIORITY_CLASS_BELOW_NORMAL 5 00103 #define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL 6 00104 00105 // 00106 // NtCreateProcessEx flags 00107 // 00108 #define PS_REQUEST_BREAKAWAY 1 00109 #define PS_NO_DEBUG_INHERIT 2 00110 #define PS_INHERIT_HANDLES 4 00111 #define PS_LARGE_PAGES 8 00112 #define PS_ALL_FLAGS (PS_REQUEST_BREAKAWAY | \ 00113 PS_NO_DEBUG_INHERIT | \ 00114 PS_INHERIT_HANDLES | \ 00115 PS_LARGE_PAGES) 00116 00117 // 00118 // Process base priorities 00119 // 00120 #define PROCESS_PRIORITY_IDLE 3 00121 #define PROCESS_PRIORITY_NORMAL 8 00122 #define PROCESS_PRIORITY_NORMAL_FOREGROUND 9 00123 00124 // 00125 // Process memory priorities 00126 // 00127 #define MEMORY_PRIORITY_BACKGROUND 0 00128 #define MEMORY_PRIORITY_UNKNOWN 1 00129 #define MEMORY_PRIORITY_FOREGROUND 2 00130 00131 // 00132 // Process Priority Separation Values (OR) 00133 // 00134 #define PSP_VARIABLE_QUANTUMS 4 00135 #define PSP_LONG_QUANTUMS 16 00136 00137 #ifndef NTOS_MODE_USER 00138 // 00139 // Thread Access Types 00140 // 00141 #define THREAD_QUERY_INFORMATION 0x0040 00142 #define THREAD_SET_THREAD_TOKEN 0x0080 00143 #define THREAD_IMPERSONATE 0x0100 00144 #define THREAD_DIRECT_IMPERSONATION 0x0200 00145 00146 // 00147 // Process Access Types 00148 // 00149 #define PROCESS_TERMINATE 0x0001 00150 #define PROCESS_CREATE_THREAD 0x0002 00151 #define PROCESS_SET_SESSIONID 0x0004 00152 #define PROCESS_VM_OPERATION 0x0008 00153 #define PROCESS_VM_READ 0x0010 00154 #define PROCESS_VM_WRITE 0x0020 00155 #define PROCESS_CREATE_PROCESS 0x0080 00156 #define PROCESS_SET_QUOTA 0x0100 00157 #define PROCESS_SET_INFORMATION 0x0200 00158 #define PROCESS_QUERY_INFORMATION 0x0400 00159 #define PROCESS_SUSPEND_RESUME 0x0800 00160 #define PROCESS_QUERY_LIMITED_INFORMATION 0x1000 00161 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00162 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ 00163 SYNCHRONIZE | \ 00164 0xFFFF) 00165 #else 00166 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ 00167 SYNCHRONIZE | \ 00168 0xFFF) 00169 #endif 00170 00171 // 00172 // Thread Base Priorities 00173 // 00174 #define THREAD_BASE_PRIORITY_LOWRT 15 00175 #define THREAD_BASE_PRIORITY_MAX 2 00176 #define THREAD_BASE_PRIORITY_MIN -2 00177 #define THREAD_BASE_PRIORITY_IDLE -15 00178 00179 // 00180 // TLS Slots 00181 // 00182 #define TLS_MINIMUM_AVAILABLE 64 00183 00184 // 00185 // Job Access Types 00186 // 00187 #define JOB_OBJECT_ASSIGN_PROCESS 0x1 00188 #define JOB_OBJECT_SET_ATTRIBUTES 0x2 00189 #define JOB_OBJECT_QUERY 0x4 00190 #define JOB_OBJECT_TERMINATE 0x8 00191 #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES 0x10 00192 #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ 00193 SYNCHRONIZE | \ 00194 31) 00195 00196 // 00197 // Job Limit Flags 00198 // 00199 #define JOB_OBJECT_LIMIT_WORKINGSET 0x1 00200 #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x2 00201 #define JOB_OBJECT_LIMIT_JOB_TIME 0x4 00202 #define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x8 00203 #define JOB_OBJECT_LIMIT_AFFINITY 0x10 00204 #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x20 00205 #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x40 00206 #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x80 00207 #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x100 00208 #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x200 00209 #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x400 00210 #define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x800 00211 #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x1000 00212 #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x2000 00213 00214 // 00215 // Cross Thread Flags 00216 // 00217 #define CT_TERMINATED_BIT 0x1 00218 #define CT_DEAD_THREAD_BIT 0x2 00219 #define CT_HIDE_FROM_DEBUGGER_BIT 0x4 00220 #define CT_ACTIVE_IMPERSONATION_INFO_BIT 0x8 00221 #define CT_SYSTEM_THREAD_BIT 0x10 00222 #define CT_HARD_ERRORS_ARE_DISABLED_BIT 0x20 00223 #define CT_BREAK_ON_TERMINATION_BIT 0x40 00224 #define CT_SKIP_CREATION_MSG_BIT 0x80 00225 #define CT_SKIP_TERMINATION_MSG_BIT 0x100 00226 00227 // 00228 // Same Thread Passive Flags 00229 // 00230 #define STP_ACTIVE_EX_WORKER_BIT 0x1 00231 #define STP_EX_WORKER_CAN_WAIT_USER_BIT 0x2 00232 #define STP_MEMORY_MAKER_BIT 0x4 00233 #define STP_KEYED_EVENT_IN_USE_BIT 0x8 00234 00235 // 00236 // Same Thread APC Flags 00237 // 00238 #define STA_LPC_RECEIVED_MSG_ID_VALID_BIT 0x1 00239 #define STA_LPC_EXIT_THREAD_CALLED_BIT 0x2 00240 #define STA_ADDRESS_SPACE_OWNER_BIT 0x4 00241 #define STA_OWNS_WORKING_SET_BITS 0x1F8 00242 00243 // 00244 // Kernel Process flags (maybe in ketypes.h?) 00245 // 00246 #define KPSF_AUTO_ALIGNMENT_BIT 0 00247 #define KPSF_DISABLE_BOOST_BIT 1 00248 00249 // 00250 // Process Flags 00251 // 00252 #define PSF_CREATE_REPORTED_BIT 0x1 00253 #define PSF_NO_DEBUG_INHERIT_BIT 0x2 00254 #define PSF_PROCESS_EXITING_BIT 0x4 00255 #define PSF_PROCESS_DELETE_BIT 0x8 00256 #define PSF_WOW64_SPLIT_PAGES_BIT 0x10 00257 #define PSF_VM_DELETED_BIT 0x20 00258 #define PSF_OUTSWAP_ENABLED_BIT 0x40 00259 #define PSF_OUTSWAPPED_BIT 0x80 00260 #define PSF_FORK_FAILED_BIT 0x100 00261 #define PSF_WOW64_VA_SPACE_4GB_BIT 0x200 00262 #define PSF_ADDRESS_SPACE_INITIALIZED_BIT 0x400 00263 #define PSF_SET_TIMER_RESOLUTION_BIT 0x1000 00264 #define PSF_BREAK_ON_TERMINATION_BIT 0x2000 00265 #define PSF_SESSION_CREATION_UNDERWAY_BIT 0x4000 00266 #define PSF_WRITE_WATCH_BIT 0x8000 00267 #define PSF_PROCESS_IN_SESSION_BIT 0x10000 00268 #define PSF_OVERRIDE_ADDRESS_SPACE_BIT 0x20000 00269 #define PSF_HAS_ADDRESS_SPACE_BIT 0x40000 00270 #define PSF_LAUNCH_PREFETCHED_BIT 0x80000 00271 #define PSF_INJECT_INPAGE_ERRORS_BIT 0x100000 00272 #define PSF_VM_TOP_DOWN_BIT 0x200000 00273 #define PSF_IMAGE_NOTIFY_DONE_BIT 0x400000 00274 #define PSF_PDE_UPDATE_NEEDED_BIT 0x800000 00275 #define PSF_VDM_ALLOWED_BIT 0x1000000 00276 #define PSF_SWAP_ALLOWED_BIT 0x2000000 00277 #define PSF_CREATE_FAILED_BIT 0x4000000 00278 #define PSF_DEFAULT_IO_PRIORITY_BIT 0x8000000 00279 00280 // 00281 // Vista Process Flags 00282 // 00283 #define PSF2_PROTECTED_BIT 0x800 00284 #endif 00285 00286 // 00287 // TLS/FLS Defines 00288 // 00289 #define TLS_EXPANSION_SLOTS 1024 00290 00291 #ifdef NTOS_MODE_USER 00292 // 00293 // Thread Native Base Priorities 00294 // 00295 #define LOW_PRIORITY 0 00296 #define LOW_REALTIME_PRIORITY 16 00297 #define HIGH_PRIORITY 31 00298 #define MAXIMUM_PRIORITY 32 00299 00300 // 00301 // Current Process/Thread built-in 'special' handles 00302 // 00303 #define NtCurrentProcess() ((HANDLE)(LONG_PTR)-1) 00304 #define ZwCurrentProcess() NtCurrentProcess() 00305 #define NtCurrentThread() ((HANDLE)(LONG_PTR)-2) 00306 #define ZwCurrentThread() NtCurrentThread() 00307 00308 // 00309 // Process/Thread/Job Information Classes for NtQueryInformationProcess/Thread/Job 00310 // 00311 typedef enum _PROCESSINFOCLASS 00312 { 00313 ProcessBasicInformation, 00314 ProcessQuotaLimits, 00315 ProcessIoCounters, 00316 ProcessVmCounters, 00317 ProcessTimes, 00318 ProcessBasePriority, 00319 ProcessRaisePriority, 00320 ProcessDebugPort, 00321 ProcessExceptionPort, 00322 ProcessAccessToken, 00323 ProcessLdtInformation, 00324 ProcessLdtSize, 00325 ProcessDefaultHardErrorMode, 00326 ProcessIoPortHandlers, 00327 ProcessPooledUsageAndLimits, 00328 ProcessWorkingSetWatch, 00329 ProcessUserModeIOPL, 00330 ProcessEnableAlignmentFaultFixup, 00331 ProcessPriorityClass, 00332 ProcessWx86Information, 00333 ProcessHandleCount, 00334 ProcessAffinityMask, 00335 ProcessPriorityBoost, 00336 ProcessDeviceMap, 00337 ProcessSessionInformation, 00338 ProcessForegroundInformation, 00339 ProcessWow64Information, 00340 ProcessImageFileName, 00341 ProcessLUIDDeviceMapsEnabled, 00342 ProcessBreakOnTermination, 00343 ProcessDebugObjectHandle, 00344 ProcessDebugFlags, 00345 ProcessHandleTracing, 00346 ProcessIoPriority, 00347 ProcessExecuteFlags, 00348 ProcessTlsInformation, 00349 ProcessCookie, 00350 ProcessImageInformation, 00351 ProcessCycleTime, 00352 ProcessPagePriority, 00353 ProcessInstrumentationCallback, 00354 ProcessThreadStackAllocation, 00355 ProcessWorkingSetWatchEx, 00356 ProcessImageFileNameWin32, 00357 ProcessImageFileMapping, 00358 ProcessAffinityUpdateMode, 00359 ProcessMemoryAllocationMode, 00360 MaxProcessInfoClass 00361 } PROCESSINFOCLASS; 00362 00363 typedef enum _THREADINFOCLASS 00364 { 00365 ThreadBasicInformation, 00366 ThreadTimes, 00367 ThreadPriority, 00368 ThreadBasePriority, 00369 ThreadAffinityMask, 00370 ThreadImpersonationToken, 00371 ThreadDescriptorTableEntry, 00372 ThreadEnableAlignmentFaultFixup, 00373 ThreadEventPair_Reusable, 00374 ThreadQuerySetWin32StartAddress, 00375 ThreadZeroTlsCell, 00376 ThreadPerformanceCount, 00377 ThreadAmILastThread, 00378 ThreadIdealProcessor, 00379 ThreadPriorityBoost, 00380 ThreadSetTlsArrayAddress, 00381 ThreadIsIoPending, 00382 ThreadHideFromDebugger, 00383 ThreadBreakOnTermination, 00384 ThreadSwitchLegacyState, 00385 ThreadIsTerminated, 00386 ThreadLastSystemCall, 00387 ThreadIoPriority, 00388 ThreadCycleTime, 00389 ThreadPagePriority, 00390 ThreadActualBasePriority, 00391 ThreadTebInformation, 00392 ThreadCSwitchMon, 00393 MaxThreadInfoClass 00394 } THREADINFOCLASS; 00395 00396 #else 00397 00398 typedef enum _PSPROCESSPRIORITYMODE 00399 { 00400 PsProcessPriorityForeground, 00401 PsProcessPriorityBackground, 00402 PsProcessPrioritySpinning 00403 } PSPROCESSPRIORITYMODE; 00404 00405 typedef enum _JOBOBJECTINFOCLASS 00406 { 00407 JobObjectBasicAccountingInformation = 1, 00408 JobObjectBasicLimitInformation, 00409 JobObjectBasicProcessIdList, 00410 JobObjectBasicUIRestrictions, 00411 JobObjectSecurityLimitInformation, 00412 JobObjectEndOfJobTimeInformation, 00413 JobObjectAssociateCompletionPortInformation, 00414 JobObjectBasicAndIoAccountingInformation, 00415 JobObjectExtendedLimitInformation, 00416 JobObjectJobSetInformation, 00417 MaxJobObjectInfoClass 00418 } JOBOBJECTINFOCLASS; 00419 00420 // 00421 // Power Event Events for Win32K Power Event Callback 00422 // 00423 typedef enum _PSPOWEREVENTTYPE 00424 { 00425 PsW32FullWake = 0, 00426 PsW32EventCode = 1, 00427 PsW32PowerPolicyChanged = 2, 00428 PsW32SystemPowerState = 3, 00429 PsW32SystemTime = 4, 00430 PsW32DisplayState = 5, 00431 PsW32CapabilitiesChanged = 6, 00432 PsW32SetStateFailed = 7, 00433 PsW32GdiOff = 8, 00434 PsW32GdiOn = 9, 00435 PsW32GdiPrepareResumeUI = 10, 00436 PsW32GdiOffRequest = 11, 00437 PsW32MonitorOff = 12, 00438 } PSPOWEREVENTTYPE; 00439 00440 // 00441 // Power State Tasks for Win32K Power State Callback 00442 // 00443 typedef enum _POWERSTATETASK 00444 { 00445 PowerState_BlockSessionSwitch = 0, 00446 PowerState_Init = 1, 00447 PowerState_QueryApps = 2, 00448 PowerState_QueryServices = 3, 00449 PowerState_QueryAppsFailed = 4, 00450 PowerState_QueryServicesFailed = 5, 00451 PowerState_SuspendApps = 6, 00452 PowerState_SuspendServices = 7, 00453 PowerState_ShowUI = 8, 00454 PowerState_NotifyWL = 9, 00455 PowerState_ResumeApps = 10, 00456 PowerState_ResumeServices = 11, 00457 PowerState_UnBlockSessionSwitch = 12, 00458 PowerState_End = 13, 00459 PowerState_BlockInput = 14, 00460 PowerState_UnblockInput = 15, 00461 } POWERSTATETASK; 00462 00463 // 00464 // Win32K Job Callback Types 00465 // 00466 typedef enum _PSW32JOBCALLOUTTYPE 00467 { 00468 PsW32JobCalloutSetInformation = 0, 00469 PsW32JobCalloutAddProcess = 1, 00470 PsW32JobCalloutTerminate = 2, 00471 } PSW32JOBCALLOUTTYPE; 00472 00473 // 00474 // Win32K Thread Callback Types 00475 // 00476 typedef enum _PSW32THREADCALLOUTTYPE 00477 { 00478 PsW32ThreadCalloutInitialize, 00479 PsW32ThreadCalloutExit, 00480 } PSW32THREADCALLOUTTYPE; 00481 00482 // 00483 // Declare empty structure definitions so that they may be referenced by 00484 // routines before they are defined 00485 // 00486 struct _W32THREAD; 00487 struct _W32PROCESS; 00488 //struct _ETHREAD; 00489 struct _WIN32_POWEREVENT_PARAMETERS; 00490 struct _WIN32_POWERSTATE_PARAMETERS; 00491 struct _WIN32_JOBCALLOUT_PARAMETERS; 00492 struct _WIN32_OPENMETHOD_PARAMETERS; 00493 struct _WIN32_OKAYTOCLOSEMETHOD_PARAMETERS; 00494 struct _WIN32_CLOSEMETHOD_PARAMETERS; 00495 struct _WIN32_DELETEMETHOD_PARAMETERS; 00496 struct _WIN32_PARSEMETHOD_PARAMETERS; 00497 00498 // 00499 // Win32K Process and Thread Callbacks 00500 // 00501 typedef 00502 NTSTATUS 00503 (NTAPI *PKWIN32_PROCESS_CALLOUT)( 00504 struct _EPROCESS *Process, 00505 BOOLEAN Create 00506 ); 00507 00508 typedef 00509 NTSTATUS 00510 (NTAPI *PKWIN32_THREAD_CALLOUT)( 00511 struct _ETHREAD *Thread, 00512 PSW32THREADCALLOUTTYPE Type 00513 ); 00514 00515 typedef 00516 NTSTATUS 00517 (NTAPI *PKWIN32_GLOBALATOMTABLE_CALLOUT)( 00518 VOID 00519 ); 00520 00521 typedef 00522 NTSTATUS 00523 (NTAPI *PKWIN32_POWEREVENT_CALLOUT)( 00524 struct _WIN32_POWEREVENT_PARAMETERS *Parameters 00525 ); 00526 00527 typedef 00528 NTSTATUS 00529 (NTAPI *PKWIN32_POWERSTATE_CALLOUT)( 00530 struct _WIN32_POWERSTATE_PARAMETERS *Parameters 00531 ); 00532 00533 typedef 00534 NTSTATUS 00535 (NTAPI *PKWIN32_JOB_CALLOUT)( 00536 struct _WIN32_JOBCALLOUT_PARAMETERS *Parameters 00537 ); 00538 00539 typedef 00540 NTSTATUS 00541 (NTAPI *PGDI_BATCHFLUSH_ROUTINE)( 00542 VOID 00543 ); 00544 00545 typedef 00546 NTSTATUS 00547 (NTAPI *PKWIN32_OPENMETHOD_CALLOUT)( 00548 struct _WIN32_OPENMETHOD_PARAMETERS *Parameters 00549 ); 00550 00551 typedef 00552 NTSTATUS 00553 (NTAPI *PKWIN32_OKTOCLOSEMETHOD_CALLOUT)( 00554 struct _WIN32_OKAYTOCLOSEMETHOD_PARAMETERS *Parameters 00555 ); 00556 00557 typedef 00558 NTSTATUS 00559 (NTAPI *PKWIN32_CLOSEMETHOD_CALLOUT)( 00560 struct _WIN32_CLOSEMETHOD_PARAMETERS *Parameters 00561 ); 00562 00563 typedef 00564 VOID 00565 (NTAPI *PKWIN32_DELETEMETHOD_CALLOUT)( 00566 struct _WIN32_DELETEMETHOD_PARAMETERS *Parameters 00567 ); 00568 00569 typedef 00570 NTSTATUS 00571 (NTAPI *PKWIN32_PARSEMETHOD_CALLOUT)( 00572 struct _WIN32_PARSEMETHOD_PARAMETERS *Parameters 00573 ); 00574 00575 typedef 00576 NTSTATUS 00577 (NTAPI *PKWIN32_WIN32DATACOLLECTION_CALLOUT)( 00578 struct _EPROCESS *Process, 00579 PVOID Callback, 00580 PVOID Context 00581 ); 00582 00583 // 00584 // Lego Callback 00585 // 00586 typedef 00587 VOID 00588 (NTAPI *PLEGO_NOTIFY_ROUTINE)( 00589 IN PKTHREAD Thread 00590 ); 00591 00592 #endif 00593 00594 typedef NTSTATUS 00595 (NTAPI *PPOST_PROCESS_INIT_ROUTINE)( 00596 VOID 00597 ); 00598 00599 // 00600 // Descriptor Table Entry Definition 00601 // 00602 #if (_M_IX86) 00603 #define _DESCRIPTOR_TABLE_ENTRY_DEFINED 00604 typedef struct _DESCRIPTOR_TABLE_ENTRY 00605 { 00606 ULONG Selector; 00607 LDT_ENTRY Descriptor; 00608 } DESCRIPTOR_TABLE_ENTRY, *PDESCRIPTOR_TABLE_ENTRY; 00609 #endif 00610 00611 // 00612 // PEB Lock Routine 00613 // 00614 typedef VOID 00615 (NTAPI *PPEBLOCKROUTINE)( 00616 PVOID PebLock 00617 ); 00618 00619 // 00620 // PEB Free Block Descriptor 00621 // 00622 typedef struct _PEB_FREE_BLOCK 00623 { 00624 struct _PEB_FREE_BLOCK* Next; 00625 ULONG Size; 00626 } PEB_FREE_BLOCK, *PPEB_FREE_BLOCK; 00627 00628 // 00629 // Initial PEB 00630 // 00631 typedef struct _INITIAL_PEB 00632 { 00633 BOOLEAN InheritedAddressSpace; 00634 BOOLEAN ReadImageFileExecOptions; 00635 BOOLEAN BeingDebugged; 00636 union 00637 { 00638 BOOLEAN BitField; 00639 #if (NTDDI_VERSION >= NTDDI_WS03) 00640 struct 00641 { 00642 BOOLEAN ImageUsesLargePages:1; 00643 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00644 BOOLEAN IsProtectedProcess:1; 00645 BOOLEAN IsLegacyProcess:1; 00646 BOOLEAN SpareBits:5; 00647 #else 00648 BOOLEAN SpareBits:7; 00649 #endif 00650 }; 00651 #else 00652 BOOLEAN SpareBool; 00653 #endif 00654 }; 00655 HANDLE Mutant; 00656 } INITIAL_PEB, *PINITIAL_PEB; 00657 00658 // 00659 // Initial TEB 00660 // 00661 typedef struct _INITIAL_TEB 00662 { 00663 PVOID PreviousStackBase; 00664 PVOID PreviousStackLimit; 00665 PVOID StackBase; 00666 PVOID StackLimit; 00667 PVOID AllocatedStackBase; 00668 } INITIAL_TEB, *PINITIAL_TEB; 00669 00670 // 00671 // TEB Active Frame Structures 00672 // 00673 typedef struct _TEB_ACTIVE_FRAME_CONTEXT 00674 { 00675 ULONG Flags; 00676 LPSTR FrameName; 00677 } TEB_ACTIVE_FRAME_CONTEXT, *PTEB_ACTIVE_FRAME_CONTEXT; 00678 00679 typedef struct _TEB_ACTIVE_FRAME 00680 { 00681 ULONG Flags; 00682 struct _TEB_ACTIVE_FRAME *Previous; 00683 PTEB_ACTIVE_FRAME_CONTEXT Context; 00684 } TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME; 00685 00686 typedef struct _CLIENT_ID32 00687 { 00688 ULONG UniqueProcess; 00689 ULONG UniqueThread; 00690 } CLIENT_ID32, *PCLIENT_ID32; 00691 00692 typedef struct _CLIENT_ID64 00693 { 00694 ULONG64 UniqueProcess; 00695 ULONG64 UniqueThread; 00696 } CLIENT_ID64, *PCLIENT_ID64; 00697 00698 #if (NTDDI_VERSION < NTDDI_WS03) 00699 typedef struct _Wx86ThreadState 00700 { 00701 PULONG CallBx86Eip; 00702 PVOID DeallocationCpu; 00703 BOOLEAN UseKnownWx86Dll; 00704 CHAR OleStubInvoked; 00705 } Wx86ThreadState, *PWx86ThreadState; 00706 #endif 00707 00708 00709 // 00710 // Process Environment Block (PEB) 00711 // Thread Environment Block (TEB) 00712 // 00713 #include "peb_teb.h" 00714 00715 #ifdef _WIN64 00716 // 00717 // Explicit 32 bit PEB/TEB 00718 // 00719 #define EXPLICIT_32BIT 00720 #include "peb_teb.h" 00721 #undef EXPLICIT_32BIT 00722 00723 // 00724 // Explicit 64 bit PEB/TEB 00725 // 00726 #define EXPLICIT_64BIT 00727 #include "peb_teb.h" 00728 #undef EXPLICIT_64BIT 00729 #endif 00730 00731 #ifdef NTOS_MODE_USER 00732 00733 // 00734 // Process Information Structures for NtQueryProcessInformation 00735 // 00736 typedef struct _PROCESS_BASIC_INFORMATION 00737 { 00738 NTSTATUS ExitStatus; 00739 PPEB PebBaseAddress; 00740 ULONG_PTR AffinityMask; 00741 KPRIORITY BasePriority; 00742 ULONG_PTR UniqueProcessId; 00743 ULONG_PTR InheritedFromUniqueProcessId; 00744 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; 00745 00746 typedef struct _PROCESS_ACCESS_TOKEN 00747 { 00748 HANDLE Token; 00749 HANDLE Thread; 00750 } PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; 00751 00752 typedef struct _PROCESS_DEVICEMAP_INFORMATION 00753 { 00754 union 00755 { 00756 struct 00757 { 00758 HANDLE DirectoryHandle; 00759 } Set; 00760 struct 00761 { 00762 ULONG DriveMap; 00763 UCHAR DriveType[32]; 00764 } Query; 00765 }; 00766 } PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION; 00767 00768 typedef struct _KERNEL_USER_TIMES 00769 { 00770 LARGE_INTEGER CreateTime; 00771 LARGE_INTEGER ExitTime; 00772 LARGE_INTEGER KernelTime; 00773 LARGE_INTEGER UserTime; 00774 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; 00775 00776 typedef struct _POOLED_USAGE_AND_LIMITS 00777 { 00778 SIZE_T PeakPagedPoolUsage; 00779 SIZE_T PagedPoolUsage; 00780 SIZE_T PagedPoolLimit; 00781 SIZE_T PeakNonPagedPoolUsage; 00782 SIZE_T NonPagedPoolUsage; 00783 SIZE_T NonPagedPoolLimit; 00784 SIZE_T PeakPagefileUsage; 00785 SIZE_T PagefileUsage; 00786 SIZE_T PagefileLimit; 00787 } POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS; 00788 00789 typedef struct _PROCESS_SESSION_INFORMATION 00790 { 00791 ULONG SessionId; 00792 } PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; 00793 00794 #endif 00795 00796 typedef struct _PROCESS_PRIORITY_CLASS 00797 { 00798 BOOLEAN Foreground; 00799 UCHAR PriorityClass; 00800 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS; 00801 00802 typedef struct _PROCESS_FOREGROUND_BACKGROUND 00803 { 00804 BOOLEAN Foreground; 00805 } PROCESS_FOREGROUND_BACKGROUND, *PPROCESS_FOREGROUND_BACKGROUND; 00806 00807 // 00808 // Thread Information Structures for NtQueryProcessInformation 00809 // 00810 typedef struct _THREAD_BASIC_INFORMATION 00811 { 00812 NTSTATUS ExitStatus; 00813 PVOID TebBaseAddress; 00814 CLIENT_ID ClientId; 00815 KAFFINITY AffinityMask; 00816 KPRIORITY Priority; 00817 KPRIORITY BasePriority; 00818 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; 00819 00820 #ifndef NTOS_MODE_USER 00821 00822 // 00823 // Job Set Array 00824 // 00825 typedef struct _JOB_SET_ARRAY 00826 { 00827 HANDLE JobHandle; 00828 ULONG MemberLevel; 00829 ULONG Flags; 00830 } JOB_SET_ARRAY, *PJOB_SET_ARRAY; 00831 00832 // 00833 // EPROCESS Quota Structures 00834 // 00835 typedef struct _EPROCESS_QUOTA_ENTRY 00836 { 00837 SIZE_T Usage; 00838 SIZE_T Limit; 00839 SIZE_T Peak; 00840 SIZE_T Return; 00841 } EPROCESS_QUOTA_ENTRY, *PEPROCESS_QUOTA_ENTRY; 00842 00843 typedef struct _EPROCESS_QUOTA_BLOCK 00844 { 00845 EPROCESS_QUOTA_ENTRY QuotaEntry[3]; 00846 LIST_ENTRY QuotaList; 00847 ULONG ReferenceCount; 00848 ULONG ProcessCount; 00849 } EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK; 00850 00851 // 00852 // Process Pagefault History 00853 // 00854 typedef struct _PAGEFAULT_HISTORY 00855 { 00856 ULONG CurrentIndex; 00857 ULONG MapIndex; 00858 KSPIN_LOCK SpinLock; 00859 PVOID Reserved; 00860 PROCESS_WS_WATCH_INFORMATION WatchInfo[1]; 00861 } PAGEFAULT_HISTORY, *PPAGEFAULT_HISTORY; 00862 00863 // 00864 // Process Impersonation Information 00865 // 00866 typedef struct _PS_IMPERSONATION_INFORMATION 00867 { 00868 PACCESS_TOKEN Token; 00869 BOOLEAN CopyOnOpen; 00870 BOOLEAN EffectiveOnly; 00871 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 00872 } PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION; 00873 00874 // 00875 // Process Termination Port 00876 // 00877 typedef struct _TERMINATION_PORT 00878 { 00879 struct _TERMINATION_PORT *Next; 00880 PVOID Port; 00881 } TERMINATION_PORT, *PTERMINATION_PORT; 00882 00883 // 00884 // Per-Process APC Rate Limiting 00885 // 00886 typedef struct _PSP_RATE_APC 00887 { 00888 union 00889 { 00890 SINGLE_LIST_ENTRY NextApc; 00891 ULONGLONG ExcessCycles; 00892 }; 00893 ULONGLONG TargetGEneration; 00894 KAPC RateApc; 00895 } PSP_RATE_APC, *PPSP_RATE_APC; 00896 00897 // 00898 // Executive Thread (ETHREAD) 00899 // 00900 typedef struct _ETHREAD 00901 { 00902 KTHREAD Tcb; 00903 LARGE_INTEGER CreateTime; 00904 union 00905 { 00906 LARGE_INTEGER ExitTime; 00907 LIST_ENTRY LpcReplyChain; 00908 LIST_ENTRY KeyedWaitChain; 00909 }; 00910 union 00911 { 00912 NTSTATUS ExitStatus; 00913 PVOID OfsChain; 00914 }; 00915 LIST_ENTRY PostBlockList; 00916 union 00917 { 00918 struct _TERMINATION_PORT *TerminationPort; 00919 struct _ETHREAD *ReaperLink; 00920 PVOID KeyedWaitValue; 00921 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00922 PVOID Win32StartParameter; 00923 #endif 00924 }; 00925 KSPIN_LOCK ActiveTimerListLock; 00926 LIST_ENTRY ActiveTimerListHead; 00927 CLIENT_ID Cid; 00928 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00929 KSEMAPHORE KeyedWaitSemaphore; 00930 #else 00931 union 00932 { 00933 KSEMAPHORE LpcReplySemaphore; 00934 KSEMAPHORE KeyedWaitSemaphore; 00935 }; 00936 union 00937 { 00938 PVOID LpcReplyMessage; 00939 PVOID LpcWaitingOnPort; 00940 }; 00941 #endif 00942 PPS_IMPERSONATION_INFORMATION ImpersonationInfo; 00943 LIST_ENTRY IrpList; 00944 ULONG_PTR TopLevelIrp; 00945 PDEVICE_OBJECT DeviceToVerify; 00946 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00947 PPSP_RATE_APC RateControlApc; 00948 #else 00949 struct _EPROCESS *ThreadsProcess; 00950 #endif 00951 PVOID Win32StartAddress; 00952 union 00953 { 00954 PKSTART_ROUTINE StartAddress; 00955 ULONG LpcReceivedMessageId; 00956 }; 00957 LIST_ENTRY ThreadListEntry; 00958 EX_RUNDOWN_REF RundownProtect; 00959 EX_PUSH_LOCK ThreadLock; 00960 #if (NTDDI_VERSION < NTDDI_LONGHORN) 00961 ULONG LpcReplyMessageId; 00962 #endif 00963 ULONG ReadClusterSize; 00964 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00965 ULONG SpareUlong0; 00966 #else 00967 ACCESS_MASK GrantedAccess; 00968 #endif 00969 union 00970 { 00971 struct 00972 { 00973 ULONG Terminated:1; 00974 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00975 ULONG ThreadInserted:1; 00976 #else 00977 ULONG DeadThread:1; 00978 #endif 00979 ULONG HideFromDebugger:1; 00980 ULONG ActiveImpersonationInfo:1; 00981 ULONG SystemThread:1; 00982 ULONG HardErrorsAreDisabled:1; 00983 ULONG BreakOnTermination:1; 00984 ULONG SkipCreationMsg:1; 00985 ULONG SkipTerminationMsg:1; 00986 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00987 ULONG CreateMsgSent:1; 00988 ULONG ThreadIoPriority:3; 00989 ULONG ThreadPagePriority:3; 00990 ULONG PendingRatecontrol:1; 00991 #endif 00992 }; 00993 ULONG CrossThreadFlags; 00994 }; 00995 union 00996 { 00997 struct 00998 { 00999 ULONG ActiveExWorker:1; 01000 ULONG ExWorkerCanWaitUser:1; 01001 ULONG MemoryMaker:1; 01002 ULONG KeyedEventInUse:1; 01003 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01004 ULONG RateApcState:2; 01005 #endif 01006 }; 01007 ULONG SameThreadPassiveFlags; 01008 }; 01009 union 01010 { 01011 struct 01012 { 01013 ULONG LpcReceivedMsgIdValid:1; 01014 ULONG LpcExitThreadCalled:1; 01015 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01016 ULONG Spare:1; 01017 #else 01018 ULONG AddressSpaceOwner:1; 01019 #endif 01020 ULONG OwnsProcessWorkingSetExclusive:1; 01021 ULONG OwnsProcessWorkingSetShared:1; 01022 ULONG OwnsSystemWorkingSetExclusive:1; 01023 ULONG OwnsSystemWorkingSetShared:1; 01024 ULONG OwnsSessionWorkingSetExclusive:1; 01025 ULONG OwnsSessionWorkingSetShared:1; 01026 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01027 ULONG SupressSymbolLoad:1; 01028 ULONG Spare1:3; 01029 ULONG PriorityRegionActive:4; 01030 #else 01031 ULONG ApcNeeded:1; 01032 #endif 01033 }; 01034 ULONG SameThreadApcFlags; 01035 }; 01036 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01037 UCHAR CacheManagerActive; 01038 #else 01039 UCHAR ForwardClusterOnly; 01040 #endif 01041 UCHAR DisablePageFaultClustering; 01042 UCHAR ActiveFaultCount; 01043 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01044 ULONG AlpcMessageId; 01045 union 01046 { 01047 PVOID AlpcMessage; 01048 ULONG AlpcReceiveAttributeSet; 01049 }; 01050 LIST_ENTRY AlpcWaitListEntry; 01051 KSEMAPHORE AlpcWaitSemaphore; 01052 ULONG CacheManagerCount; 01053 #endif 01054 } ETHREAD; 01055 01056 // 01057 // Executive Process (EPROCESS) 01058 // 01059 typedef struct _EPROCESS 01060 { 01061 KPROCESS Pcb; 01062 EX_PUSH_LOCK ProcessLock; 01063 LARGE_INTEGER CreateTime; 01064 LARGE_INTEGER ExitTime; 01065 EX_RUNDOWN_REF RundownProtect; 01066 HANDLE UniqueProcessId; 01067 LIST_ENTRY ActiveProcessLinks; 01068 SIZE_T QuotaUsage[3]; /* 0=PagedPool, 1=NonPagedPool, 2=Pagefile */ 01069 SIZE_T QuotaPeak[3]; /* ditto */ 01070 SIZE_T CommitCharge; 01071 SIZE_T PeakVirtualSize; 01072 SIZE_T VirtualSize; 01073 LIST_ENTRY SessionProcessLinks; 01074 PVOID DebugPort; 01075 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01076 union 01077 { 01078 PVOID ExceptionPortData; 01079 ULONG ExceptionPortValue; 01080 UCHAR ExceptionPortState:3; 01081 }; 01082 #else 01083 PVOID ExceptionPort; 01084 #endif 01085 PHANDLE_TABLE ObjectTable; 01086 EX_FAST_REF Token; 01087 PFN_NUMBER WorkingSetPage; 01088 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01089 EX_PUSH_LOCK AddressCreationLock; 01090 PETHREAD RotateInProgress; 01091 #else 01092 KGUARDED_MUTEX AddressCreationLock; 01093 KSPIN_LOCK HyperSpaceLock; 01094 #endif 01095 PETHREAD ForkInProgress; 01096 ULONG_PTR HardwareTrigger; 01097 PMM_AVL_TABLE PhysicalVadRoot; 01098 PVOID CloneRoot; 01099 PFN_NUMBER NumberOfPrivatePages; 01100 PFN_NUMBER NumberOfLockedPages; 01101 PVOID *Win32Process; 01102 struct _EJOB *Job; 01103 PVOID SectionObject; 01104 PVOID SectionBaseAddress; 01105 PEPROCESS_QUOTA_BLOCK QuotaBlock; 01106 PPAGEFAULT_HISTORY WorkingSetWatch; 01107 PVOID Win32WindowStation; 01108 HANDLE InheritedFromUniqueProcessId; 01109 PVOID LdtInformation; 01110 PVOID VadFreeHint; 01111 PVOID VdmObjects; 01112 PVOID DeviceMap; 01113 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01114 PVOID EtwDataSource; 01115 PVOID FreeTebHint; 01116 #else 01117 PVOID Spare0[3]; 01118 #endif 01119 union 01120 { 01121 HARDWARE_PTE PageDirectoryPte; 01122 ULONGLONG Filler; 01123 }; 01124 PVOID Session; 01125 CHAR ImageFileName[16]; 01126 LIST_ENTRY JobLinks; 01127 PVOID LockedPagesList; 01128 LIST_ENTRY ThreadListHead; 01129 PVOID SecurityPort; 01130 #ifdef _M_AMD64 01131 struct _WOW64_PROCESS *Wow64Process; 01132 #else 01133 PVOID PaeTop; 01134 #endif 01135 ULONG ActiveThreads; 01136 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01137 ULONG ImagePathHash; 01138 #else 01139 ACCESS_MASK GrantedAccess; 01140 #endif 01141 ULONG DefaultHardErrorProcessing; 01142 NTSTATUS LastThreadExitStatus; 01143 struct _PEB* Peb; 01144 EX_FAST_REF PrefetchTrace; 01145 LARGE_INTEGER ReadOperationCount; 01146 LARGE_INTEGER WriteOperationCount; 01147 LARGE_INTEGER OtherOperationCount; 01148 LARGE_INTEGER ReadTransferCount; 01149 LARGE_INTEGER WriteTransferCount; 01150 LARGE_INTEGER OtherTransferCount; 01151 SIZE_T CommitChargeLimit; 01152 SIZE_T CommitChargePeak; 01153 PVOID AweInfo; 01154 SE_AUDIT_PROCESS_CREATION_INFO SeAuditProcessCreationInfo; 01155 MMSUPPORT Vm; 01156 #ifdef _M_AMD64 01157 ULONG Spares[2]; 01158 #else 01159 LIST_ENTRY MmProcessLinks; 01160 #endif 01161 ULONG ModifiedPageCount; 01162 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01163 union 01164 { 01165 struct 01166 { 01167 ULONG JobNotReallyActive:1; 01168 ULONG AccountingFolded:1; 01169 ULONG NewProcessReported:1; 01170 ULONG ExitProcessReported:1; 01171 ULONG ReportCommitChanges:1; 01172 ULONG LastReportMemory:1; 01173 ULONG ReportPhysicalPageChanges:1; 01174 ULONG HandleTableRundown:1; 01175 ULONG NeedsHandleRundown:1; 01176 ULONG RefTraceEnabled:1; 01177 ULONG NumaAware:1; 01178 ULONG ProtectedProcess:1; 01179 ULONG DefaultPagePriority:3; 01180 ULONG ProcessDeleteSelf:1; 01181 ULONG ProcessVerifierTarget:1; 01182 }; 01183 ULONG Flags2; 01184 }; 01185 #else 01186 ULONG JobStatus; 01187 #endif 01188 union 01189 { 01190 struct 01191 { 01192 ULONG CreateReported:1; 01193 ULONG NoDebugInherit:1; 01194 ULONG ProcessExiting:1; 01195 ULONG ProcessDelete:1; 01196 ULONG Wow64SplitPages:1; 01197 ULONG VmDeleted:1; 01198 ULONG OutswapEnabled:1; 01199 ULONG Outswapped:1; 01200 ULONG ForkFailed:1; 01201 ULONG Wow64VaSpace4Gb:1; 01202 ULONG AddressSpaceInitialized:2; 01203 ULONG SetTimerResolution:1; 01204 ULONG BreakOnTermination:1; 01205 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01206 ULONG DeprioritizeViews:1; 01207 #else 01208 ULONG SessionCreationUnderway:1; 01209 #endif 01210 ULONG WriteWatch:1; 01211 ULONG ProcessInSession:1; 01212 ULONG OverrideAddressSpace:1; 01213 ULONG HasAddressSpace:1; 01214 ULONG LaunchPrefetched:1; 01215 ULONG InjectInpageErrors:1; 01216 ULONG VmTopDown:1; 01217 ULONG ImageNotifyDone:1; 01218 ULONG PdeUpdateNeeded:1; 01219 ULONG VdmAllowed:1; 01220 ULONG SmapAllowed:1; 01221 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01222 ULONG ProcessInserted:1; 01223 #else 01224 ULONG CreateFailed:1; 01225 #endif 01226 ULONG DefaultIoPriority:3; 01227 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01228 ULONG SparePsFlags1:2; 01229 #else 01230 ULONG Spare1:1; 01231 ULONG Spare2:1; 01232 #endif 01233 }; 01234 ULONG Flags; 01235 }; 01236 NTSTATUS ExitStatus; 01237 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 01238 USHORT Spare7; 01239 #else 01240 USHORT NextPageColor; 01241 #endif 01242 union 01243 { 01244 struct 01245 { 01246 UCHAR SubSystemMinorVersion; 01247 UCHAR SubSystemMajorVersion; 01248 }; 01249 USHORT SubSystemVersion; 01250 }; 01251 UCHAR PriorityClass; 01252 MM_AVL_TABLE VadRoot; 01253 ULONG Cookie; 01254 } EPROCESS; 01255 01256 // 01257 // Job Token Filter Data 01258 // 01259 #include <pshpack1.h> 01260 typedef struct _PS_JOB_TOKEN_FILTER 01261 { 01262 ULONG CapturedSidCount; 01263 PSID_AND_ATTRIBUTES CapturedSids; 01264 ULONG CapturedSidsLength; 01265 ULONG CapturedGroupCount; 01266 PSID_AND_ATTRIBUTES CapturedGroups; 01267 ULONG CapturedGroupsLength; 01268 ULONG CapturedPrivilegeCount; 01269 PLUID_AND_ATTRIBUTES CapturedPrivileges; 01270 ULONG CapturedPrivilegesLength; 01271 } PS_JOB_TOKEN_FILTER, *PPS_JOB_TOKEN_FILTER; 01272 01273 // 01274 // Executive Job (EJOB) 01275 // 01276 typedef struct _EJOB 01277 { 01278 KEVENT Event; 01279 LIST_ENTRY JobLinks; 01280 LIST_ENTRY ProcessListHead; 01281 ERESOURCE JobLock; 01282 LARGE_INTEGER TotalUserTime; 01283 LARGE_INTEGER TotalKernelTime; 01284 LARGE_INTEGER ThisPeriodTotalUserTime; 01285 LARGE_INTEGER ThisPeriodTotalKernelTime; 01286 ULONG TotalPageFaultCount; 01287 ULONG TotalProcesses; 01288 ULONG ActiveProcesses; 01289 ULONG TotalTerminatedProcesses; 01290 LARGE_INTEGER PerProcessUserTimeLimit; 01291 LARGE_INTEGER PerJobUserTimeLimit; 01292 ULONG LimitFlags; 01293 ULONG MinimumWorkingSetSize; 01294 ULONG MaximumWorkingSetSize; 01295 ULONG ActiveProcessLimit; 01296 ULONG Affinity; 01297 UCHAR PriorityClass; 01298 ULONG UIRestrictionsClass; 01299 ULONG SecurityLimitFlags; 01300 PVOID Token; 01301 PPS_JOB_TOKEN_FILTER Filter; 01302 ULONG EndOfJobTimeAction; 01303 PVOID CompletionPort; 01304 PVOID CompletionKey; 01305 ULONG SessionId; 01306 ULONG SchedulingClass; 01307 ULONGLONG ReadOperationCount; 01308 ULONGLONG WriteOperationCount; 01309 ULONGLONG OtherOperationCount; 01310 ULONGLONG ReadTransferCount; 01311 ULONGLONG WriteTransferCount; 01312 ULONGLONG OtherTransferCount; 01313 IO_COUNTERS IoInfo; 01314 ULONG ProcessMemoryLimit; 01315 ULONG JobMemoryLimit; 01316 ULONG PeakProcessMemoryUsed; 01317 ULONG PeakJobMemoryUsed; 01318 ULONG CurrentJobMemoryUsed; 01319 #if (NTDDI_VERSION >= NTDDI_WINXP) && (NTDDI_VERSION < NTDDI_WS03) 01320 FAST_MUTEX MemoryLimitsLock; 01321 #elif (NTDDI_VERSION >= NTDDI_WS03) && (NTDDI_VERSION < NTDDI_LONGHORN) 01322 KGUARDED_MUTEX MemoryLimitsLock; 01323 #elif (NTDDI_VERSION >= NTDDI_LONGHORN) 01324 EX_PUSH_LOCK MemoryLimitsLock; 01325 #endif 01326 LIST_ENTRY JobSetLinks; 01327 ULONG MemberLevel; 01328 ULONG JobFlags; 01329 } EJOB, *PEJOB; 01330 #include <poppack.h> 01331 01332 // 01333 // Win32K Callback Registration Data 01334 // 01335 typedef struct _WIN32_POWEREVENT_PARAMETERS 01336 { 01337 PSPOWEREVENTTYPE EventNumber; 01338 ULONG Code; 01339 } WIN32_POWEREVENT_PARAMETERS, *PWIN32_POWEREVENT_PARAMETERS; 01340 01341 typedef struct _WIN32_POWERSTATE_PARAMETERS 01342 { 01343 UCHAR Promotion; 01344 POWER_ACTION SystemAction; 01345 SYSTEM_POWER_STATE MinSystemState; 01346 ULONG Flags; 01347 POWERSTATETASK PowerStateTask; 01348 } WIN32_POWERSTATE_PARAMETERS, *PWIN32_POWERSTATE_PARAMETERS; 01349 01350 typedef struct _WIN32_JOBCALLOUT_PARAMETERS 01351 { 01352 PVOID Job; 01353 PSW32JOBCALLOUTTYPE CalloutType; 01354 PVOID Data; 01355 } WIN32_JOBCALLOUT_PARAMETERS, *PWIN32_JOBCALLOUT_PARAMETERS; 01356 01357 typedef struct _WIN32_OPENMETHOD_PARAMETERS 01358 { 01359 OB_OPEN_REASON OpenReason; 01360 PEPROCESS Process; 01361 PVOID Object; 01362 ULONG GrantedAccess; 01363 ULONG HandleCount; 01364 } WIN32_OPENMETHOD_PARAMETERS, *PWIN32_OPENMETHOD_PARAMETERS; 01365 01366 typedef struct _WIN32_OKAYTOCLOSEMETHOD_PARAMETERS 01367 { 01368 PEPROCESS Process; 01369 PVOID Object; 01370 HANDLE Handle; 01371 KPROCESSOR_MODE PreviousMode; 01372 } WIN32_OKAYTOCLOSEMETHOD_PARAMETERS, *PWIN32_OKAYTOCLOSEMETHOD_PARAMETERS; 01373 01374 typedef struct _WIN32_CLOSEMETHOD_PARAMETERS 01375 { 01376 PEPROCESS Process; 01377 PVOID Object; 01378 ACCESS_MASK AccessMask; 01379 ULONG ProcessHandleCount; 01380 ULONG SystemHandleCount; 01381 } WIN32_CLOSEMETHOD_PARAMETERS, *PWIN32_CLOSEMETHOD_PARAMETERS; 01382 01383 typedef struct _WIN32_DELETEMETHOD_PARAMETERS 01384 { 01385 PVOID Object; 01386 } WIN32_DELETEMETHOD_PARAMETERS, *PWIN32_DELETEMETHOD_PARAMETERS; 01387 01388 typedef struct _WIN32_PARSEMETHOD_PARAMETERS 01389 { 01390 PVOID ParseObject; 01391 PVOID ObjectType; 01392 PACCESS_STATE AccessState; 01393 KPROCESSOR_MODE AccessMode; 01394 ULONG Attributes; 01395 OUT PUNICODE_STRING CompleteName; 01396 PUNICODE_STRING RemainingName; 01397 PVOID Context; 01398 PSECURITY_QUALITY_OF_SERVICE SecurityQos; 01399 PVOID *Object; 01400 } WIN32_PARSEMETHOD_PARAMETERS, *PWIN32_PARSEMETHOD_PARAMETERS; 01401 01402 typedef struct _WIN32_CALLOUTS_FPNS 01403 { 01404 PKWIN32_PROCESS_CALLOUT ProcessCallout; 01405 PKWIN32_THREAD_CALLOUT ThreadCallout; 01406 PKWIN32_GLOBALATOMTABLE_CALLOUT GlobalAtomTableCallout; 01407 PKWIN32_POWEREVENT_CALLOUT PowerEventCallout; 01408 PKWIN32_POWERSTATE_CALLOUT PowerStateCallout; 01409 PKWIN32_JOB_CALLOUT JobCallout; 01410 PGDI_BATCHFLUSH_ROUTINE BatchFlushRoutine; 01411 PKWIN32_OPENMETHOD_CALLOUT DesktopOpenProcedure; 01412 PKWIN32_OKTOCLOSEMETHOD_CALLOUT DesktopOkToCloseProcedure; 01413 PKWIN32_CLOSEMETHOD_CALLOUT DesktopCloseProcedure; 01414 PKWIN32_DELETEMETHOD_CALLOUT DesktopDeleteProcedure; 01415 PKWIN32_OKTOCLOSEMETHOD_CALLOUT WindowStationOkToCloseProcedure; 01416 PKWIN32_CLOSEMETHOD_CALLOUT WindowStationCloseProcedure; 01417 PKWIN32_DELETEMETHOD_CALLOUT WindowStationDeleteProcedure; 01418 PKWIN32_PARSEMETHOD_CALLOUT WindowStationParseProcedure; 01419 PKWIN32_OPENMETHOD_CALLOUT WindowStationOpenProcedure; 01420 PKWIN32_WIN32DATACOLLECTION_CALLOUT Win32DataCollectionProcedure; 01421 } WIN32_CALLOUTS_FPNS, *PWIN32_CALLOUTS_FPNS; 01422 01423 #endif // !NTOS_MODE_USER 01424 01425 #endif // _PSTYPES_H Generated on Sun May 27 2012 04:30:59 for ReactOS by
1.7.6.1
|