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 ExDesktopObjectType
;
47 extern POBJECT_TYPE NTSYSAPI ExWindowStationObjectType
;
48 extern POBJECT_TYPE NTSYSAPI ExIoCompletionType
;
49 extern POBJECT_TYPE NTSYSAPI ExMutantObjectType
;
50 extern POBJECT_TYPE NTSYSAPI ExTimerType
;
53 // Exported NT Build Number
55 extern ULONG NTSYSAPI NtBuildNumber
;
58 // Invalid Handle Value Constant
60 #define INVALID_HANDLE_VALUE (HANDLE)-1
67 #define MUTANT_INCREMENT 1
70 // Callback Object Access Mask
72 #define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
73 #define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
74 #define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
75 #define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
78 // Event Object Access Masks
81 #define EVENT_QUERY_STATE 0x0001
84 // Semaphore Object Acess Masks
86 #define SEMAPHORE_QUERY_STATE 0x0001
90 // Event Pair Access Masks
92 #define EVENT_PAIR_ALL_ACCESS 0x1F0000L
95 // Profile Object Access Masks
97 #define PROFILE_CONTROL 0x0001
98 #define PROFILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | PROFILE_CONTROL)
101 // Maximum Parameters for NtRaiseHardError
103 #define MAXIMUM_HARDERROR_PARAMETERS 4
108 #define EX_PUSH_LOCK_LOCK_V ((ULONG_PTR)0x0)
109 #define EX_PUSH_LOCK_LOCK ((ULONG_PTR)0x1)
110 #define EX_PUSH_LOCK_WAITING ((ULONG_PTR)0x2)
111 #define EX_PUSH_LOCK_WAKING ((ULONG_PTR)0x4)
112 #define EX_PUSH_LOCK_MULTIPLE_SHARED ((ULONG_PTR)0x8)
113 #define EX_PUSH_LOCK_SHARE_INC ((ULONG_PTR)0x10)
114 #define EX_PUSH_LOCK_PTR_BITS ((ULONG_PTR)0xf)
117 // Pushlock Wait Block Flags
119 #define EX_PUSH_LOCK_FLAGS_EXCLUSIVE 1
120 #define EX_PUSH_LOCK_FLAGS_WAIT 2
123 // Resource (ERESOURCE) Flags
125 #define ResourceHasDisabledPriorityBoost 0x08
128 // Shutdown types for NtShutdownSystem
130 typedef enum _SHUTDOWN_ACTION
138 // Responses for NtRaiseHardError
140 typedef enum _HARDERROR_RESPONSE_OPTION
142 OptionAbortRetryIgnore
,
149 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
151 typedef enum _HARDERROR_RESPONSE
153 ResponseReturnToCaller
,
162 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
165 // System Information Classes for NtQuerySystemInformation
167 typedef enum _SYSTEM_INFORMATION_CLASS
169 SystemBasicInformation
,
170 SystemProcessorInformation
,
171 SystemPerformanceInformation
,
172 SystemTimeOfDayInformation
,
173 SystemPathInformation
, /// Obsolete: Use KUSER_SHARED_DATA
174 SystemProcessInformation
,
175 SystemCallCountInformation
,
176 SystemDeviceInformation
,
177 SystemProcessorPerformanceInformation
,
178 SystemFlagsInformation
,
179 SystemCallTimeInformation
,
180 SystemModuleInformation
,
181 SystemLocksInformation
,
182 SystemStackTraceInformation
,
183 SystemPagedPoolInformation
,
184 SystemNonPagedPoolInformation
,
185 SystemHandleInformation
,
186 SystemObjectInformation
,
187 SystemPageFileInformation
,
188 SystemVdmInstemulInformation
,
189 SystemVdmBopInformation
,
190 SystemFileCacheInformation
,
191 SystemPoolTagInformation
,
192 SystemInterruptInformation
,
193 SystemDpcBehaviorInformation
,
194 SystemFullMemoryInformation
,
195 SystemLoadGdiDriverInformation
,
196 SystemUnloadGdiDriverInformation
,
197 SystemTimeAdjustmentInformation
,
198 SystemSummaryMemoryInformation
,
199 SystemNextEventIdInformation
,
200 SystemEventIdsInformation
,
201 SystemCrashDumpInformation
,
202 SystemExceptionInformation
,
203 SystemCrashDumpStateInformation
,
204 SystemKernelDebuggerInformation
,
205 SystemContextSwitchInformation
,
206 SystemRegistryQuotaInformation
,
207 SystemExtendServiceTableInformation
,
208 SystemPrioritySeperation
,
209 SystemPlugPlayBusInformation
,
210 SystemDockInformation
,
211 SystemPowerInformationNative
,
212 SystemProcessorSpeedInformation
,
213 SystemCurrentTimeZoneInformation
,
214 SystemLookasideInformation
,
215 SystemTimeSlipNotification
,
218 SystemSessionInformation
,
219 SystemRangeStartInformation
,
220 SystemVerifierInformation
,
222 SystemSessionProcessesInformation
,
223 SystemInformationClassMax
224 } SYSTEM_INFORMATION_CLASS
;
227 // System Information Classes for NtQueryMutant
229 typedef enum _MUTANT_INFORMATION_CLASS
231 MutantBasicInformation
232 } MUTANT_INFORMATION_CLASS
;
235 // System Information Classes for NtQueryAtom
237 typedef enum _ATOM_INFORMATION_CLASS
239 AtomBasicInformation
,
240 AtomTableInformation
,
241 } ATOM_INFORMATION_CLASS
;
244 // System Information Classes for NtQueryTimer
246 typedef enum _TIMER_INFORMATION_CLASS
248 TimerBasicInformation
249 } TIMER_INFORMATION_CLASS
;
252 // System Information Classes for NtQuerySemaphore
254 typedef enum _SEMAPHORE_INFORMATION_CLASS
256 SemaphoreBasicInformation
257 } SEMAPHORE_INFORMATION_CLASS
;
260 // System Information Classes for NtQueryEvent
262 typedef enum _EVENT_INFORMATION_CLASS
264 EventBasicInformation
265 } EVENT_INFORMATION_CLASS
;
267 #ifndef NTOS_MODE_USER
270 // Executive Work Queue Structures
272 typedef struct _EX_QUEUE_WORKER_INFO
274 ULONG QueueDisabled
:1;
275 ULONG MakeThreadsAsNecessary
:1;
277 ULONG WorkerCount
:29;
278 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
280 typedef struct _EX_WORK_QUEUE
283 LONG DynamicThreadCount
;
284 ULONG WorkItemsProcessed
;
285 ULONG WorkItemsProcessedLastPass
;
286 ULONG QueueDepthLastPass
;
287 EX_QUEUE_WORKER_INFO Info
;
288 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
291 // Executive Fast Reference Structure
293 typedef struct _EX_FAST_REF
301 } EX_FAST_REF
, *PEX_FAST_REF
;
304 // Executive Cache-Aware Rundown Reference Descriptor
306 typedef struct _EX_RUNDOWN_REF_CACHE_AWARE
314 } EX_RUNDOWN_REF_CACHE_AWARE
, *PEX_RUNDOWN_REF_CACHE_AWARE
;
317 // Executive Rundown Wait Block
319 typedef struct _EX_RUNDOWN_WAIT_BLOCK
323 } EX_RUNDOWN_WAIT_BLOCK
, *PEX_RUNDOWN_WAIT_BLOCK
;
326 // Executive Pushlock
330 typedef struct _EX_PUSH_LOCK
339 ULONG_PTR MultipleShared
:1;
340 ULONG_PTR Shared
:sizeof (ULONG_PTR
) * 8 - 4;
345 } EX_PUSH_LOCK
, *PEX_PUSH_LOCK
;
348 // Executive Pushlock Wait Block
350 #ifndef __GNUC__ // WARNING! PUSHLOCKS WILL NOT WORK IN GCC FOR NOW!!!
351 __declspec(align(16))
353 typedef struct _EX_PUSH_LOCK_WAIT_BLOCK
360 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Next
;
361 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Last
;
362 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Previous
;
367 EX_PUSH_LOCK NewValue
;
368 EX_PUSH_LOCK OldValue
;
369 PEX_PUSH_LOCK PushLock
;
371 } EX_PUSH_LOCK_WAIT_BLOCK
, *PEX_PUSH_LOCK_WAIT_BLOCK
;
376 typedef struct _CALLBACK_OBJECT
380 LIST_ENTRY RegisteredCallbacks
;
381 ULONG AllowMultipleCallbacks
;
382 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
387 typedef struct _EPROFILE
399 KPROFILE_SOURCE ProfileSource
;
401 } EPROFILE
, *PEPROFILE
;
404 // Handle Table Structures
406 typedef struct _HANDLE_TABLE_ENTRY_INFO
409 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
411 typedef struct _HANDLE_TABLE_ENTRY
416 ULONG_PTR ObAttributes
;
417 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
423 USHORT GrantedAccessIndex
;
424 LONG NextFreeTableEntry
;
426 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
428 typedef struct _HANDLE_TABLE
432 PHANDLE_TABLE_ENTRY
**Table
;
433 PEPROCESS QuotaProcess
;
434 HANDLE UniqueProcessId
;
435 LONG FirstFreeTableEntry
;
436 LONG NextIndexNeedingPool
;
437 ERESOURCE HandleTableLock
;
438 LIST_ENTRY HandleTableList
;
439 KEVENT HandleContentionEvent
;
440 } HANDLE_TABLE
, *PHANDLE_TABLE
;
445 // Hard Error LPC Message
447 typedef struct _HARDERROR_MSG
451 LARGE_INTEGER ErrorTime
;
452 ULONG ValidResponseOptions
;
454 ULONG NumberOfParameters
;
455 ULONG UnicodeStringParameterMask
;
456 ULONG Parameters
[MAXIMUM_HARDERROR_PARAMETERS
];
457 } HARDERROR_MSG
, *PHARDERROR_MSG
;
460 // Information Structures for NtQueryMutant
462 typedef struct _MUTANT_BASIC_INFORMATION
465 BOOLEAN OwnedByCaller
;
466 BOOLEAN AbandonedState
;
467 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
470 // Information Structures for NtQueryAtom
472 typedef struct _ATOM_BASIC_INFORMATION
478 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
480 typedef struct _ATOM_TABLE_INFORMATION
484 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
487 // Information Structures for NtQueryTimer
489 typedef struct _TIMER_BASIC_INFORMATION
491 LARGE_INTEGER TimeRemaining
;
493 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
496 // Information Structures for NtQuerySemaphore
498 typedef struct _SEMAPHORE_BASIC_INFORMATION
502 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
505 // Information Structures for NtQueryEvent
507 typedef struct _EVENT_BASIC_INFORMATION
509 EVENT_TYPE EventType
;
511 } EVENT_BASIC_INFORMATION
, *PEVENT_BASIC_INFORMATION
;
514 // Information Structures for NtQuerySystemInformation
516 typedef struct _SYSTEM_BASIC_INFORMATION
519 ULONG TimerResolution
;
521 ULONG NumberOfPhysicalPages
;
522 ULONG LowestPhysicalPageNumber
;
523 ULONG HighestPhysicalPageNumber
;
524 ULONG AllocationGranularity
;
525 ULONG MinimumUserModeAddress
;
526 ULONG MaximumUserModeAddress
;
527 KAFFINITY ActiveProcessorsAffinityMask
;
528 CCHAR NumberOfProcessors
;
529 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
532 typedef struct _SYSTEM_PROCESSOR_INFORMATION
534 USHORT ProcessorArchitecture
;
535 USHORT ProcessorLevel
;
536 USHORT ProcessorRevision
;
538 ULONG ProcessorFeatureBits
;
539 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
542 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
544 LARGE_INTEGER IdleProcessTime
;
545 LARGE_INTEGER IoReadTransferCount
;
546 LARGE_INTEGER IoWriteTransferCount
;
547 LARGE_INTEGER IoOtherTransferCount
;
548 ULONG IoReadOperationCount
;
549 ULONG IoWriteOperationCount
;
550 ULONG IoOtherOperationCount
;
551 ULONG AvailablePages
;
552 ULONG CommittedPages
;
554 ULONG PeakCommitment
;
555 ULONG PageFaultCount
;
556 ULONG CopyOnWriteCount
;
557 ULONG TransitionCount
;
558 ULONG CacheTransitionCount
;
559 ULONG DemandZeroCount
;
561 ULONG PageReadIoCount
;
562 ULONG CacheReadCount
;
564 ULONG DirtyPagesWriteCount
;
565 ULONG DirtyWriteIoCount
;
566 ULONG MappedPagesWriteCount
;
567 ULONG MappedWriteIoCount
;
568 ULONG PagedPoolPages
;
569 ULONG NonPagedPoolPages
;
570 ULONG PagedPoolAllocs
;
571 ULONG PagedPoolFrees
;
572 ULONG NonPagedPoolAllocs
;
573 ULONG NonPagedPoolFrees
;
574 ULONG FreeSystemPtes
;
575 ULONG ResidentSystemCodePage
;
576 ULONG TotalSystemDriverPages
;
577 ULONG TotalSystemCodePages
;
578 ULONG NonPagedPoolLookasideHits
;
579 ULONG PagedPoolLookasideHits
;
581 ULONG ResidentSystemCachePage
;
582 ULONG ResidentPagedPoolPage
;
583 ULONG ResidentSystemDriverPage
;
584 ULONG CcFastReadNoWait
;
585 ULONG CcFastReadWait
;
586 ULONG CcFastReadResourceMiss
;
587 ULONG CcFastReadNotPossible
;
588 ULONG CcFastMdlReadNoWait
;
589 ULONG CcFastMdlReadWait
;
590 ULONG CcFastMdlReadResourceMiss
;
591 ULONG CcFastMdlReadNotPossible
;
592 ULONG CcMapDataNoWait
;
594 ULONG CcMapDataNoWaitMiss
;
595 ULONG CcMapDataWaitMiss
;
596 ULONG CcPinMappedDataCount
;
597 ULONG CcPinReadNoWait
;
599 ULONG CcPinReadNoWaitMiss
;
600 ULONG CcPinReadWaitMiss
;
601 ULONG CcCopyReadNoWait
;
602 ULONG CcCopyReadWait
;
603 ULONG CcCopyReadNoWaitMiss
;
604 ULONG CcCopyReadWaitMiss
;
605 ULONG CcMdlReadNoWait
;
607 ULONG CcMdlReadNoWaitMiss
;
608 ULONG CcMdlReadWaitMiss
;
609 ULONG CcReadAheadIos
;
610 ULONG CcLazyWriteIos
;
611 ULONG CcLazyWritePages
;
614 ULONG ContextSwitches
;
615 ULONG FirstLevelTbFills
;
616 ULONG SecondLevelTbFills
;
618 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
621 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
623 LARGE_INTEGER BootTime
;
624 LARGE_INTEGER CurrentTime
;
625 LARGE_INTEGER TimeZoneBias
;
628 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
631 // This class is obsolete, please use KUSER_SHARED_DATA instead
634 typedef struct _SYSTEM_THREAD_INFORMATION
636 LARGE_INTEGER KernelTime
;
637 LARGE_INTEGER UserTime
;
638 LARGE_INTEGER CreateTime
;
644 ULONG ContextSwitches
;
647 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
649 typedef struct _SYSTEM_PROCESS_INFORMATION
651 ULONG NextEntryOffset
;
652 ULONG NumberOfThreads
;
653 LARGE_INTEGER SpareLi1
;
654 LARGE_INTEGER SpareLi2
;
655 LARGE_INTEGER SpareLi3
;
656 LARGE_INTEGER CreateTime
;
657 LARGE_INTEGER UserTime
;
658 LARGE_INTEGER KernelTime
;
659 UNICODE_STRING ImageName
;
660 KPRIORITY BasePriority
;
661 HANDLE UniqueProcessId
;
662 HANDLE InheritedFromUniqueProcessId
;
665 ULONG PageDirectoryFrame
;
668 // This part corresponds to VM_COUNTERS_EX.
669 // NOTE: *NOT* THE SAME AS VM_COUNTERS!
671 ULONG PeakVirtualSize
;
673 ULONG PageFaultCount
;
674 ULONG PeakWorkingSetSize
;
675 ULONG WorkingSetSize
;
676 ULONG QuotaPeakPagedPoolUsage
;
677 ULONG QuotaPagedPoolUsage
;
678 ULONG QuotaPeakNonPagedPoolUsage
;
679 ULONG QuotaNonPagedPoolUsage
;
681 ULONG PeakPagefileUsage
;
685 // This part corresponds to IO_COUNTERS
687 LARGE_INTEGER ReadOperationCount
;
688 LARGE_INTEGER WriteOperationCount
;
689 LARGE_INTEGER OtherOperationCount
;
690 LARGE_INTEGER ReadTransferCount
;
691 LARGE_INTEGER WriteTransferCount
;
692 LARGE_INTEGER OtherTransferCount
;
694 SYSTEM_THREAD_INFORMATION TH
[1];
695 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
698 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
701 ULONG NumberOfTables
;
702 } SYSTEM_CALL_COUNT_INFORMATION
, *PSYSTEM_CALL_COUNT_INFORMATION
;
705 typedef struct _SYSTEM_DEVICE_INFORMATION
708 ULONG NumberOfFloppies
;
709 ULONG NumberOfCdRoms
;
711 ULONG NumberOfSerialPorts
;
712 ULONG NumberOfParallelPorts
;
713 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
716 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
718 LARGE_INTEGER IdleTime
;
719 LARGE_INTEGER KernelTime
;
720 LARGE_INTEGER UserTime
;
721 LARGE_INTEGER DpcTime
;
722 LARGE_INTEGER InterruptTime
;
723 ULONG InterruptCount
;
724 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
;
727 typedef struct _SYSTEM_FLAGS_INFORMATION
730 } SYSTEM_FLAGS_INFORMATION
, *PSYSTEM_FLAGS_INFORMATION
;
733 typedef struct _SYSTEM_CALL_TIME_INFORMATION
737 LARGE_INTEGER TimeOfCalls
[1];
738 } SYSTEM_CALL_TIME_INFORMATION
, *PSYSTEM_CALL_TIME_INFORMATION
;
741 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
753 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
754 typedef struct _SYSTEM_MODULE_INFORMATION
757 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
758 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
761 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
763 ULONG ResourceAddress
;
767 ULONG ContentionCount
;
769 ULONG NumberOfSharedWaiters
;
770 ULONG NumberOfExclusiveWaiters
;
771 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
773 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
776 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
777 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
780 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
783 } SYSTEM_BACKTRACE_INFORMATION_ENTRY
, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY
;
785 typedef struct _SYSTEM_BACKTRACE_INFORMATION
789 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace
[1];
790 } SYSTEM_BACKTRACE_INFORMATION
, *PSYSTEM_BACKTRACE_INFORMATION
;
793 typedef struct _SYSTEM_POOL_ENTRY
797 USHORT AllocatorBackTraceIndex
;
803 PVOID ProcessChargedQuota
;
805 } SYSTEM_POOL_ENTRY
, *PSYSTEM_POOL_ENTRY
;
807 typedef struct _SYSTEM_POOL_INFORMATION
811 USHORT EntryOverhead
;
812 BOOLEAN PoolTagPresent
;
814 ULONG NumberOfEntries
;
815 SYSTEM_POOL_ENTRY Entries
[1];
816 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
819 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
821 USHORT UniqueProcessId
;
822 USHORT CreatorBackTraceIndex
;
823 UCHAR ObjectTypeIndex
;
824 UCHAR HandleAttributes
;
828 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
830 typedef struct _SYSTEM_HANDLE_INFORMATION
832 ULONG NumberOfHandles
;
833 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
834 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
837 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
839 ULONG NextEntryOffset
;
840 ULONG NumberOfObjects
;
841 ULONG NumberOfHandles
;
843 ULONG InvalidAttributes
;
844 GENERIC_MAPPING GenericMapping
;
845 ULONG ValidAccessMask
;
847 BOOLEAN SecurityRequired
;
848 BOOLEAN WaitableObject
;
849 UNICODE_STRING TypeName
;
850 } SYSTEM_OBJECTTYPE_INFORMATION
, *PSYSTEM_OBJECTTYPE_INFORMATION
;
852 typedef struct _SYSTEM_OBJECT_INFORMATION
854 ULONG NextEntryOffset
;
856 HANDLE CreatorUniqueProcess
;
857 USHORT CreatorBackTraceIndex
;
861 ULONG PagedPoolCharge
;
862 ULONG NonPagedPoolCharge
;
863 HANDLE ExclusiveProcessId
;
864 PVOID SecurityDescriptor
;
865 OBJECT_NAME_INFORMATION NameInfo
;
866 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
869 typedef struct _SYSTEM_PAGEFILE_INFORMATION
871 ULONG NextEntryOffset
;
875 UNICODE_STRING PageFileName
;
876 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
879 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
881 ULONG SegmentNotPresent
;
883 ULONG OpcodeESPrefix
;
884 ULONG OpcodeCSPrefix
;
885 ULONG OpcodeSSPrefix
;
886 ULONG OpcodeDSPrefix
;
887 ULONG OpcodeFSPrefix
;
888 ULONG OpcodeGSPrefix
;
889 ULONG OpcodeOPER32Prefix
;
890 ULONG OpcodeADDR32Prefix
;
903 ULONG OpcodeOUTWimm
;
908 ULONG OpcodeLOCKPrefix
;
909 ULONG OpcodeREPNEPrefix
;
910 ULONG OpcodeREPPrefix
;
915 } SYSTEM_VDM_INSTEMUL_INFO
, *PSYSTEM_VDM_INSTEMUL_INFO
;
918 typedef struct _SYSTEM_VDM_BOP_INFO
921 } SYSTEM_VDM_BOP_INFO
, *PSYSTEM_VDM_BOP_INFO
;
924 typedef struct _SYSTEM_CACHE_INFORMATION
928 ULONG PageFaultCount
;
929 ULONG MinimumWorkingSet
;
930 ULONG MaximumWorkingSet
;
931 ULONG CurrentSizeIncludingTransitionInPages
;
932 ULONG PeakSizeIncludingTransitionInPages
;
934 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
937 typedef struct _SYSTEM_POOLTAG
947 ULONG NonPagedAllocs
;
950 } SYSTEM_POOLTAG
, *PSYSTEM_POOLTAG
;
951 typedef struct _SYSTEM_POOLTAG_INFORMATION
954 SYSTEM_POOLTAG TagInfo
[1];
955 } SYSTEM_POOLTAG_INFORMATION
, *PSYSTEM_POOLTAG_INFORMATION
;
958 typedef struct _SYSTEM_INTERRUPT_INFORMATION
960 ULONG ContextSwitches
;
964 ULONG DpcBypassCount
;
965 ULONG ApcBypassCount
;
966 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
969 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
973 ULONG MinimumDpcRate
;
974 ULONG AdjustDpcThreshold
;
976 } SYSTEM_DPC_BEHAVIOR_INFORMATION
, *PSYSTEM_DPC_BEHAVIOR_INFORMATION
;
979 typedef struct _SYSTEM_MEMORY_INFO
983 USHORT TransitionCount
;
984 USHORT ModifiedCount
;
985 USHORT PageTableCount
;
986 } SYSTEM_MEMORY_INFO
, *PSYSTEM_MEMORY_INFO
;
987 typedef struct _SYSTEM_MEMORY_INFORMATION
991 SYSTEM_MEMORY_INFO Memory
[1];
992 } SYSTEM_MEMORY_INFORMATION
, *PSYSTEM_MEMORY_INFORMATION
;
995 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
997 UNICODE_STRING DriverName
;
999 PVOID SectionPointer
;
1001 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer
;
1002 } SYSTEM_GDI_DRIVER_INFORMATION
, *PSYSTEM_GDI_DRIVER_INFORMATION
;
1005 // Not an actually class, simply a PVOID to the ImageAddress
1008 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
1010 ULONG TimeAdjustment
;
1011 ULONG TimeIncrement
;
1013 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION
, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION
;
1015 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
1017 ULONG TimeAdjustment
;
1019 } SYSTEM_SET_TIME_ADJUST_INFORMATION
, *PSYSTEM_SET_TIME_ADJUST_INFORMATION
;
1021 // Class 29 - Same as 25
1023 // FIXME: Class 30 - 31
1026 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
1028 HANDLE CrashDumpSection
;
1029 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
1032 typedef struct _SYSTEM_EXCEPTION_INFORMATION
1034 ULONG AlignmentFixupCount
;
1035 ULONG ExceptionDispatchCount
;
1036 ULONG FloatingEmulationCount
;
1037 ULONG ByteWordEmulationCount
;
1038 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
1041 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
1043 ULONG ValidCrashDump
;
1044 } SYSTEM_CRASH_STATE_INFORMATION
, *PSYSTEM_CRASH_STATE_INFORMATION
;
1047 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
1049 BOOLEAN KernelDebuggerEnabled
;
1050 BOOLEAN KernelDebuggerNotPresent
;
1051 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
1054 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
1056 ULONG ContextSwitches
;
1065 ULONG PreemptCurrent
;
1068 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
1071 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
1073 ULONG RegistryQuotaAllowed
;
1074 ULONG RegistryQuotaUsed
;
1075 ULONG PagedPoolSize
;
1076 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
1079 // Not a structure, simply send the UNICODE_STRING
1082 // Not a structure, simply send a ULONG containing the new separation
1085 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
1088 PLUGPLAY_BUS_INSTANCE BusInstance
[1];
1089 } SYSTEM_PLUGPLAY_BUS_INFORMATION
, *PSYSTEM_PLUGPLAY_BUS_INFORMATION
;
1092 typedef struct _SYSTEM_DOCK_INFORMATION
1094 SYSTEM_DOCK_STATE DockState
;
1095 INTERFACE_TYPE DeviceBusType
;
1096 ULONG DeviceBusNumber
;
1098 } SYSTEM_DOCK_INFORMATION
, *PSYSTEM_DOCK_INFORMATION
;
1101 typedef struct _SYSTEM_POWER_INFORMATION_NATIVE
1103 BOOLEAN SystemSuspendSupported
;
1104 BOOLEAN SystemHibernateSupported
;
1105 BOOLEAN ResumeTimerSupportsSuspend
;
1106 BOOLEAN ResumeTimerSupportsHibernate
;
1107 BOOLEAN LidSupported
;
1108 BOOLEAN TurboSettingSupported
;
1110 BOOLEAN SystemAcOrDc
;
1111 BOOLEAN PowerDownDisabled
;
1112 LARGE_INTEGER SpindownDrives
;
1113 } SYSTEM_POWER_INFORMATION_NATIVE
, *PSYSTEM_POWER_INFORMATION_NATIVE
;
1116 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
1118 PNP_VETO_TYPE VetoType
;
1119 UNICODE_STRING VetoDriver
;
1121 } SYSTEM_LEGACY_DRIVER_INFORMATION
, *PSYSTEM_LEGACY_DRIVER_INFORMATION
;
1124 typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION
;
1127 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
1129 USHORT CurrentDepth
;
1130 USHORT MaximumDepth
;
1131 ULONG TotalAllocates
;
1132 ULONG AllocateMisses
;
1138 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
1141 // Not a structure. Only a HANDLE for the SlipEvent;
1144 // Not a structure. Only a ULONG for the SessionId;
1147 // Not a structure. Only a ULONG for the SessionId;
1152 // Not a structure. Only a ULONG_PTR for the SystemRangeStart
1154 // FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
1159 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
1163 PVOID Buffer
; // Same format as in SystemProcessInformation
1164 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;