3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the Executive.
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
27 #if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
36 // Atom and Language IDs
38 typedef USHORT LANGID
, *PLANGID
;
39 typedef USHORT RTL_ATOM
, *PRTL_ATOM
;
41 #ifndef NTOS_MODE_USER
44 // Kernel Exported Object Types
46 extern POBJECT_TYPE NTSYSAPI ExIoCompletionType
;
47 extern POBJECT_TYPE NTSYSAPI ExMutantObjectType
;
48 extern POBJECT_TYPE NTSYSAPI ExTimerType
;
51 // Exported NT Build Number
53 extern ULONG NTSYSAPI NtBuildNumber
;
56 // Invalid Handle Value Constant
58 #define INVALID_HANDLE_VALUE (HANDLE)-1
65 #define MUTANT_INCREMENT 1
68 // Callback Object Access Mask
70 #define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
71 #define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
72 #define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
73 #define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
76 // Event Object Access Masks
79 #define EVENT_QUERY_STATE 0x0001
82 // Semaphore Object Acess Masks
84 #define SEMAPHORE_QUERY_STATE 0x0001
88 // Event Pair Access Masks
90 #define EVENT_PAIR_ALL_ACCESS 0x1F0000L
93 // Profile Object Access Masks
95 #define PROFILE_CONTROL 0x0001
96 #define PROFILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | PROFILE_CONTROL)
99 // Maximum Parameters for NtRaiseHardError
101 #define MAXIMUM_HARDERROR_PARAMETERS 4
104 // Pushlock Wait Block Flags
106 #define EX_PUSH_LOCK_FLAGS_EXCLUSIVE 1
107 #define EX_PUSH_LOCK_FLAGS_WAIT 2
110 // Shutdown types for NtShutdownSystem
112 typedef enum _SHUTDOWN_ACTION
120 // Responses for NtRaiseHardError
122 typedef enum _HARDERROR_RESPONSE_OPTION
124 OptionAbortRetryIgnore
,
131 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
133 typedef enum _HARDERROR_RESPONSE
135 ResponseReturnToCaller
,
144 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
147 // System Information Classes for NtQuerySystemInformation
149 typedef enum _SYSTEM_INFORMATION_CLASS
151 SystemBasicInformation
,
152 SystemProcessorInformation
,
153 SystemPerformanceInformation
,
154 SystemTimeOfDayInformation
,
155 SystemPathInformation
, /// Obsolete: Use KUSER_SHARED_DATA
156 SystemProcessInformation
,
157 SystemCallCountInformation
,
158 SystemDeviceInformation
,
159 SystemProcessorPerformanceInformation
,
160 SystemFlagsInformation
,
161 SystemCallTimeInformation
,
162 SystemModuleInformation
,
163 SystemLocksInformation
,
164 SystemStackTraceInformation
,
165 SystemPagedPoolInformation
,
166 SystemNonPagedPoolInformation
,
167 SystemHandleInformation
,
168 SystemObjectInformation
,
169 SystemPageFileInformation
,
170 SystemVdmInstemulInformation
,
171 SystemVdmBopInformation
,
172 SystemFileCacheInformation
,
173 SystemPoolTagInformation
,
174 SystemInterruptInformation
,
175 SystemDpcBehaviorInformation
,
176 SystemFullMemoryInformation
,
177 SystemLoadGdiDriverInformation
,
178 SystemUnloadGdiDriverInformation
,
179 SystemTimeAdjustmentInformation
,
180 SystemSummaryMemoryInformation
,
181 SystemNextEventIdInformation
,
182 SystemEventIdsInformation
,
183 SystemCrashDumpInformation
,
184 SystemExceptionInformation
,
185 SystemCrashDumpStateInformation
,
186 SystemKernelDebuggerInformation
,
187 SystemContextSwitchInformation
,
188 SystemRegistryQuotaInformation
,
189 SystemExtendServiceTableInformation
,
190 SystemPrioritySeperation
,
191 SystemPlugPlayBusInformation
,
192 SystemDockInformation
,
193 SystemPowerInformationNative
,
194 SystemProcessorSpeedInformation
,
195 SystemCurrentTimeZoneInformation
,
196 SystemLookasideInformation
,
197 SystemTimeSlipNotification
,
200 SystemSessionInformation
,
201 SystemRangeStartInformation
,
202 SystemVerifierInformation
,
204 SystemSessionProcessesInformation
,
205 SystemInformationClassMax
206 } SYSTEM_INFORMATION_CLASS
;
209 // System Information Classes for NtQueryMutant
211 typedef enum _MUTANT_INFORMATION_CLASS
213 MutantBasicInformation
214 } MUTANT_INFORMATION_CLASS
;
217 // System Information Classes for NtQueryAtom
219 typedef enum _ATOM_INFORMATION_CLASS
221 AtomBasicInformation
,
222 AtomTableInformation
,
223 } ATOM_INFORMATION_CLASS
;
226 // System Information Classes for NtQueryTimer
228 typedef enum _TIMER_INFORMATION_CLASS
230 TimerBasicInformation
231 } TIMER_INFORMATION_CLASS
;
234 // System Information Classes for NtQuerySemaphore
236 typedef enum _SEMAPHORE_INFORMATION_CLASS
238 SemaphoreBasicInformation
239 } SEMAPHORE_INFORMATION_CLASS
;
242 // System Information Classes for NtQueryEvent
244 typedef enum _EVENT_INFORMATION_CLASS
246 EventBasicInformation
247 } EVENT_INFORMATION_CLASS
;
249 #ifndef NTOS_MODE_USER
252 // Executive Work Queue Structures
254 typedef struct _EX_QUEUE_WORKER_INFO
256 ULONG QueueDisabled
:1;
257 ULONG MakeThreadsAsNecessary
:1;
259 ULONG WorkerCount
:29;
260 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
262 typedef struct _EX_WORK_QUEUE
265 ULONG DynamicThreadCount
;
266 ULONG WorkItemsProcessed
;
267 ULONG WorkItemsProcessedLastPass
;
268 ULONG QueueDepthLastPass
;
269 EX_QUEUE_WORKER_INFO Info
;
270 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
273 // Executive Fast Reference Structure
275 typedef struct _EX_FAST_REF
283 } EX_FAST_REF
, *PEX_FAST_REF
;
286 // Executive Cache-Aware Rundown Reference Descriptor
288 typedef struct _EX_RUNDOWN_REF_CACHE_AWARE
296 } EX_RUNDOWN_REF_CACHE_AWARE
, *PEX_RUNDOWN_REF_CACHE_AWARE
;
299 // Executive Rundown Wait Block
301 typedef struct _EX_RUNDOWN_WAIT_BLOCK
305 } EX_RUNDOWN_WAIT_BLOCK
, *PEX_RUNDOWN_WAIT_BLOCK
;
308 // Executive Pushlock Wait Block
310 #ifndef __GNUC__ // WARNING! PUSHLOCKS WILL NOT WORK IN GCC FOR NOW!!!
311 __declspec(align(16))
313 typedef struct _EX_PUSH_LOCK_WAIT_BLOCK
320 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Next
;
321 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Last
;
322 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Previous
;
327 EX_PUSH_LOCK NewValue
;
328 EX_PUSH_LOCK OldValue
;
329 PEX_PUSH_LOCK PushLock
;
331 } EX_PUSH_LOCK_WAIT_BLOCK
, *PEX_PUSH_LOCK_WAIT_BLOCK
;
336 typedef struct _CALLBACK_OBJECT
340 LIST_ENTRY RegisteredCallbacks
;
341 ULONG AllowMultipleCallbacks
;
342 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
347 typedef struct _EPROFILE
359 KPROFILE_SOURCE ProfileSource
;
361 } EPROFILE
, *PEPROFILE
;
364 // Handle Table Structures
366 typedef struct _HANDLE_TABLE_ENTRY_INFO
369 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
371 typedef struct _HANDLE_TABLE_ENTRY
376 ULONG_PTR ObAttributes
;
377 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
383 USHORT GrantedAccessIndex
;
384 LONG NextFreeTableEntry
;
386 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
388 typedef struct _HANDLE_TABLE
392 PHANDLE_TABLE_ENTRY
**Table
;
393 PEPROCESS QuotaProcess
;
394 HANDLE UniqueProcessId
;
395 LONG FirstFreeTableEntry
;
396 LONG NextIndexNeedingPool
;
397 ERESOURCE HandleTableLock
;
398 LIST_ENTRY HandleTableList
;
399 KEVENT HandleContentionEvent
;
400 } HANDLE_TABLE
, *PHANDLE_TABLE
;
405 // Hard Error LPC Message
407 typedef struct _HARDERROR_MSG
411 LARGE_INTEGER ErrorTime
;
412 ULONG ValidResponseOptions
;
414 ULONG NumberOfParameters
;
415 ULONG UnicodeStringParameterMask
;
416 ULONG Parameters
[MAXIMUM_HARDERROR_PARAMETERS
];
417 } HARDERROR_MSG
, *PHARDERROR_MSG
;
420 // Information Structures for NtQueryMutant
422 typedef struct _MUTANT_BASIC_INFORMATION
425 BOOLEAN OwnedByCaller
;
426 BOOLEAN AbandonedState
;
427 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
430 // Information Structures for NtQueryAtom
432 typedef struct _ATOM_BASIC_INFORMATION
438 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
440 typedef struct _ATOM_TABLE_INFORMATION
444 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
447 // Information Structures for NtQueryTimer
449 typedef struct _TIMER_BASIC_INFORMATION
451 LARGE_INTEGER TimeRemaining
;
453 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
456 // Information Structures for NtQuerySemaphore
458 typedef struct _SEMAPHORE_BASIC_INFORMATION
462 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
465 // Information Structures for NtQueryEvent
467 typedef struct _EVENT_BASIC_INFORMATION
469 EVENT_TYPE EventType
;
471 } EVENT_BASIC_INFORMATION
, *PEVENT_BASIC_INFORMATION
;
474 // Information Structures for NtQuerySystemInformation
476 typedef struct _SYSTEM_BASIC_INFORMATION
479 ULONG TimerResolution
;
481 ULONG NumberOfPhysicalPages
;
482 ULONG LowestPhysicalPageNumber
;
483 ULONG HighestPhysicalPageNumber
;
484 ULONG AllocationGranularity
;
485 ULONG MinimumUserModeAddress
;
486 ULONG MaximumUserModeAddress
;
487 KAFFINITY ActiveProcessorsAffinityMask
;
488 CCHAR NumberOfProcessors
;
489 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
492 typedef struct _SYSTEM_PROCESSOR_INFORMATION
494 USHORT ProcessorArchitecture
;
495 USHORT ProcessorLevel
;
496 USHORT ProcessorRevision
;
498 ULONG ProcessorFeatureBits
;
499 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
502 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
504 LARGE_INTEGER IdleProcessTime
;
505 LARGE_INTEGER IoReadTransferCount
;
506 LARGE_INTEGER IoWriteTransferCount
;
507 LARGE_INTEGER IoOtherTransferCount
;
508 ULONG IoReadOperationCount
;
509 ULONG IoWriteOperationCount
;
510 ULONG IoOtherOperationCount
;
511 ULONG AvailablePages
;
512 ULONG CommittedPages
;
514 ULONG PeakCommitment
;
515 ULONG PageFaultCount
;
516 ULONG CopyOnWriteCount
;
517 ULONG TransitionCount
;
518 ULONG CacheTransitionCount
;
519 ULONG DemandZeroCount
;
521 ULONG PageReadIoCount
;
522 ULONG CacheReadCount
;
524 ULONG DirtyPagesWriteCount
;
525 ULONG DirtyWriteIoCount
;
526 ULONG MappedPagesWriteCount
;
527 ULONG MappedWriteIoCount
;
528 ULONG PagedPoolPages
;
529 ULONG NonPagedPoolPages
;
530 ULONG PagedPoolAllocs
;
531 ULONG PagedPoolFrees
;
532 ULONG NonPagedPoolAllocs
;
533 ULONG NonPagedPoolFrees
;
534 ULONG FreeSystemPtes
;
535 ULONG ResidentSystemCodePage
;
536 ULONG TotalSystemDriverPages
;
537 ULONG TotalSystemCodePages
;
538 ULONG NonPagedPoolLookasideHits
;
539 ULONG PagedPoolLookasideHits
;
541 ULONG ResidentSystemCachePage
;
542 ULONG ResidentPagedPoolPage
;
543 ULONG ResidentSystemDriverPage
;
544 ULONG CcFastReadNoWait
;
545 ULONG CcFastReadWait
;
546 ULONG CcFastReadResourceMiss
;
547 ULONG CcFastReadNotPossible
;
548 ULONG CcFastMdlReadNoWait
;
549 ULONG CcFastMdlReadWait
;
550 ULONG CcFastMdlReadResourceMiss
;
551 ULONG CcFastMdlReadNotPossible
;
552 ULONG CcMapDataNoWait
;
554 ULONG CcMapDataNoWaitMiss
;
555 ULONG CcMapDataWaitMiss
;
556 ULONG CcPinMappedDataCount
;
557 ULONG CcPinReadNoWait
;
559 ULONG CcPinReadNoWaitMiss
;
560 ULONG CcPinReadWaitMiss
;
561 ULONG CcCopyReadNoWait
;
562 ULONG CcCopyReadWait
;
563 ULONG CcCopyReadNoWaitMiss
;
564 ULONG CcCopyReadWaitMiss
;
565 ULONG CcMdlReadNoWait
;
567 ULONG CcMdlReadNoWaitMiss
;
568 ULONG CcMdlReadWaitMiss
;
569 ULONG CcReadAheadIos
;
570 ULONG CcLazyWriteIos
;
571 ULONG CcLazyWritePages
;
574 ULONG ContextSwitches
;
575 ULONG FirstLevelTbFills
;
576 ULONG SecondLevelTbFills
;
578 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
581 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
583 LARGE_INTEGER BootTime
;
584 LARGE_INTEGER CurrentTime
;
585 LARGE_INTEGER TimeZoneBias
;
588 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
591 // This class is obsolete, please use KUSER_SHARED_DATA instead
594 typedef struct _SYSTEM_THREAD_INFORMATION
596 LARGE_INTEGER KernelTime
;
597 LARGE_INTEGER UserTime
;
598 LARGE_INTEGER CreateTime
;
604 ULONG ContextSwitches
;
607 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
609 typedef struct _SYSTEM_PROCESS_INFORMATION
611 ULONG NextEntryOffset
;
612 ULONG NumberOfThreads
;
613 LARGE_INTEGER SpareLi1
;
614 LARGE_INTEGER SpareLi2
;
615 LARGE_INTEGER SpareLi3
;
616 LARGE_INTEGER CreateTime
;
617 LARGE_INTEGER UserTime
;
618 LARGE_INTEGER KernelTime
;
619 UNICODE_STRING ImageName
;
620 KPRIORITY BasePriority
;
621 HANDLE UniqueProcessId
;
622 HANDLE InheritedFromUniqueProcessId
;
625 ULONG PageDirectoryFrame
;
628 // This part corresponds to VM_COUNTERS_EX.
629 // NOTE: *NOT* THE SAME AS VM_COUNTERS!
631 ULONG PeakVirtualSize
;
633 ULONG PageFaultCount
;
634 ULONG PeakWorkingSetSize
;
635 ULONG WorkingSetSize
;
636 ULONG QuotaPeakPagedPoolUsage
;
637 ULONG QuotaPagedPoolUsage
;
638 ULONG QuotaPeakNonPagedPoolUsage
;
639 ULONG QuotaNonPagedPoolUsage
;
641 ULONG PeakPagefileUsage
;
645 // This part corresponds to IO_COUNTERS
647 LARGE_INTEGER ReadOperationCount
;
648 LARGE_INTEGER WriteOperationCount
;
649 LARGE_INTEGER OtherOperationCount
;
650 LARGE_INTEGER ReadTransferCount
;
651 LARGE_INTEGER WriteTransferCount
;
652 LARGE_INTEGER OtherTransferCount
;
654 SYSTEM_THREAD_INFORMATION TH
[1];
655 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
658 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
661 ULONG NumberOfTables
;
662 } SYSTEM_CALL_COUNT_INFORMATION
, *PSYSTEM_CALL_COUNT_INFORMATION
;
665 typedef struct _SYSTEM_DEVICE_INFORMATION
668 ULONG NumberOfFloppies
;
669 ULONG NumberOfCdRoms
;
671 ULONG NumberOfSerialPorts
;
672 ULONG NumberOfParallelPorts
;
673 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
676 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
678 LARGE_INTEGER IdleTime
;
679 LARGE_INTEGER KernelTime
;
680 LARGE_INTEGER UserTime
;
681 LARGE_INTEGER DpcTime
;
682 LARGE_INTEGER InterruptTime
;
683 ULONG InterruptCount
;
684 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
;
687 typedef struct _SYSTEM_FLAGS_INFORMATION
690 } SYSTEM_FLAGS_INFORMATION
, *PSYSTEM_FLAGS_INFORMATION
;
693 typedef struct _SYSTEM_CALL_TIME_INFORMATION
697 LARGE_INTEGER TimeOfCalls
[1];
698 } SYSTEM_CALL_TIME_INFORMATION
, *PSYSTEM_CALL_TIME_INFORMATION
;
701 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
713 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
714 typedef struct _SYSTEM_MODULE_INFORMATION
717 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
718 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
721 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
723 ULONG ResourceAddress
;
727 ULONG ContentionCount
;
729 ULONG NumberOfSharedWaiters
;
730 ULONG NumberOfExclusiveWaiters
;
731 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
733 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
736 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
737 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
740 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
743 } SYSTEM_BACKTRACE_INFORMATION_ENTRY
, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY
;
745 typedef struct _SYSTEM_BACKTRACE_INFORMATION
749 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace
[1];
750 } SYSTEM_BACKTRACE_INFORMATION
, *PSYSTEM_BACKTRACE_INFORMATION
;
753 typedef struct _SYSTEM_POOL_ENTRY
757 USHORT AllocatorBackTraceIndex
;
763 PVOID ProcessChargedQuota
;
765 } SYSTEM_POOL_ENTRY
, *PSYSTEM_POOL_ENTRY
;
767 typedef struct _SYSTEM_POOL_INFORMATION
771 USHORT EntryOverhead
;
772 BOOLEAN PoolTagPresent
;
774 ULONG NumberOfEntries
;
775 SYSTEM_POOL_ENTRY Entries
[1];
776 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
779 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
781 USHORT UniqueProcessId
;
782 USHORT CreatorBackTraceIndex
;
783 UCHAR ObjectTypeIndex
;
784 UCHAR HandleAttributes
;
788 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
790 typedef struct _SYSTEM_HANDLE_INFORMATION
792 ULONG NumberOfHandles
;
793 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
794 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
797 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
799 ULONG NextEntryOffset
;
800 ULONG NumberOfObjects
;
801 ULONG NumberOfHandles
;
803 ULONG InvalidAttributes
;
804 GENERIC_MAPPING GenericMapping
;
805 ULONG ValidAccessMask
;
807 BOOLEAN SecurityRequired
;
808 BOOLEAN WaitableObject
;
809 UNICODE_STRING TypeName
;
810 } SYSTEM_OBJECTTYPE_INFORMATION
, *PSYSTEM_OBJECTTYPE_INFORMATION
;
812 typedef struct _SYSTEM_OBJECT_INFORMATION
814 ULONG NextEntryOffset
;
816 HANDLE CreatorUniqueProcess
;
817 USHORT CreatorBackTraceIndex
;
821 ULONG PagedPoolCharge
;
822 ULONG NonPagedPoolCharge
;
823 HANDLE ExclusiveProcessId
;
824 PVOID SecurityDescriptor
;
825 OBJECT_NAME_INFORMATION NameInfo
;
826 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
829 typedef struct _SYSTEM_PAGEFILE_INFORMATION
831 ULONG NextEntryOffset
;
835 UNICODE_STRING PageFileName
;
836 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
839 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
841 ULONG SegmentNotPresent
;
843 ULONG OpcodeESPrefix
;
844 ULONG OpcodeCSPrefix
;
845 ULONG OpcodeSSPrefix
;
846 ULONG OpcodeDSPrefix
;
847 ULONG OpcodeFSPrefix
;
848 ULONG OpcodeGSPrefix
;
849 ULONG OpcodeOPER32Prefix
;
850 ULONG OpcodeADDR32Prefix
;
863 ULONG OpcodeOUTWimm
;
868 ULONG OpcodeLOCKPrefix
;
869 ULONG OpcodeREPNEPrefix
;
870 ULONG OpcodeREPPrefix
;
875 } SYSTEM_VDM_INSTEMUL_INFO
, *PSYSTEM_VDM_INSTEMUL_INFO
;
878 typedef struct _SYSTEM_VDM_BOP_INFO
881 } SYSTEM_VDM_BOP_INFO
, *PSYSTEM_VDM_BOP_INFO
;
884 typedef struct _SYSTEM_CACHE_INFORMATION
888 ULONG PageFaultCount
;
889 ULONG MinimumWorkingSet
;
890 ULONG MaximumWorkingSet
;
891 ULONG CurrentSizeIncludingTransitionInPages
;
892 ULONG PeakSizeIncludingTransitionInPages
;
894 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
897 typedef struct _SYSTEM_POOLTAG
907 ULONG NonPagedAllocs
;
910 } SYSTEM_POOLTAG
, *PSYSTEM_POOLTAG
;
911 typedef struct _SYSTEM_POOLTAG_INFORMATION
914 SYSTEM_POOLTAG TagInfo
[1];
915 } SYSTEM_POOLTAG_INFORMATION
, *PSYSTEM_POOLTAG_INFORMATION
;
918 typedef struct _SYSTEM_INTERRUPT_INFORMATION
920 ULONG ContextSwitches
;
924 ULONG DpcBypassCount
;
925 ULONG ApcBypassCount
;
926 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
929 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
933 ULONG MinimumDpcRate
;
934 ULONG AdjustDpcThreshold
;
936 } SYSTEM_DPC_BEHAVIOR_INFORMATION
, *PSYSTEM_DPC_BEHAVIOR_INFORMATION
;
939 typedef struct _SYSTEM_MEMORY_INFO
943 USHORT TransitionCount
;
944 USHORT ModifiedCount
;
945 USHORT PageTableCount
;
946 } SYSTEM_MEMORY_INFO
, *PSYSTEM_MEMORY_INFO
;
947 typedef struct _SYSTEM_MEMORY_INFORMATION
951 SYSTEM_MEMORY_INFO Memory
[1];
952 } SYSTEM_MEMORY_INFORMATION
, *PSYSTEM_MEMORY_INFORMATION
;
955 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
957 UNICODE_STRING DriverName
;
959 PVOID SectionPointer
;
961 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer
;
962 } SYSTEM_GDI_DRIVER_INFORMATION
, *PSYSTEM_GDI_DRIVER_INFORMATION
;
965 // Not an actually class, simply a PVOID to the ImageAddress
968 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
970 ULONG TimeAdjustment
;
973 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION
, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION
;
975 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
977 ULONG TimeAdjustment
;
979 } SYSTEM_SET_TIME_ADJUST_INFORMATION
, *PSYSTEM_SET_TIME_ADJUST_INFORMATION
;
981 // Class 29 - Same as 25
983 // FIXME: Class 30 - 31
986 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
988 HANDLE CrashDumpSection
;
989 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
992 typedef struct _SYSTEM_EXCEPTION_INFORMATION
994 ULONG AlignmentFixupCount
;
995 ULONG ExceptionDispatchCount
;
996 ULONG FloatingEmulationCount
;
997 ULONG ByteWordEmulationCount
;
998 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
1001 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
1003 ULONG ValidCrashDump
;
1004 } SYSTEM_CRASH_STATE_INFORMATION
, *PSYSTEM_CRASH_STATE_INFORMATION
;
1007 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
1009 BOOLEAN KernelDebuggerEnabled
;
1010 BOOLEAN KernelDebuggerNotPresent
;
1011 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
1014 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
1016 ULONG ContextSwitches
;
1025 ULONG PreemptCurrent
;
1028 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
1031 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
1033 ULONG RegistryQuotaAllowed
;
1034 ULONG RegistryQuotaUsed
;
1035 ULONG PagedPoolSize
;
1036 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
1039 // Not a structure, simply send the UNICODE_STRING
1042 // Not a structure, simply send a ULONG containing the new separation
1045 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
1048 PLUGPLAY_BUS_INSTANCE BusInstance
[1];
1049 } SYSTEM_PLUGPLAY_BUS_INFORMATION
, *PSYSTEM_PLUGPLAY_BUS_INFORMATION
;
1052 typedef struct _SYSTEM_DOCK_INFORMATION
1054 SYSTEM_DOCK_STATE DockState
;
1055 INTERFACE_TYPE DeviceBusType
;
1056 ULONG DeviceBusNumber
;
1058 } SYSTEM_DOCK_INFORMATION
, *PSYSTEM_DOCK_INFORMATION
;
1061 typedef struct _SYSTEM_POWER_INFORMATION_NATIVE
1063 BOOLEAN SystemSuspendSupported
;
1064 BOOLEAN SystemHibernateSupported
;
1065 BOOLEAN ResumeTimerSupportsSuspend
;
1066 BOOLEAN ResumeTimerSupportsHibernate
;
1067 BOOLEAN LidSupported
;
1068 BOOLEAN TurboSettingSupported
;
1070 BOOLEAN SystemAcOrDc
;
1071 BOOLEAN PowerDownDisabled
;
1072 LARGE_INTEGER SpindownDrives
;
1073 } SYSTEM_POWER_INFORMATION_NATIVE
, *PSYSTEM_POWER_INFORMATION_NATIVE
;
1076 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
1078 PNP_VETO_TYPE VetoType
;
1079 UNICODE_STRING VetoDriver
;
1081 } SYSTEM_LEGACY_DRIVER_INFORMATION
, *PSYSTEM_LEGACY_DRIVER_INFORMATION
;
1084 typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION
;
1087 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
1089 USHORT CurrentDepth
;
1090 USHORT MaximumDepth
;
1091 ULONG TotalAllocates
;
1092 ULONG AllocateMisses
;
1098 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
1101 // Not a structure. Only a HANDLE for the SlipEvent;
1104 // Not a structure. Only a ULONG for the SessionId;
1107 // Not a structure. Only a ULONG for the SessionId;
1112 // Not a structure. Only a ULONG_PTR for the SystemRangeStart
1114 // FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
1119 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
1123 PVOID Buffer
; // Same format as in SystemProcessInformation
1124 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;