Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenextypes.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 extypes.h 00008 00009 Abstract: 00010 00011 Type definitions for the Executive. 00012 00013 Author: 00014 00015 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006 00016 00017 --*/ 00018 00019 #ifndef _EXTYPES_H 00020 #define _EXTYPES_H 00021 00022 // 00023 // Dependencies 00024 // 00025 #include <umtypes.h> 00026 #include <cfg.h> 00027 #if !defined(NTOS_MODE_USER) 00028 #include <ntimage.h> 00029 #endif 00030 #include <cmtypes.h> 00031 #include <ketypes.h> 00032 #include <potypes.h> 00033 #include <lpctypes.h> 00034 #ifdef NTOS_MODE_USER 00035 #include <obtypes.h> 00036 #endif 00037 00038 // 00039 // GCC compatibility 00040 // 00041 #if defined(__GNUC__) 00042 #define __ALIGNED(n) __attribute__((aligned (n))) 00043 #elif defined(_MSC_VER) 00044 #define __ALIGNED(n) __declspec(align(n)) 00045 #else 00046 #error __ALIGNED not defined for your compiler! 00047 #endif 00048 00049 // 00050 // Rtl Atom 00051 // 00052 typedef USHORT RTL_ATOM, *PRTL_ATOM; 00053 00054 #ifndef NTOS_MODE_USER 00055 00056 // 00057 // Kernel Exported Object Types 00058 // 00059 extern POBJECT_TYPE NTSYSAPI ExDesktopObjectType; 00060 extern POBJECT_TYPE NTSYSAPI ExWindowStationObjectType; 00061 extern POBJECT_TYPE NTSYSAPI ExIoCompletionType; 00062 extern POBJECT_TYPE NTSYSAPI ExMutantObjectType; 00063 extern POBJECT_TYPE NTSYSAPI ExTimerType; 00064 00065 // 00066 // Exported NT Build Number 00067 // 00068 extern ULONG NTSYSAPI NtBuildNumber; 00069 00070 // 00071 // Invalid Handle Value Constant 00072 // 00073 #define INVALID_HANDLE_VALUE (HANDLE)-1 00074 00075 #endif 00076 00077 // 00078 // Increments 00079 // 00080 #define MUTANT_INCREMENT 1 00081 00082 // 00083 // Callback Object Access Mask 00084 // 00085 #define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001) 00086 #define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001) 00087 #define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001) 00088 #define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001) 00089 00090 // 00091 // Event Object Access Masks 00092 // 00093 #ifdef NTOS_MODE_USER 00094 #define EVENT_QUERY_STATE 0x0001 00095 00096 // 00097 // Semaphore Object Access Masks 00098 // 00099 #define SEMAPHORE_QUERY_STATE 0x0001 00100 #else 00101 00102 // 00103 // Mutant Object Access Masks 00104 // 00105 #define MUTANT_QUERY_STATE 0x0001 00106 #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ 00107 SYNCHRONIZE | \ 00108 MUTANT_QUERY_STATE) 00109 00110 #define TIMER_QUERY_STATE 0x0001 00111 #define TIMER_MODIFY_STATE 0x0002 00112 #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ 00113 SYNCHRONIZE | \ 00114 TIMER_QUERY_STATE | \ 00115 TIMER_MODIFY_STATE) 00116 #endif 00117 00118 // 00119 // Event Pair Access Masks 00120 // 00121 #define EVENT_PAIR_ALL_ACCESS 0x1F0000L 00122 00123 // 00124 // Profile Object Access Masks 00125 // 00126 #define PROFILE_CONTROL 0x0001 00127 #define PROFILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | PROFILE_CONTROL) 00128 00129 // 00130 // NtRaiseHardError-related parameters 00131 // 00132 #define MAXIMUM_HARDERROR_PARAMETERS 4 00133 #define HARDERROR_OVERRIDE_ERRORMODE 0x10000000 00134 00135 // 00136 // Pushlock bits 00137 // 00138 #define EX_PUSH_LOCK_LOCK_V ((ULONG_PTR)0x0) 00139 #define EX_PUSH_LOCK_LOCK ((ULONG_PTR)0x1) 00140 #define EX_PUSH_LOCK_WAITING ((ULONG_PTR)0x2) 00141 #define EX_PUSH_LOCK_WAKING ((ULONG_PTR)0x4) 00142 #define EX_PUSH_LOCK_MULTIPLE_SHARED ((ULONG_PTR)0x8) 00143 #define EX_PUSH_LOCK_SHARE_INC ((ULONG_PTR)0x10) 00144 #define EX_PUSH_LOCK_PTR_BITS ((ULONG_PTR)0xf) 00145 00146 // 00147 // Pushlock Wait Block Flags 00148 // 00149 #define EX_PUSH_LOCK_FLAGS_EXCLUSIVE 1 00150 #define EX_PUSH_LOCK_FLAGS_WAIT_V 1 00151 #define EX_PUSH_LOCK_FLAGS_WAIT 2 00152 00153 // 00154 // Resource (ERESOURCE) Flags 00155 // 00156 #define ResourceHasDisabledPriorityBoost 0x08 00157 00158 // 00159 // Shutdown types for NtShutdownSystem 00160 // 00161 typedef enum _SHUTDOWN_ACTION 00162 { 00163 ShutdownNoReboot, 00164 ShutdownReboot, 00165 ShutdownPowerOff 00166 } SHUTDOWN_ACTION; 00167 00168 // 00169 // Responses for NtRaiseHardError 00170 // 00171 typedef enum _HARDERROR_RESPONSE_OPTION 00172 { 00173 OptionAbortRetryIgnore, 00174 OptionOk, 00175 OptionOkCancel, 00176 OptionRetryCancel, 00177 OptionYesNo, 00178 OptionYesNoCancel, 00179 OptionShutdownSystem, 00180 OptionOkNoWait, 00181 OptionCancelTryContinue 00182 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION; 00183 00184 typedef enum _HARDERROR_RESPONSE 00185 { 00186 ResponseReturnToCaller, 00187 ResponseNotHandled, 00188 ResponseAbort, 00189 ResponseCancel, 00190 ResponseIgnore, 00191 ResponseNo, 00192 ResponseOk, 00193 ResponseRetry, 00194 ResponseYes, 00195 ResponseTryAgain, 00196 ResponseContinue 00197 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE; 00198 00199 // 00200 // System Information Classes for NtQuerySystemInformation 00201 // 00202 typedef enum _SYSTEM_INFORMATION_CLASS 00203 { 00204 SystemBasicInformation, 00205 SystemProcessorInformation, 00206 SystemPerformanceInformation, 00207 SystemTimeOfDayInformation, 00208 SystemPathInformation, 00209 SystemProcessInformation, 00210 SystemCallCountInformation, 00211 SystemDeviceInformation, 00212 SystemProcessorPerformanceInformation, 00213 SystemFlagsInformation, 00214 SystemCallTimeInformation, 00215 SystemModuleInformation, 00216 SystemLocksInformation, 00217 SystemStackTraceInformation, 00218 SystemPagedPoolInformation, 00219 SystemNonPagedPoolInformation, 00220 SystemHandleInformation, 00221 SystemObjectInformation, 00222 SystemPageFileInformation, 00223 SystemVdmInstemulInformation, 00224 SystemVdmBopInformation, 00225 SystemFileCacheInformation, 00226 SystemPoolTagInformation, 00227 SystemInterruptInformation, 00228 SystemDpcBehaviorInformation, 00229 SystemFullMemoryInformation, 00230 SystemLoadGdiDriverInformation, 00231 SystemUnloadGdiDriverInformation, 00232 SystemTimeAdjustmentInformation, 00233 SystemSummaryMemoryInformation, 00234 SystemMirrorMemoryInformation, 00235 SystemPerformanceTraceInformation, 00236 SystemObsolete0, 00237 SystemExceptionInformation, 00238 SystemCrashDumpStateInformation, 00239 SystemKernelDebuggerInformation, 00240 SystemContextSwitchInformation, 00241 SystemRegistryQuotaInformation, 00242 SystemExtendServiceTableInformation, 00243 SystemPrioritySeperation, 00244 SystemPlugPlayBusInformation, 00245 SystemDockInformation, 00246 SystemPowerInformationNative, 00247 SystemProcessorSpeedInformation, 00248 SystemCurrentTimeZoneInformation, 00249 SystemLookasideInformation, 00250 SystemTimeSlipNotification, 00251 SystemSessionCreate, 00252 SystemSessionDetach, 00253 SystemSessionInformation, 00254 SystemRangeStartInformation, 00255 SystemVerifierInformation, 00256 SystemAddVerifier, 00257 SystemSessionProcessesInformation, 00258 SystemLoadGdiDriverInSystemSpaceInformation, 00259 SystemNumaProcessorMap, 00260 SystemPrefetcherInformation, 00261 SystemExtendedProcessInformation, 00262 SystemRecommendedSharedDataAlignment, 00263 SystemComPlusPackage, 00264 SystemNumaAvailableMemory, 00265 SystemProcessorPowerInformation, 00266 SystemEmulationBasicInformation, 00267 SystemEmulationProcessorInformation, 00268 SystemExtendedHanfleInformation, 00269 SystemLostDelayedWriteInformation, 00270 SystemBigPoolInformation, 00271 SystemSessionPoolTagInformation, 00272 SystemSessionMappedViewInformation, 00273 SystemHotpatchInformation, 00274 SystemObjectSecurityMode, 00275 SystemWatchDogTimerHandler, 00276 SystemWatchDogTimerInformation, 00277 SystemLogicalProcessorInformation, 00278 SystemWow64SharedInformationObsolete, 00279 SystemRegisterFirmwareTableInformationHandler, 00280 SystemFirmwareTableInformation, 00281 SystemModuleInformationEx, 00282 SystemVerifierTriageInformation, 00283 SystemSuperfetchInformation, 00284 SystemMemoryListInformation, 00285 SystemFileCacheInformationEx, 00286 SystemThreadPriorityClientIdInformation, 00287 SystemProcessorIdleCycleTimeInformation, 00288 SystemVerifierCancellationInformation, 00289 SystemProcessorPowerInformationEx, 00290 SystemRefTraceInformation, 00291 SystemSpecialPoolInformation, 00292 SystemProcessIdInformation, 00293 SystemErrorPortInformation, 00294 SystemBootEnvironmentInformation, 00295 SystemHypervisorInformation, 00296 SystemVerifierInformationEx, 00297 SystemTimeZoneInformation, 00298 SystemImageFileExecutionOptionsInformation, 00299 SystemCoverageInformation, 00300 SystemPrefetchPathInformation, 00301 SystemVerifierFaultsInformation, 00302 MaxSystemInfoClass, 00303 } SYSTEM_INFORMATION_CLASS; 00304 00305 // 00306 // System Information Classes for NtQueryMutant 00307 // 00308 typedef enum _MUTANT_INFORMATION_CLASS 00309 { 00310 MutantBasicInformation, 00311 MutantOwnerInformation 00312 } MUTANT_INFORMATION_CLASS; 00313 00314 // 00315 // System Information Classes for NtQueryAtom 00316 // 00317 typedef enum _ATOM_INFORMATION_CLASS 00318 { 00319 AtomBasicInformation, 00320 AtomTableInformation, 00321 } ATOM_INFORMATION_CLASS; 00322 00323 // 00324 // System Information Classes for NtQueryTimer 00325 // 00326 typedef enum _TIMER_INFORMATION_CLASS 00327 { 00328 TimerBasicInformation 00329 } TIMER_INFORMATION_CLASS; 00330 00331 // 00332 // System Information Classes for NtQuerySemaphore 00333 // 00334 typedef enum _SEMAPHORE_INFORMATION_CLASS 00335 { 00336 SemaphoreBasicInformation 00337 } SEMAPHORE_INFORMATION_CLASS; 00338 00339 // 00340 // System Information Classes for NtQueryEvent 00341 // 00342 typedef enum _EVENT_INFORMATION_CLASS 00343 { 00344 EventBasicInformation 00345 } EVENT_INFORMATION_CLASS; 00346 00347 #ifdef NTOS_MODE_USER 00348 00349 // 00350 // Firmware Table Actions for SystemFirmwareTableInformation 00351 // 00352 typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION 00353 { 00354 SystemFirmwareTable_Enumerate = 0, 00355 SystemFirmwareTable_Get = 1, 00356 } SYSTEM_FIRMWARE_TABLE_ACTION, *PSYSTEM_FIRMWARE_TABLE_ACTION; 00357 00358 // 00359 // Firmware Handler Callback 00360 // 00361 struct _SYSTEM_FIRMWARE_TABLE_INFORMATION; 00362 typedef 00363 NTSTATUS 00364 (__cdecl *PFNFTH)( 00365 IN struct _SYSTEM_FIRMWARE_TABLE_INFORMATION *FirmwareTableInformation 00366 ); 00367 00368 #else 00369 00370 // 00371 // Handle Enumeration Callback 00372 // 00373 struct _HANDLE_TABLE_ENTRY; 00374 typedef BOOLEAN 00375 (NTAPI *PEX_ENUM_HANDLE_CALLBACK)( 00376 IN struct _HANDLE_TABLE_ENTRY *HandleTableEntry, 00377 IN HANDLE Handle, 00378 IN PVOID Context 00379 ); 00380 00381 // 00382 // Executive Work Queue Structures 00383 // 00384 typedef struct _EX_QUEUE_WORKER_INFO 00385 { 00386 ULONG QueueDisabled:1; 00387 ULONG MakeThreadsAsNecessary:1; 00388 ULONG WaitMode:1; 00389 ULONG WorkerCount:29; 00390 } EX_QUEUE_WORKER_INFO, *PEX_QUEUE_WORKER_INFO; 00391 00392 typedef struct _EX_WORK_QUEUE 00393 { 00394 KQUEUE WorkerQueue; 00395 LONG DynamicThreadCount; 00396 ULONG WorkItemsProcessed; 00397 ULONG WorkItemsProcessedLastPass; 00398 ULONG QueueDepthLastPass; 00399 EX_QUEUE_WORKER_INFO Info; 00400 } EX_WORK_QUEUE, *PEX_WORK_QUEUE; 00401 00402 // 00403 // Executive Fast Reference Structure 00404 // 00405 typedef struct _EX_FAST_REF 00406 { 00407 union 00408 { 00409 PVOID Object; 00410 ULONG_PTR RefCnt:3; 00411 ULONG_PTR Value; 00412 }; 00413 } EX_FAST_REF, *PEX_FAST_REF; 00414 00415 // 00416 // Executive Cache-Aware Rundown Reference Descriptor 00417 // 00418 typedef struct _EX_RUNDOWN_REF_CACHE_AWARE 00419 { 00420 PEX_RUNDOWN_REF RunRefs; 00421 PVOID PoolToFree; 00422 ULONG RunRefSize; 00423 ULONG Number; 00424 } EX_RUNDOWN_REF_CACHE_AWARE; 00425 00426 // 00427 // Executive Rundown Wait Block 00428 // 00429 typedef struct _EX_RUNDOWN_WAIT_BLOCK 00430 { 00431 ULONG_PTR Count; 00432 KEVENT WakeEvent; 00433 } EX_RUNDOWN_WAIT_BLOCK, *PEX_RUNDOWN_WAIT_BLOCK; 00434 00435 // 00436 // Executive Pushlock 00437 // 00438 #undef EX_PUSH_LOCK 00439 #undef PEX_PUSH_LOCK 00440 typedef struct _EX_PUSH_LOCK 00441 { 00442 union 00443 { 00444 struct 00445 { 00446 ULONG_PTR Locked:1; 00447 ULONG_PTR Waiting:1; 00448 ULONG_PTR Waking:1; 00449 ULONG_PTR MultipleShared:1; 00450 ULONG_PTR Shared:sizeof (ULONG_PTR) * 8 - 4; 00451 }; 00452 ULONG_PTR Value; 00453 PVOID Ptr; 00454 }; 00455 } EX_PUSH_LOCK, *PEX_PUSH_LOCK; 00456 00457 // 00458 // Executive Pushlock Wait Block 00459 // 00460 typedef __ALIGNED(16) struct _EX_PUSH_LOCK_WAIT_BLOCK 00461 { 00462 union 00463 { 00464 KGATE WakeGate; 00465 KEVENT WakeEvent; 00466 }; 00467 struct _EX_PUSH_LOCK_WAIT_BLOCK *Next; 00468 struct _EX_PUSH_LOCK_WAIT_BLOCK *Last; 00469 struct _EX_PUSH_LOCK_WAIT_BLOCK *Previous; 00470 LONG ShareCount; 00471 LONG Flags; 00472 #if DBG 00473 BOOLEAN Signaled; 00474 EX_PUSH_LOCK NewValue; 00475 EX_PUSH_LOCK OldValue; 00476 PEX_PUSH_LOCK PushLock; 00477 #endif 00478 } EX_PUSH_LOCK_WAIT_BLOCK, *PEX_PUSH_LOCK_WAIT_BLOCK; 00479 00480 // 00481 // Callback Object 00482 // 00483 typedef struct _CALLBACK_OBJECT 00484 { 00485 ULONG Signature; 00486 KSPIN_LOCK Lock; 00487 LIST_ENTRY RegisteredCallbacks; 00488 BOOLEAN AllowMultipleCallbacks; 00489 UCHAR reserved[3]; 00490 } CALLBACK_OBJECT; 00491 00492 // 00493 // Callback Handle 00494 // 00495 typedef struct _CALLBACK_REGISTRATION 00496 { 00497 LIST_ENTRY Link; 00498 PCALLBACK_OBJECT CallbackObject; 00499 PCALLBACK_FUNCTION CallbackFunction; 00500 PVOID CallbackContext; 00501 ULONG Busy; 00502 BOOLEAN UnregisterWaiting; 00503 } CALLBACK_REGISTRATION, *PCALLBACK_REGISTRATION; 00504 00505 // 00506 // Internal Callback Object 00507 // 00508 typedef struct _EX_CALLBACK_ROUTINE_BLOCK 00509 { 00510 EX_RUNDOWN_REF RundownProtect; 00511 PEX_CALLBACK_FUNCTION Function; 00512 PVOID Context; 00513 } EX_CALLBACK_ROUTINE_BLOCK, *PEX_CALLBACK_ROUTINE_BLOCK; 00514 00515 // 00516 // Internal Callback Handle 00517 // 00518 typedef struct _EX_CALLBACK 00519 { 00520 EX_FAST_REF RoutineBlock; 00521 } EX_CALLBACK, *PEX_CALLBACK; 00522 00523 // 00524 // Profile Object 00525 // 00526 typedef struct _EPROFILE 00527 { 00528 PEPROCESS Process; 00529 PVOID RangeBase; 00530 SIZE_T RangeSize; 00531 PVOID Buffer; 00532 ULONG BufferSize; 00533 ULONG BucketSize; 00534 PKPROFILE ProfileObject; 00535 PVOID LockedBufferAddress; 00536 PMDL Mdl; 00537 ULONG_PTR Segment; 00538 KPROFILE_SOURCE ProfileSource; 00539 KAFFINITY Affinity; 00540 } EPROFILE, *PEPROFILE; 00541 00542 // 00543 // Handle Table Structures 00544 // 00545 typedef struct _HANDLE_TRACE_DB_ENTRY 00546 { 00547 CLIENT_ID ClientId; 00548 HANDLE Handle; 00549 ULONG Type; 00550 PVOID StackTrace[16]; 00551 } HANDLE_TRACE_DB_ENTRY, *PHANDLE_TRACE_DB_ENTRY; 00552 00553 typedef struct _HANDLE_TRACE_DEBUG_INFO 00554 { 00555 LONG RefCount; 00556 ULONG TableSize; 00557 ULONG BitMaskFlags; 00558 FAST_MUTEX CloseCompatcionLock; 00559 ULONG CurrentStackIndex; 00560 HANDLE_TRACE_DB_ENTRY TraceDb[1]; 00561 } HANDLE_TRACE_DEBUG_INFO, *PHANDLE_TRACE_DEBUG_INFO; 00562 00563 typedef struct _HANDLE_TABLE_ENTRY_INFO 00564 { 00565 ULONG AuditMask; 00566 } HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO; 00567 00568 typedef struct _HANDLE_TABLE_ENTRY 00569 { 00570 union 00571 { 00572 PVOID Object; 00573 ULONG_PTR ObAttributes; 00574 PHANDLE_TABLE_ENTRY_INFO InfoTable; 00575 ULONG_PTR Value; 00576 }; 00577 union 00578 { 00579 ULONG GrantedAccess; 00580 struct 00581 { 00582 USHORT GrantedAccessIndex; 00583 USHORT CreatorBackTraceIndex; 00584 }; 00585 LONG NextFreeTableEntry; 00586 }; 00587 } HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY; 00588 00589 typedef struct _HANDLE_TABLE 00590 { 00591 #if (NTDDI_VERSION >= NTDDI_WINXP) 00592 ULONG_PTR TableCode; 00593 #else 00594 PHANDLE_TABLE_ENTRY **Table; 00595 #endif 00596 PEPROCESS QuotaProcess; 00597 PVOID UniqueProcessId; 00598 #if (NTDDI_VERSION >= NTDDI_WINXP) 00599 EX_PUSH_LOCK HandleTableLock[4]; 00600 LIST_ENTRY HandleTableList; 00601 EX_PUSH_LOCK HandleContentionEvent; 00602 #else 00603 ERESOURCE HandleLock; 00604 LIST_ENTRY HandleTableList; 00605 KEVENT HandleContentionEvent; 00606 #endif 00607 PHANDLE_TRACE_DEBUG_INFO DebugInfo; 00608 LONG ExtraInfoPages; 00609 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00610 union 00611 { 00612 ULONG Flags; 00613 UCHAR StrictFIFO:1; 00614 }; 00615 LONG FirstFreeHandle; 00616 PHANDLE_TABLE_ENTRY LastFreeHandleEntry; 00617 LONG HandleCount; 00618 ULONG NextHandleNeedingPool; 00619 #else 00620 ULONG FirstFree; 00621 ULONG LastFree; 00622 ULONG NextHandleNeedingPool; 00623 LONG HandleCount; 00624 union 00625 { 00626 ULONG Flags; 00627 UCHAR StrictFIFO:1; 00628 }; 00629 #endif 00630 } HANDLE_TABLE, *PHANDLE_TABLE; 00631 00632 #endif 00633 00634 // 00635 // Hard Error LPC Message 00636 // 00637 typedef struct _HARDERROR_MSG 00638 { 00639 PORT_MESSAGE h; 00640 NTSTATUS Status; 00641 LARGE_INTEGER ErrorTime; 00642 ULONG ValidResponseOptions; 00643 ULONG Response; 00644 ULONG NumberOfParameters; 00645 ULONG UnicodeStringParameterMask; 00646 ULONG_PTR Parameters[MAXIMUM_HARDERROR_PARAMETERS]; 00647 } HARDERROR_MSG, *PHARDERROR_MSG; 00648 00649 // 00650 // Information Structures for NtQueryMutant 00651 // 00652 typedef struct _MUTANT_BASIC_INFORMATION 00653 { 00654 LONG CurrentCount; 00655 BOOLEAN OwnedByCaller; 00656 BOOLEAN AbandonedState; 00657 } MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION; 00658 00659 typedef struct _MUTANT_OWNER_INFORMATION 00660 { 00661 CLIENT_ID ClientId; 00662 } MUTANT_OWNER_INFORMATION, *PMUTANT_OWNER_INFORMATION; 00663 00664 // 00665 // Information Structures for NtQueryAtom 00666 // 00667 typedef struct _ATOM_BASIC_INFORMATION 00668 { 00669 USHORT UsageCount; 00670 USHORT Flags; 00671 USHORT NameLength; 00672 WCHAR Name[1]; 00673 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION; 00674 00675 typedef struct _ATOM_TABLE_INFORMATION 00676 { 00677 ULONG NumberOfAtoms; 00678 USHORT Atoms[1]; 00679 } ATOM_TABLE_INFORMATION, *PATOM_TABLE_INFORMATION; 00680 00681 // 00682 // Information Structures for NtQueryTimer 00683 // 00684 typedef struct _TIMER_BASIC_INFORMATION 00685 { 00686 LARGE_INTEGER TimeRemaining; 00687 BOOLEAN SignalState; 00688 } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION; 00689 00690 // 00691 // Information Structures for NtQuerySemaphore 00692 // 00693 typedef struct _SEMAPHORE_BASIC_INFORMATION 00694 { 00695 LONG CurrentCount; 00696 LONG MaximumCount; 00697 } SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION; 00698 00699 // 00700 // Information Structures for NtQueryEvent 00701 // 00702 typedef struct _EVENT_BASIC_INFORMATION 00703 { 00704 EVENT_TYPE EventType; 00705 LONG EventState; 00706 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION; 00707 00708 // 00709 // Information Structures for NtQuerySystemInformation 00710 // 00711 typedef struct _SYSTEM_BASIC_INFORMATION 00712 { 00713 ULONG Reserved; 00714 ULONG TimerResolution; 00715 ULONG PageSize; 00716 ULONG NumberOfPhysicalPages; 00717 ULONG LowestPhysicalPageNumber; 00718 ULONG HighestPhysicalPageNumber; 00719 ULONG AllocationGranularity; 00720 ULONG_PTR MinimumUserModeAddress; 00721 ULONG_PTR MaximumUserModeAddress; 00722 ULONG_PTR ActiveProcessorsAffinityMask; 00723 CCHAR NumberOfProcessors; 00724 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; 00725 00726 // Class 1 00727 typedef struct _SYSTEM_PROCESSOR_INFORMATION 00728 { 00729 USHORT ProcessorArchitecture; 00730 USHORT ProcessorLevel; 00731 USHORT ProcessorRevision; 00732 USHORT Reserved; 00733 ULONG ProcessorFeatureBits; 00734 } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION; 00735 00736 // Class 2 00737 typedef struct _SYSTEM_PERFORMANCE_INFORMATION 00738 { 00739 LARGE_INTEGER IdleProcessTime; 00740 LARGE_INTEGER IoReadTransferCount; 00741 LARGE_INTEGER IoWriteTransferCount; 00742 LARGE_INTEGER IoOtherTransferCount; 00743 ULONG IoReadOperationCount; 00744 ULONG IoWriteOperationCount; 00745 ULONG IoOtherOperationCount; 00746 ULONG AvailablePages; 00747 ULONG CommittedPages; 00748 ULONG CommitLimit; 00749 ULONG PeakCommitment; 00750 ULONG PageFaultCount; 00751 ULONG CopyOnWriteCount; 00752 ULONG TransitionCount; 00753 ULONG CacheTransitionCount; 00754 ULONG DemandZeroCount; 00755 ULONG PageReadCount; 00756 ULONG PageReadIoCount; 00757 ULONG CacheReadCount; 00758 ULONG CacheIoCount; 00759 ULONG DirtyPagesWriteCount; 00760 ULONG DirtyWriteIoCount; 00761 ULONG MappedPagesWriteCount; 00762 ULONG MappedWriteIoCount; 00763 ULONG PagedPoolPages; 00764 ULONG NonPagedPoolPages; 00765 ULONG PagedPoolAllocs; 00766 ULONG PagedPoolFrees; 00767 ULONG NonPagedPoolAllocs; 00768 ULONG NonPagedPoolFrees; 00769 ULONG FreeSystemPtes; 00770 ULONG ResidentSystemCodePage; 00771 ULONG TotalSystemDriverPages; 00772 ULONG TotalSystemCodePages; 00773 ULONG NonPagedPoolLookasideHits; 00774 ULONG PagedPoolLookasideHits; 00775 ULONG Spare3Count; 00776 ULONG ResidentSystemCachePage; 00777 ULONG ResidentPagedPoolPage; 00778 ULONG ResidentSystemDriverPage; 00779 ULONG CcFastReadNoWait; 00780 ULONG CcFastReadWait; 00781 ULONG CcFastReadResourceMiss; 00782 ULONG CcFastReadNotPossible; 00783 ULONG CcFastMdlReadNoWait; 00784 ULONG CcFastMdlReadWait; 00785 ULONG CcFastMdlReadResourceMiss; 00786 ULONG CcFastMdlReadNotPossible; 00787 ULONG CcMapDataNoWait; 00788 ULONG CcMapDataWait; 00789 ULONG CcMapDataNoWaitMiss; 00790 ULONG CcMapDataWaitMiss; 00791 ULONG CcPinMappedDataCount; 00792 ULONG CcPinReadNoWait; 00793 ULONG CcPinReadWait; 00794 ULONG CcPinReadNoWaitMiss; 00795 ULONG CcPinReadWaitMiss; 00796 ULONG CcCopyReadNoWait; 00797 ULONG CcCopyReadWait; 00798 ULONG CcCopyReadNoWaitMiss; 00799 ULONG CcCopyReadWaitMiss; 00800 ULONG CcMdlReadNoWait; 00801 ULONG CcMdlReadWait; 00802 ULONG CcMdlReadNoWaitMiss; 00803 ULONG CcMdlReadWaitMiss; 00804 ULONG CcReadAheadIos; 00805 ULONG CcLazyWriteIos; 00806 ULONG CcLazyWritePages; 00807 ULONG CcDataFlushes; 00808 ULONG CcDataPages; 00809 ULONG ContextSwitches; 00810 ULONG FirstLevelTbFills; 00811 ULONG SecondLevelTbFills; 00812 ULONG SystemCalls; 00813 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; 00814 00815 // Class 3 00816 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION 00817 { 00818 LARGE_INTEGER BootTime; 00819 LARGE_INTEGER CurrentTime; 00820 LARGE_INTEGER TimeZoneBias; 00821 ULONG TimeZoneId; 00822 ULONG Reserved; 00823 #if (NTDDI_VERSION >= NTDDI_WIN2K) 00824 ULONGLONG BootTimeBias; 00825 ULONGLONG SleepTimeBias; 00826 #endif 00827 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; 00828 00829 // Class 4 00830 // This class is obsolete, please use KUSER_SHARED_DATA instead 00831 00832 // Class 5 00833 typedef struct _SYSTEM_THREAD_INFORMATION 00834 { 00835 LARGE_INTEGER KernelTime; 00836 LARGE_INTEGER UserTime; 00837 LARGE_INTEGER CreateTime; 00838 ULONG WaitTime; 00839 PVOID StartAddress; 00840 CLIENT_ID ClientId; 00841 KPRIORITY Priority; 00842 LONG BasePriority; 00843 ULONG ContextSwitches; 00844 ULONG ThreadState; 00845 ULONG WaitReason; 00846 ULONG PadPadAlignment; 00847 } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; 00848 #ifndef _WIN64 00849 C_ASSERT(sizeof(SYSTEM_THREAD_INFORMATION) == 0x40); // Must be 8-byte aligned 00850 #endif 00851 00852 typedef struct _SYSTEM_PROCESS_INFORMATION 00853 { 00854 ULONG NextEntryOffset; 00855 ULONG NumberOfThreads; 00856 LARGE_INTEGER WorkingSetPrivateSize; //VISTA 00857 ULONG HardFaultCount; //WIN7 00858 ULONG NumberOfThreadsHighWatermark; //WIN7 00859 ULONGLONG CycleTime; //WIN7 00860 LARGE_INTEGER CreateTime; 00861 LARGE_INTEGER UserTime; 00862 LARGE_INTEGER KernelTime; 00863 UNICODE_STRING ImageName; 00864 KPRIORITY BasePriority; 00865 HANDLE UniqueProcessId; 00866 HANDLE InheritedFromUniqueProcessId; 00867 ULONG HandleCount; 00868 ULONG SessionId; 00869 ULONG_PTR PageDirectoryBase; 00870 00871 // 00872 // This part corresponds to VM_COUNTERS_EX. 00873 // NOTE: *NOT* THE SAME AS VM_COUNTERS! 00874 // 00875 SIZE_T PeakVirtualSize; 00876 SIZE_T VirtualSize; 00877 ULONG PageFaultCount; 00878 SIZE_T PeakWorkingSetSize; 00879 SIZE_T WorkingSetSize; 00880 SIZE_T QuotaPeakPagedPoolUsage; 00881 SIZE_T QuotaPagedPoolUsage; 00882 SIZE_T QuotaPeakNonPagedPoolUsage; 00883 SIZE_T QuotaNonPagedPoolUsage; 00884 SIZE_T PagefileUsage; 00885 SIZE_T PeakPagefileUsage; 00886 SIZE_T PrivatePageCount; 00887 00888 // 00889 // This part corresponds to IO_COUNTERS 00890 // 00891 LARGE_INTEGER ReadOperationCount; 00892 LARGE_INTEGER WriteOperationCount; 00893 LARGE_INTEGER OtherOperationCount; 00894 LARGE_INTEGER ReadTransferCount; 00895 LARGE_INTEGER WriteTransferCount; 00896 LARGE_INTEGER OtherTransferCount; 00897 // SYSTEM_THREAD_INFORMATION TH[1]; 00898 } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; 00899 #ifndef _WIN64 00900 C_ASSERT(sizeof(SYSTEM_PROCESS_INFORMATION) == 0xB8); // Must be 8-byte aligned 00901 #endif 00902 00903 // 00904 // Class 6 00905 typedef struct _SYSTEM_CALL_COUNT_INFORMATION 00906 { 00907 ULONG Length; 00908 ULONG NumberOfTables; 00909 } SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION; 00910 00911 // Class 7 00912 typedef struct _SYSTEM_DEVICE_INFORMATION 00913 { 00914 ULONG NumberOfDisks; 00915 ULONG NumberOfFloppies; 00916 ULONG NumberOfCdRoms; 00917 ULONG NumberOfTapes; 00918 ULONG NumberOfSerialPorts; 00919 ULONG NumberOfParallelPorts; 00920 } SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION; 00921 00922 // Class 8 00923 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION 00924 { 00925 LARGE_INTEGER IdleTime; 00926 LARGE_INTEGER KernelTime; 00927 LARGE_INTEGER UserTime; 00928 LARGE_INTEGER DpcTime; 00929 LARGE_INTEGER InterruptTime; 00930 ULONG InterruptCount; 00931 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; 00932 00933 // Class 9 00934 typedef struct _SYSTEM_FLAGS_INFORMATION 00935 { 00936 ULONG Flags; 00937 } SYSTEM_FLAGS_INFORMATION, *PSYSTEM_FLAGS_INFORMATION; 00938 00939 // Class 10 00940 typedef struct _SYSTEM_CALL_TIME_INFORMATION 00941 { 00942 ULONG Length; 00943 ULONG TotalCalls; 00944 LARGE_INTEGER TimeOfCalls[1]; 00945 } SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION; 00946 00947 // Class 11 - See RTL_PROCESS_MODULES 00948 00949 // Class 12 - See RTL_PROCESS_LOCKS 00950 00951 // Class 13 - See RTL_PROCESS_BACKTRACES 00952 00953 // Class 14 - 15 00954 typedef struct _SYSTEM_POOL_ENTRY 00955 { 00956 BOOLEAN Allocated; 00957 BOOLEAN Spare0; 00958 USHORT AllocatorBackTraceIndex; 00959 ULONG Size; 00960 union 00961 { 00962 UCHAR Tag[4]; 00963 ULONG TagUlong; 00964 PVOID ProcessChargedQuota; 00965 }; 00966 } SYSTEM_POOL_ENTRY, *PSYSTEM_POOL_ENTRY; 00967 00968 typedef struct _SYSTEM_POOL_INFORMATION 00969 { 00970 SIZE_T TotalSize; 00971 PVOID FirstEntry; 00972 USHORT EntryOverhead; 00973 BOOLEAN PoolTagPresent; 00974 BOOLEAN Spare0; 00975 ULONG NumberOfEntries; 00976 SYSTEM_POOL_ENTRY Entries[1]; 00977 } SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION; 00978 00979 // Class 16 00980 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO 00981 { 00982 USHORT UniqueProcessId; 00983 USHORT CreatorBackTraceIndex; 00984 UCHAR ObjectTypeIndex; 00985 UCHAR HandleAttributes; 00986 USHORT HandleValue; 00987 PVOID Object; 00988 ULONG GrantedAccess; 00989 } SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO; 00990 00991 typedef struct _SYSTEM_HANDLE_INFORMATION 00992 { 00993 ULONG NumberOfHandles; 00994 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1]; 00995 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; 00996 00997 // Class 17 00998 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION 00999 { 01000 ULONG NextEntryOffset; 01001 ULONG NumberOfObjects; 01002 ULONG NumberOfHandles; 01003 ULONG TypeIndex; 01004 ULONG InvalidAttributes; 01005 GENERIC_MAPPING GenericMapping; 01006 ULONG ValidAccessMask; 01007 ULONG PoolType; 01008 BOOLEAN SecurityRequired; 01009 BOOLEAN WaitableObject; 01010 UNICODE_STRING TypeName; 01011 } SYSTEM_OBJECTTYPE_INFORMATION, *PSYSTEM_OBJECTTYPE_INFORMATION; 01012 01013 typedef struct _SYSTEM_OBJECT_INFORMATION 01014 { 01015 ULONG NextEntryOffset; 01016 PVOID Object; 01017 HANDLE CreatorUniqueProcess; 01018 USHORT CreatorBackTraceIndex; 01019 USHORT Flags; 01020 LONG PointerCount; 01021 LONG HandleCount; 01022 ULONG PagedPoolCharge; 01023 ULONG NonPagedPoolCharge; 01024 HANDLE ExclusiveProcessId; 01025 PVOID SecurityDescriptor; 01026 OBJECT_NAME_INFORMATION NameInfo; 01027 } SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION; 01028 01029 // Class 18 01030 typedef struct _SYSTEM_PAGEFILE_INFORMATION 01031 { 01032 ULONG NextEntryOffset; 01033 ULONG TotalSize; 01034 ULONG TotalInUse; 01035 ULONG PeakUsage; 01036 UNICODE_STRING PageFileName; 01037 } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION; 01038 01039 // Class 19 01040 typedef struct _SYSTEM_VDM_INSTEMUL_INFO 01041 { 01042 ULONG SegmentNotPresent; 01043 ULONG VdmOpcode0F; 01044 ULONG OpcodeESPrefix; 01045 ULONG OpcodeCSPrefix; 01046 ULONG OpcodeSSPrefix; 01047 ULONG OpcodeDSPrefix; 01048 ULONG OpcodeFSPrefix; 01049 ULONG OpcodeGSPrefix; 01050 ULONG OpcodeOPER32Prefix; 01051 ULONG OpcodeADDR32Prefix; 01052 ULONG OpcodeINSB; 01053 ULONG OpcodeINSW; 01054 ULONG OpcodeOUTSB; 01055 ULONG OpcodeOUTSW; 01056 ULONG OpcodePUSHF; 01057 ULONG OpcodePOPF; 01058 ULONG OpcodeINTnn; 01059 ULONG OpcodeINTO; 01060 ULONG OpcodeIRET; 01061 ULONG OpcodeINBimm; 01062 ULONG OpcodeINWimm; 01063 ULONG OpcodeOUTBimm; 01064 ULONG OpcodeOUTWimm ; 01065 ULONG OpcodeINB; 01066 ULONG OpcodeINW; 01067 ULONG OpcodeOUTB; 01068 ULONG OpcodeOUTW; 01069 ULONG OpcodeLOCKPrefix; 01070 ULONG OpcodeREPNEPrefix; 01071 ULONG OpcodeREPPrefix; 01072 ULONG OpcodeHLT; 01073 ULONG OpcodeCLI; 01074 ULONG OpcodeSTI; 01075 ULONG BopCount; 01076 } SYSTEM_VDM_INSTEMUL_INFO, *PSYSTEM_VDM_INSTEMUL_INFO; 01077 01078 // Class 20 - ULONG VDMBOPINFO 01079 01080 // Class 21 01081 typedef struct _SYSTEM_FILECACHE_INFORMATION 01082 { 01083 SIZE_T CurrentSize; 01084 SIZE_T PeakSize; 01085 ULONG PageFaultCount; 01086 SIZE_T MinimumWorkingSet; 01087 SIZE_T MaximumWorkingSet; 01088 SIZE_T CurrentSizeIncludingTransitionInPages; 01089 SIZE_T PeakSizeIncludingTransitionInPages; 01090 ULONG TransitionRePurposeCount; 01091 ULONG Flags; 01092 } SYSTEM_FILECACHE_INFORMATION, *PSYSTEM_FILECACHE_INFORMATION; 01093 01094 // Class 22 01095 typedef struct _SYSTEM_POOLTAG 01096 { 01097 union 01098 { 01099 UCHAR Tag[4]; 01100 ULONG TagUlong; 01101 }; 01102 ULONG PagedAllocs; 01103 ULONG PagedFrees; 01104 SIZE_T PagedUsed; 01105 ULONG NonPagedAllocs; 01106 ULONG NonPagedFrees; 01107 SIZE_T NonPagedUsed; 01108 } SYSTEM_POOLTAG, *PSYSTEM_POOLTAG; 01109 01110 typedef struct _SYSTEM_POOLTAG_INFORMATION 01111 { 01112 ULONG Count; 01113 SYSTEM_POOLTAG TagInfo[1]; 01114 } SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION; 01115 01116 // Class 23 01117 typedef struct _SYSTEM_INTERRUPT_INFORMATION 01118 { 01119 ULONG ContextSwitches; 01120 ULONG DpcCount; 01121 ULONG DpcRate; 01122 ULONG TimeIncrement; 01123 ULONG DpcBypassCount; 01124 ULONG ApcBypassCount; 01125 } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION; 01126 01127 // Class 24 01128 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION 01129 { 01130 ULONG Spare; 01131 ULONG DpcQueueDepth; 01132 ULONG MinimumDpcRate; 01133 ULONG AdjustDpcThreshold; 01134 ULONG IdealDpcRate; 01135 } SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION; 01136 01137 // Class 25 01138 typedef struct _SYSTEM_MEMORY_INFO 01139 { 01140 PUCHAR StringOffset; 01141 USHORT ValidCount; 01142 USHORT TransitionCount; 01143 USHORT ModifiedCount; 01144 USHORT PageTableCount; 01145 } SYSTEM_MEMORY_INFO, *PSYSTEM_MEMORY_INFO; 01146 01147 typedef struct _SYSTEM_MEMORY_INFORMATION 01148 { 01149 ULONG InfoSize; 01150 ULONG StringStart; 01151 SYSTEM_MEMORY_INFO Memory[1]; 01152 } SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION; 01153 01154 // Class 26 01155 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION 01156 { 01157 UNICODE_STRING DriverName; 01158 PVOID ImageAddress; 01159 PVOID SectionPointer; 01160 PVOID EntryPoint; 01161 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer; 01162 ULONG ImageLength; 01163 } SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION; 01164 01165 // Class 27 01166 // Not an actually class, simply a PVOID to the ImageAddress 01167 01168 // Class 28 01169 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION 01170 { 01171 ULONG TimeAdjustment; 01172 ULONG TimeIncrement; 01173 BOOLEAN Enable; 01174 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION; 01175 01176 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION 01177 { 01178 ULONG TimeAdjustment; 01179 BOOLEAN Enable; 01180 } SYSTEM_SET_TIME_ADJUST_INFORMATION, *PSYSTEM_SET_TIME_ADJUST_INFORMATION; 01181 01182 // Class 29 - Same as 25 01183 01184 // FIXME: Class 30 01185 01186 // Class 31 01187 typedef struct _SYSTEM_REF_TRACE_INFORMATION 01188 { 01189 UCHAR TraceEnable; 01190 UCHAR TracePermanent; 01191 UNICODE_STRING TraceProcessName; 01192 UNICODE_STRING TracePoolTags; 01193 } SYSTEM_REF_TRACE_INFORMATION, *PSYSTEM_REF_TRACE_INFORMATION; 01194 01195 // Class 32 - OBSOLETE 01196 01197 // Class 33 01198 typedef struct _SYSTEM_EXCEPTION_INFORMATION 01199 { 01200 ULONG AlignmentFixupCount; 01201 ULONG ExceptionDispatchCount; 01202 ULONG FloatingEmulationCount; 01203 ULONG ByteWordEmulationCount; 01204 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION; 01205 01206 // Class 34 01207 typedef struct _SYSTEM_CRASH_STATE_INFORMATION 01208 { 01209 ULONG ValidCrashDump; 01210 } SYSTEM_CRASH_STATE_INFORMATION, *PSYSTEM_CRASH_STATE_INFORMATION; 01211 01212 // Class 35 01213 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION 01214 { 01215 BOOLEAN KernelDebuggerEnabled; 01216 BOOLEAN KernelDebuggerNotPresent; 01217 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; 01218 01219 // Class 36 01220 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION 01221 { 01222 ULONG ContextSwitches; 01223 ULONG FindAny; 01224 ULONG FindLast; 01225 ULONG FindIdeal; 01226 ULONG IdleAny; 01227 ULONG IdleCurrent; 01228 ULONG IdleLast; 01229 ULONG IdleIdeal; 01230 ULONG PreemptAny; 01231 ULONG PreemptCurrent; 01232 ULONG PreemptLast; 01233 ULONG SwitchToIdle; 01234 } SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION; 01235 01236 // Class 37 01237 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION 01238 { 01239 ULONG RegistryQuotaAllowed; 01240 ULONG RegistryQuotaUsed; 01241 SIZE_T PagedPoolSize; 01242 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; 01243 01244 // Class 38 01245 // Not a structure, simply send the UNICODE_STRING 01246 01247 // Class 39 01248 // Not a structure, simply send a ULONG containing the new separation 01249 01250 // Class 40 01251 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION 01252 { 01253 ULONG BusCount; 01254 PLUGPLAY_BUS_INSTANCE BusInstance[1]; 01255 } SYSTEM_PLUGPLAY_BUS_INFORMATION, *PSYSTEM_PLUGPLAY_BUS_INFORMATION; 01256 01257 // Class 41 01258 typedef struct _SYSTEM_DOCK_INFORMATION 01259 { 01260 SYSTEM_DOCK_STATE DockState; 01261 INTERFACE_TYPE DeviceBusType; 01262 ULONG DeviceBusNumber; 01263 ULONG SlotNumber; 01264 } SYSTEM_DOCK_INFORMATION, *PSYSTEM_DOCK_INFORMATION; 01265 01266 // Class 42 01267 typedef struct _SYSTEM_POWER_INFORMATION_NATIVE 01268 { 01269 BOOLEAN SystemSuspendSupported; 01270 BOOLEAN SystemHibernateSupported; 01271 BOOLEAN ResumeTimerSupportsSuspend; 01272 BOOLEAN ResumeTimerSupportsHibernate; 01273 BOOLEAN LidSupported; 01274 BOOLEAN TurboSettingSupported; 01275 BOOLEAN TurboMode; 01276 BOOLEAN SystemAcOrDc; 01277 BOOLEAN PowerDownDisabled; 01278 LARGE_INTEGER SpindownDrives; 01279 } SYSTEM_POWER_INFORMATION_NATIVE, *PSYSTEM_POWER_INFORMATION_NATIVE; 01280 01281 // Class 43 01282 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION 01283 { 01284 PNP_VETO_TYPE VetoType; 01285 UNICODE_STRING VetoDriver; 01286 } SYSTEM_LEGACY_DRIVER_INFORMATION, *PSYSTEM_LEGACY_DRIVER_INFORMATION; 01287 01288 // Class 44 01289 //typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION; 01290 01291 // Class 45 01292 typedef struct _SYSTEM_LOOKASIDE_INFORMATION 01293 { 01294 USHORT CurrentDepth; 01295 USHORT MaximumDepth; 01296 ULONG TotalAllocates; 01297 ULONG AllocateMisses; 01298 ULONG TotalFrees; 01299 ULONG FreeMisses; 01300 ULONG Type; 01301 ULONG Tag; 01302 ULONG Size; 01303 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION; 01304 01305 // Class 46 01306 // Not a structure. Only a HANDLE for the SlipEvent; 01307 01308 // Class 47 01309 // Not a structure. Only a ULONG for the SessionId; 01310 01311 // Class 48 01312 // Not a structure. Only a ULONG for the SessionId; 01313 01314 // FIXME: Class 49 01315 01316 // Class 50 01317 // Not a structure. Only a ULONG_PTR for the SystemRangeStart 01318 01319 // Class 51 01320 typedef struct _SYSTEM_VERIFIER_INFORMATION 01321 { 01322 ULONG NextEntryOffset; 01323 ULONG Level; 01324 UNICODE_STRING DriverName; 01325 ULONG RaiseIrqls; 01326 ULONG AcquireSpinLocks; 01327 ULONG SynchronizeExecutions; 01328 ULONG AllocationsAttempted; 01329 ULONG AllocationsSucceeded; 01330 ULONG AllocationsSucceededSpecialPool; 01331 ULONG AllocationsWithNoTag; 01332 ULONG TrimRequests; 01333 ULONG Trims; 01334 ULONG AllocationsFailed; 01335 ULONG AllocationsFailedDeliberately; 01336 ULONG Loads; 01337 ULONG Unloads; 01338 ULONG UnTrackedPool; 01339 ULONG CurrentPagedPoolAllocations; 01340 ULONG CurrentNonPagedPoolAllocations; 01341 ULONG PeakPagedPoolAllocations; 01342 ULONG PeakNonPagedPoolAllocations; 01343 SIZE_T PagedPoolUsageInBytes; 01344 SIZE_T NonPagedPoolUsageInBytes; 01345 SIZE_T PeakPagedPoolUsageInBytes; 01346 SIZE_T PeakNonPagedPoolUsageInBytes; 01347 } SYSTEM_VERIFIER_INFORMATION, *PSYSTEM_VERIFIER_INFORMATION; 01348 01349 // FIXME: Class 52 01350 01351 // Class 53 01352 typedef struct _SYSTEM_SESSION_PROCESS_INFORMATION 01353 { 01354 ULONG SessionId; 01355 ULONG SizeOfBuf; 01356 PVOID Buffer; // Same format as in SystemProcessInformation 01357 } SYSTEM_SESSION_PROCESS_INFORMATION, *PSYSTEM_SESSION_PROCESS_INFORMATION; 01358 01359 // FIXME: Class 54-97 01360 01361 // 01362 // Hotpatch flags 01363 // 01364 #define RTL_HOTPATCH_SUPPORTED_FLAG 0x01 01365 #define RTL_HOTPATCH_SWAP_OBJECT_NAMES 0x08 << 24 01366 #define RTL_HOTPATCH_SYNC_RENAME_FILES 0x10 << 24 01367 #define RTL_HOTPATCH_PATCH_USER_MODE 0x20 << 24 01368 #define RTL_HOTPATCH_REMAP_SYSTEM_DLL 0x40 << 24 01369 #define RTL_HOTPATCH_PATCH_KERNEL_MODE 0x80 << 24 01370 01371 01372 // Class 69 01373 typedef struct _SYSTEM_HOTPATCH_CODE_INFORMATION 01374 { 01375 ULONG Flags; 01376 ULONG InfoSize; 01377 union 01378 { 01379 struct 01380 { 01381 ULONG Foo; 01382 } CodeInfo; 01383 struct 01384 { 01385 USHORT NameOffset; 01386 USHORT NameLength; 01387 } KernelInfo; 01388 struct 01389 { 01390 USHORT NameOffset; 01391 USHORT NameLength; 01392 USHORT TargetNameOffset; 01393 USHORT TargetNameLength; 01394 UCHAR PatchingFinished; 01395 } UserModeInfo; 01396 struct 01397 { 01398 USHORT NameOffset; 01399 USHORT NameLength; 01400 USHORT TargetNameOffset; 01401 USHORT TargetNameLength; 01402 UCHAR PatchingFinished; 01403 NTSTATUS ReturnCode; 01404 HANDLE TargetProcess; 01405 } InjectionInfo; 01406 struct 01407 { 01408 HANDLE FileHandle1; 01409 PIO_STATUS_BLOCK IoStatusBlock1; 01410 PVOID RenameInformation1; 01411 PVOID RenameInformationLength1; 01412 HANDLE FileHandle2; 01413 PIO_STATUS_BLOCK IoStatusBlock2; 01414 PVOID RenameInformation2; 01415 PVOID RenameInformationLength2; 01416 } RenameInfo; 01417 struct 01418 { 01419 HANDLE ParentDirectory; 01420 HANDLE ObjectHandle1; 01421 HANDLE ObjectHandle2; 01422 } AtomicSwap; 01423 }; 01424 } SYSTEM_HOTPATCH_CODE_INFORMATION, *PSYSTEM_HOTPATCH_CODE_INFORMATION; 01425 01426 // 01427 // Class 75 01428 // 01429 #ifdef NTOS_MODE_USER 01430 typedef struct _SYSTEM_FIRMWARE_TABLE_HANDLER 01431 { 01432 ULONG ProviderSignature; 01433 BOOLEAN Register; 01434 PFNFTH FirmwareTableHandler; 01435 PVOID DriverObject; 01436 } SYSTEM_FIRMWARE_TABLE_HANDLER, *PSYSTEM_FIRMWARE_TABLE_HANDLER; 01437 01438 // 01439 // Class 76 01440 // 01441 typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION 01442 { 01443 ULONG ProviderSignature; 01444 SYSTEM_FIRMWARE_TABLE_ACTION Action; 01445 ULONG TableID; 01446 ULONG TableBufferLength; 01447 UCHAR TableBuffer[1]; 01448 } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION; 01449 01450 // 01451 // Class 81 01452 // 01453 typedef struct _SYSTEM_MEMORY_LIST_INFORMATION 01454 { 01455 SIZE_T ZeroPageCount; 01456 SIZE_T FreePageCount; 01457 SIZE_T ModifiedPageCount; 01458 SIZE_T ModifiedNoWritePageCount; 01459 SIZE_T BadPageCount; 01460 SIZE_T PageCountByPriority[8]; 01461 SIZE_T RepurposedPagesByPriority[8]; 01462 SIZE_T ModifiedPageCountPageFile; 01463 } SYSTEM_MEMORY_LIST_INFORMATION, *PSYSTEM_MEMORY_LIST_INFORMATION; 01464 01465 #endif 01466 #endif Generated on Sun May 27 2012 04:30:50 for ReactOS by
1.7.6.1
|