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
106 #define EX_PUSH_LOCK_LOCK_V ((ULONG_PTR)0x0)
107 #define EX_PUSH_LOCK_LOCK ((ULONG_PTR)0x1)
108 #define EX_PUSH_LOCK_WAITING ((ULONG_PTR)0x2)
109 #define EX_PUSH_LOCK_WAKING ((ULONG_PTR)0x4)
110 #define EX_PUSH_LOCK_MULTIPLE_SHARED ((ULONG_PTR)0x8)
111 #define EX_PUSH_LOCK_SHARE_INC ((ULONG_PTR)0x10)
112 #define EX_PUSH_LOCK_PTR_BITS ((ULONG_PTR)0xf)
115 // Pushlock Wait Block Flags
117 #define EX_PUSH_LOCK_FLAGS_EXCLUSIVE 1
118 #define EX_PUSH_LOCK_FLAGS_WAIT 2
121 // Shutdown types for NtShutdownSystem
123 typedef enum _SHUTDOWN_ACTION
131 // Responses for NtRaiseHardError
133 typedef enum _HARDERROR_RESPONSE_OPTION
135 OptionAbortRetryIgnore
,
142 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
144 typedef enum _HARDERROR_RESPONSE
146 ResponseReturnToCaller
,
155 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
158 // System Information Classes for NtQuerySystemInformation
160 typedef enum _SYSTEM_INFORMATION_CLASS
162 SystemBasicInformation
,
163 SystemProcessorInformation
,
164 SystemPerformanceInformation
,
165 SystemTimeOfDayInformation
,
166 SystemPathInformation
, /// Obsolete: Use KUSER_SHARED_DATA
167 SystemProcessInformation
,
168 SystemCallCountInformation
,
169 SystemDeviceInformation
,
170 SystemProcessorPerformanceInformation
,
171 SystemFlagsInformation
,
172 SystemCallTimeInformation
,
173 SystemModuleInformation
,
174 SystemLocksInformation
,
175 SystemStackTraceInformation
,
176 SystemPagedPoolInformation
,
177 SystemNonPagedPoolInformation
,
178 SystemHandleInformation
,
179 SystemObjectInformation
,
180 SystemPageFileInformation
,
181 SystemVdmInstemulInformation
,
182 SystemVdmBopInformation
,
183 SystemFileCacheInformation
,
184 SystemPoolTagInformation
,
185 SystemInterruptInformation
,
186 SystemDpcBehaviorInformation
,
187 SystemFullMemoryInformation
,
188 SystemLoadGdiDriverInformation
,
189 SystemUnloadGdiDriverInformation
,
190 SystemTimeAdjustmentInformation
,
191 SystemSummaryMemoryInformation
,
192 SystemNextEventIdInformation
,
193 SystemEventIdsInformation
,
194 SystemCrashDumpInformation
,
195 SystemExceptionInformation
,
196 SystemCrashDumpStateInformation
,
197 SystemKernelDebuggerInformation
,
198 SystemContextSwitchInformation
,
199 SystemRegistryQuotaInformation
,
200 SystemExtendServiceTableInformation
,
201 SystemPrioritySeperation
,
202 SystemPlugPlayBusInformation
,
203 SystemDockInformation
,
204 SystemPowerInformationNative
,
205 SystemProcessorSpeedInformation
,
206 SystemCurrentTimeZoneInformation
,
207 SystemLookasideInformation
,
208 SystemTimeSlipNotification
,
211 SystemSessionInformation
,
212 SystemRangeStartInformation
,
213 SystemVerifierInformation
,
215 SystemSessionProcessesInformation
,
216 SystemInformationClassMax
217 } SYSTEM_INFORMATION_CLASS
;
220 // System Information Classes for NtQueryMutant
222 typedef enum _MUTANT_INFORMATION_CLASS
224 MutantBasicInformation
225 } MUTANT_INFORMATION_CLASS
;
228 // System Information Classes for NtQueryAtom
230 typedef enum _ATOM_INFORMATION_CLASS
232 AtomBasicInformation
,
233 AtomTableInformation
,
234 } ATOM_INFORMATION_CLASS
;
237 // System Information Classes for NtQueryTimer
239 typedef enum _TIMER_INFORMATION_CLASS
241 TimerBasicInformation
242 } TIMER_INFORMATION_CLASS
;
245 // System Information Classes for NtQuerySemaphore
247 typedef enum _SEMAPHORE_INFORMATION_CLASS
249 SemaphoreBasicInformation
250 } SEMAPHORE_INFORMATION_CLASS
;
253 // System Information Classes for NtQueryEvent
255 typedef enum _EVENT_INFORMATION_CLASS
257 EventBasicInformation
258 } EVENT_INFORMATION_CLASS
;
260 #ifndef NTOS_MODE_USER
263 // Executive Work Queue Structures
265 typedef struct _EX_QUEUE_WORKER_INFO
267 ULONG QueueDisabled
:1;
268 ULONG MakeThreadsAsNecessary
:1;
270 ULONG WorkerCount
:29;
271 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
273 typedef struct _EX_WORK_QUEUE
276 LONG DynamicThreadCount
;
277 ULONG WorkItemsProcessed
;
278 ULONG WorkItemsProcessedLastPass
;
279 ULONG QueueDepthLastPass
;
280 EX_QUEUE_WORKER_INFO Info
;
281 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
284 // Executive Fast Reference Structure
286 typedef struct _EX_FAST_REF
294 } EX_FAST_REF
, *PEX_FAST_REF
;
297 // Executive Cache-Aware Rundown Reference Descriptor
299 typedef struct _EX_RUNDOWN_REF_CACHE_AWARE
307 } EX_RUNDOWN_REF_CACHE_AWARE
, *PEX_RUNDOWN_REF_CACHE_AWARE
;
310 // Executive Rundown Wait Block
312 typedef struct _EX_RUNDOWN_WAIT_BLOCK
316 } EX_RUNDOWN_WAIT_BLOCK
, *PEX_RUNDOWN_WAIT_BLOCK
;
319 // Executive Pushlock
323 typedef struct _EX_PUSH_LOCK
332 ULONG_PTR MultipleShared
:1;
333 ULONG_PTR Shared
:sizeof (ULONG_PTR
) * 8 - 4;
338 } EX_PUSH_LOCK
, *PEX_PUSH_LOCK
;
341 // Executive Pushlock Wait Block
343 #ifndef __GNUC__ // WARNING! PUSHLOCKS WILL NOT WORK IN GCC FOR NOW!!!
344 __declspec(align(16))
346 typedef struct _EX_PUSH_LOCK_WAIT_BLOCK
353 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Next
;
354 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Last
;
355 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Previous
;
360 EX_PUSH_LOCK NewValue
;
361 EX_PUSH_LOCK OldValue
;
362 PEX_PUSH_LOCK PushLock
;
364 } EX_PUSH_LOCK_WAIT_BLOCK
, *PEX_PUSH_LOCK_WAIT_BLOCK
;
369 typedef struct _CALLBACK_OBJECT
373 LIST_ENTRY RegisteredCallbacks
;
374 ULONG AllowMultipleCallbacks
;
375 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
380 typedef struct _EPROFILE
392 KPROFILE_SOURCE ProfileSource
;
394 } EPROFILE
, *PEPROFILE
;
397 // Handle Table Structures
399 typedef struct _HANDLE_TABLE_ENTRY_INFO
402 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
404 typedef struct _HANDLE_TABLE_ENTRY
409 ULONG_PTR ObAttributes
;
410 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
416 USHORT GrantedAccessIndex
;
417 LONG NextFreeTableEntry
;
419 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
421 typedef struct _HANDLE_TABLE
425 PHANDLE_TABLE_ENTRY
**Table
;
426 PEPROCESS QuotaProcess
;
427 HANDLE UniqueProcessId
;
428 LONG FirstFreeTableEntry
;
429 LONG NextIndexNeedingPool
;
430 ERESOURCE HandleTableLock
;
431 LIST_ENTRY HandleTableList
;
432 KEVENT HandleContentionEvent
;
433 } HANDLE_TABLE
, *PHANDLE_TABLE
;
438 // Hard Error LPC Message
440 typedef struct _HARDERROR_MSG
444 LARGE_INTEGER ErrorTime
;
445 ULONG ValidResponseOptions
;
447 ULONG NumberOfParameters
;
448 ULONG UnicodeStringParameterMask
;
449 ULONG Parameters
[MAXIMUM_HARDERROR_PARAMETERS
];
450 } HARDERROR_MSG
, *PHARDERROR_MSG
;
453 // Information Structures for NtQueryMutant
455 typedef struct _MUTANT_BASIC_INFORMATION
458 BOOLEAN OwnedByCaller
;
459 BOOLEAN AbandonedState
;
460 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
463 // Information Structures for NtQueryAtom
465 typedef struct _ATOM_BASIC_INFORMATION
471 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
473 typedef struct _ATOM_TABLE_INFORMATION
477 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
480 // Information Structures for NtQueryTimer
482 typedef struct _TIMER_BASIC_INFORMATION
484 LARGE_INTEGER TimeRemaining
;
486 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
489 // Information Structures for NtQuerySemaphore
491 typedef struct _SEMAPHORE_BASIC_INFORMATION
495 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
498 // Information Structures for NtQueryEvent
500 typedef struct _EVENT_BASIC_INFORMATION
502 EVENT_TYPE EventType
;
504 } EVENT_BASIC_INFORMATION
, *PEVENT_BASIC_INFORMATION
;
507 // Information Structures for NtQuerySystemInformation
509 typedef struct _SYSTEM_BASIC_INFORMATION
512 ULONG TimerResolution
;
514 ULONG NumberOfPhysicalPages
;
515 ULONG LowestPhysicalPageNumber
;
516 ULONG HighestPhysicalPageNumber
;
517 ULONG AllocationGranularity
;
518 ULONG MinimumUserModeAddress
;
519 ULONG MaximumUserModeAddress
;
520 KAFFINITY ActiveProcessorsAffinityMask
;
521 CCHAR NumberOfProcessors
;
522 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
525 typedef struct _SYSTEM_PROCESSOR_INFORMATION
527 USHORT ProcessorArchitecture
;
528 USHORT ProcessorLevel
;
529 USHORT ProcessorRevision
;
531 ULONG ProcessorFeatureBits
;
532 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
535 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
537 LARGE_INTEGER IdleProcessTime
;
538 LARGE_INTEGER IoReadTransferCount
;
539 LARGE_INTEGER IoWriteTransferCount
;
540 LARGE_INTEGER IoOtherTransferCount
;
541 ULONG IoReadOperationCount
;
542 ULONG IoWriteOperationCount
;
543 ULONG IoOtherOperationCount
;
544 ULONG AvailablePages
;
545 ULONG CommittedPages
;
547 ULONG PeakCommitment
;
548 ULONG PageFaultCount
;
549 ULONG CopyOnWriteCount
;
550 ULONG TransitionCount
;
551 ULONG CacheTransitionCount
;
552 ULONG DemandZeroCount
;
554 ULONG PageReadIoCount
;
555 ULONG CacheReadCount
;
557 ULONG DirtyPagesWriteCount
;
558 ULONG DirtyWriteIoCount
;
559 ULONG MappedPagesWriteCount
;
560 ULONG MappedWriteIoCount
;
561 ULONG PagedPoolPages
;
562 ULONG NonPagedPoolPages
;
563 ULONG PagedPoolAllocs
;
564 ULONG PagedPoolFrees
;
565 ULONG NonPagedPoolAllocs
;
566 ULONG NonPagedPoolFrees
;
567 ULONG FreeSystemPtes
;
568 ULONG ResidentSystemCodePage
;
569 ULONG TotalSystemDriverPages
;
570 ULONG TotalSystemCodePages
;
571 ULONG NonPagedPoolLookasideHits
;
572 ULONG PagedPoolLookasideHits
;
574 ULONG ResidentSystemCachePage
;
575 ULONG ResidentPagedPoolPage
;
576 ULONG ResidentSystemDriverPage
;
577 ULONG CcFastReadNoWait
;
578 ULONG CcFastReadWait
;
579 ULONG CcFastReadResourceMiss
;
580 ULONG CcFastReadNotPossible
;
581 ULONG CcFastMdlReadNoWait
;
582 ULONG CcFastMdlReadWait
;
583 ULONG CcFastMdlReadResourceMiss
;
584 ULONG CcFastMdlReadNotPossible
;
585 ULONG CcMapDataNoWait
;
587 ULONG CcMapDataNoWaitMiss
;
588 ULONG CcMapDataWaitMiss
;
589 ULONG CcPinMappedDataCount
;
590 ULONG CcPinReadNoWait
;
592 ULONG CcPinReadNoWaitMiss
;
593 ULONG CcPinReadWaitMiss
;
594 ULONG CcCopyReadNoWait
;
595 ULONG CcCopyReadWait
;
596 ULONG CcCopyReadNoWaitMiss
;
597 ULONG CcCopyReadWaitMiss
;
598 ULONG CcMdlReadNoWait
;
600 ULONG CcMdlReadNoWaitMiss
;
601 ULONG CcMdlReadWaitMiss
;
602 ULONG CcReadAheadIos
;
603 ULONG CcLazyWriteIos
;
604 ULONG CcLazyWritePages
;
607 ULONG ContextSwitches
;
608 ULONG FirstLevelTbFills
;
609 ULONG SecondLevelTbFills
;
611 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
614 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
616 LARGE_INTEGER BootTime
;
617 LARGE_INTEGER CurrentTime
;
618 LARGE_INTEGER TimeZoneBias
;
621 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
624 // This class is obsolete, please use KUSER_SHARED_DATA instead
627 typedef struct _SYSTEM_THREAD_INFORMATION
629 LARGE_INTEGER KernelTime
;
630 LARGE_INTEGER UserTime
;
631 LARGE_INTEGER CreateTime
;
637 ULONG ContextSwitches
;
640 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
642 typedef struct _SYSTEM_PROCESS_INFORMATION
644 ULONG NextEntryOffset
;
645 ULONG NumberOfThreads
;
646 LARGE_INTEGER SpareLi1
;
647 LARGE_INTEGER SpareLi2
;
648 LARGE_INTEGER SpareLi3
;
649 LARGE_INTEGER CreateTime
;
650 LARGE_INTEGER UserTime
;
651 LARGE_INTEGER KernelTime
;
652 UNICODE_STRING ImageName
;
653 KPRIORITY BasePriority
;
654 HANDLE UniqueProcessId
;
655 HANDLE InheritedFromUniqueProcessId
;
658 ULONG PageDirectoryFrame
;
661 // This part corresponds to VM_COUNTERS_EX.
662 // NOTE: *NOT* THE SAME AS VM_COUNTERS!
664 ULONG PeakVirtualSize
;
666 ULONG PageFaultCount
;
667 ULONG PeakWorkingSetSize
;
668 ULONG WorkingSetSize
;
669 ULONG QuotaPeakPagedPoolUsage
;
670 ULONG QuotaPagedPoolUsage
;
671 ULONG QuotaPeakNonPagedPoolUsage
;
672 ULONG QuotaNonPagedPoolUsage
;
674 ULONG PeakPagefileUsage
;
678 // This part corresponds to IO_COUNTERS
680 LARGE_INTEGER ReadOperationCount
;
681 LARGE_INTEGER WriteOperationCount
;
682 LARGE_INTEGER OtherOperationCount
;
683 LARGE_INTEGER ReadTransferCount
;
684 LARGE_INTEGER WriteTransferCount
;
685 LARGE_INTEGER OtherTransferCount
;
687 SYSTEM_THREAD_INFORMATION TH
[1];
688 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
691 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
694 ULONG NumberOfTables
;
695 } SYSTEM_CALL_COUNT_INFORMATION
, *PSYSTEM_CALL_COUNT_INFORMATION
;
698 typedef struct _SYSTEM_DEVICE_INFORMATION
701 ULONG NumberOfFloppies
;
702 ULONG NumberOfCdRoms
;
704 ULONG NumberOfSerialPorts
;
705 ULONG NumberOfParallelPorts
;
706 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
709 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
711 LARGE_INTEGER IdleTime
;
712 LARGE_INTEGER KernelTime
;
713 LARGE_INTEGER UserTime
;
714 LARGE_INTEGER DpcTime
;
715 LARGE_INTEGER InterruptTime
;
716 ULONG InterruptCount
;
717 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
;
720 typedef struct _SYSTEM_FLAGS_INFORMATION
723 } SYSTEM_FLAGS_INFORMATION
, *PSYSTEM_FLAGS_INFORMATION
;
726 typedef struct _SYSTEM_CALL_TIME_INFORMATION
730 LARGE_INTEGER TimeOfCalls
[1];
731 } SYSTEM_CALL_TIME_INFORMATION
, *PSYSTEM_CALL_TIME_INFORMATION
;
734 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
746 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
747 typedef struct _SYSTEM_MODULE_INFORMATION
750 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
751 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
754 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
756 ULONG ResourceAddress
;
760 ULONG ContentionCount
;
762 ULONG NumberOfSharedWaiters
;
763 ULONG NumberOfExclusiveWaiters
;
764 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
766 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
769 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
770 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
773 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
776 } SYSTEM_BACKTRACE_INFORMATION_ENTRY
, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY
;
778 typedef struct _SYSTEM_BACKTRACE_INFORMATION
782 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace
[1];
783 } SYSTEM_BACKTRACE_INFORMATION
, *PSYSTEM_BACKTRACE_INFORMATION
;
786 typedef struct _SYSTEM_POOL_ENTRY
790 USHORT AllocatorBackTraceIndex
;
796 PVOID ProcessChargedQuota
;
798 } SYSTEM_POOL_ENTRY
, *PSYSTEM_POOL_ENTRY
;
800 typedef struct _SYSTEM_POOL_INFORMATION
804 USHORT EntryOverhead
;
805 BOOLEAN PoolTagPresent
;
807 ULONG NumberOfEntries
;
808 SYSTEM_POOL_ENTRY Entries
[1];
809 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
812 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
814 USHORT UniqueProcessId
;
815 USHORT CreatorBackTraceIndex
;
816 UCHAR ObjectTypeIndex
;
817 UCHAR HandleAttributes
;
821 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
823 typedef struct _SYSTEM_HANDLE_INFORMATION
825 ULONG NumberOfHandles
;
826 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
827 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
830 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
832 ULONG NextEntryOffset
;
833 ULONG NumberOfObjects
;
834 ULONG NumberOfHandles
;
836 ULONG InvalidAttributes
;
837 GENERIC_MAPPING GenericMapping
;
838 ULONG ValidAccessMask
;
840 BOOLEAN SecurityRequired
;
841 BOOLEAN WaitableObject
;
842 UNICODE_STRING TypeName
;
843 } SYSTEM_OBJECTTYPE_INFORMATION
, *PSYSTEM_OBJECTTYPE_INFORMATION
;
845 typedef struct _SYSTEM_OBJECT_INFORMATION
847 ULONG NextEntryOffset
;
849 HANDLE CreatorUniqueProcess
;
850 USHORT CreatorBackTraceIndex
;
854 ULONG PagedPoolCharge
;
855 ULONG NonPagedPoolCharge
;
856 HANDLE ExclusiveProcessId
;
857 PVOID SecurityDescriptor
;
858 OBJECT_NAME_INFORMATION NameInfo
;
859 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
862 typedef struct _SYSTEM_PAGEFILE_INFORMATION
864 ULONG NextEntryOffset
;
868 UNICODE_STRING PageFileName
;
869 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
872 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
874 ULONG SegmentNotPresent
;
876 ULONG OpcodeESPrefix
;
877 ULONG OpcodeCSPrefix
;
878 ULONG OpcodeSSPrefix
;
879 ULONG OpcodeDSPrefix
;
880 ULONG OpcodeFSPrefix
;
881 ULONG OpcodeGSPrefix
;
882 ULONG OpcodeOPER32Prefix
;
883 ULONG OpcodeADDR32Prefix
;
896 ULONG OpcodeOUTWimm
;
901 ULONG OpcodeLOCKPrefix
;
902 ULONG OpcodeREPNEPrefix
;
903 ULONG OpcodeREPPrefix
;
908 } SYSTEM_VDM_INSTEMUL_INFO
, *PSYSTEM_VDM_INSTEMUL_INFO
;
911 typedef struct _SYSTEM_VDM_BOP_INFO
914 } SYSTEM_VDM_BOP_INFO
, *PSYSTEM_VDM_BOP_INFO
;
917 typedef struct _SYSTEM_CACHE_INFORMATION
921 ULONG PageFaultCount
;
922 ULONG MinimumWorkingSet
;
923 ULONG MaximumWorkingSet
;
924 ULONG CurrentSizeIncludingTransitionInPages
;
925 ULONG PeakSizeIncludingTransitionInPages
;
927 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
930 typedef struct _SYSTEM_POOLTAG
940 ULONG NonPagedAllocs
;
943 } SYSTEM_POOLTAG
, *PSYSTEM_POOLTAG
;
944 typedef struct _SYSTEM_POOLTAG_INFORMATION
947 SYSTEM_POOLTAG TagInfo
[1];
948 } SYSTEM_POOLTAG_INFORMATION
, *PSYSTEM_POOLTAG_INFORMATION
;
951 typedef struct _SYSTEM_INTERRUPT_INFORMATION
953 ULONG ContextSwitches
;
957 ULONG DpcBypassCount
;
958 ULONG ApcBypassCount
;
959 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
962 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
966 ULONG MinimumDpcRate
;
967 ULONG AdjustDpcThreshold
;
969 } SYSTEM_DPC_BEHAVIOR_INFORMATION
, *PSYSTEM_DPC_BEHAVIOR_INFORMATION
;
972 typedef struct _SYSTEM_MEMORY_INFO
976 USHORT TransitionCount
;
977 USHORT ModifiedCount
;
978 USHORT PageTableCount
;
979 } SYSTEM_MEMORY_INFO
, *PSYSTEM_MEMORY_INFO
;
980 typedef struct _SYSTEM_MEMORY_INFORMATION
984 SYSTEM_MEMORY_INFO Memory
[1];
985 } SYSTEM_MEMORY_INFORMATION
, *PSYSTEM_MEMORY_INFORMATION
;
988 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
990 UNICODE_STRING DriverName
;
992 PVOID SectionPointer
;
994 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer
;
995 } SYSTEM_GDI_DRIVER_INFORMATION
, *PSYSTEM_GDI_DRIVER_INFORMATION
;
998 // Not an actually class, simply a PVOID to the ImageAddress
1001 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
1003 ULONG TimeAdjustment
;
1004 ULONG TimeIncrement
;
1006 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION
, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION
;
1008 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
1010 ULONG TimeAdjustment
;
1012 } SYSTEM_SET_TIME_ADJUST_INFORMATION
, *PSYSTEM_SET_TIME_ADJUST_INFORMATION
;
1014 // Class 29 - Same as 25
1016 // FIXME: Class 30 - 31
1019 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
1021 HANDLE CrashDumpSection
;
1022 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
1025 typedef struct _SYSTEM_EXCEPTION_INFORMATION
1027 ULONG AlignmentFixupCount
;
1028 ULONG ExceptionDispatchCount
;
1029 ULONG FloatingEmulationCount
;
1030 ULONG ByteWordEmulationCount
;
1031 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
1034 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
1036 ULONG ValidCrashDump
;
1037 } SYSTEM_CRASH_STATE_INFORMATION
, *PSYSTEM_CRASH_STATE_INFORMATION
;
1040 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
1042 BOOLEAN KernelDebuggerEnabled
;
1043 BOOLEAN KernelDebuggerNotPresent
;
1044 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
1047 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
1049 ULONG ContextSwitches
;
1058 ULONG PreemptCurrent
;
1061 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
1064 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
1066 ULONG RegistryQuotaAllowed
;
1067 ULONG RegistryQuotaUsed
;
1068 ULONG PagedPoolSize
;
1069 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
1072 // Not a structure, simply send the UNICODE_STRING
1075 // Not a structure, simply send a ULONG containing the new separation
1078 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
1081 PLUGPLAY_BUS_INSTANCE BusInstance
[1];
1082 } SYSTEM_PLUGPLAY_BUS_INFORMATION
, *PSYSTEM_PLUGPLAY_BUS_INFORMATION
;
1085 typedef struct _SYSTEM_DOCK_INFORMATION
1087 SYSTEM_DOCK_STATE DockState
;
1088 INTERFACE_TYPE DeviceBusType
;
1089 ULONG DeviceBusNumber
;
1091 } SYSTEM_DOCK_INFORMATION
, *PSYSTEM_DOCK_INFORMATION
;
1094 typedef struct _SYSTEM_POWER_INFORMATION_NATIVE
1096 BOOLEAN SystemSuspendSupported
;
1097 BOOLEAN SystemHibernateSupported
;
1098 BOOLEAN ResumeTimerSupportsSuspend
;
1099 BOOLEAN ResumeTimerSupportsHibernate
;
1100 BOOLEAN LidSupported
;
1101 BOOLEAN TurboSettingSupported
;
1103 BOOLEAN SystemAcOrDc
;
1104 BOOLEAN PowerDownDisabled
;
1105 LARGE_INTEGER SpindownDrives
;
1106 } SYSTEM_POWER_INFORMATION_NATIVE
, *PSYSTEM_POWER_INFORMATION_NATIVE
;
1109 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
1111 PNP_VETO_TYPE VetoType
;
1112 UNICODE_STRING VetoDriver
;
1114 } SYSTEM_LEGACY_DRIVER_INFORMATION
, *PSYSTEM_LEGACY_DRIVER_INFORMATION
;
1117 typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION
;
1120 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
1122 USHORT CurrentDepth
;
1123 USHORT MaximumDepth
;
1124 ULONG TotalAllocates
;
1125 ULONG AllocateMisses
;
1131 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
1134 // Not a structure. Only a HANDLE for the SlipEvent;
1137 // Not a structure. Only a ULONG for the SessionId;
1140 // Not a structure. Only a ULONG for the SessionId;
1145 // Not a structure. Only a ULONG_PTR for the SystemRangeStart
1147 // FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
1152 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
1156 PVOID Buffer
; // Same format as in SystemProcessInformation
1157 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;