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 ULONG 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
321 typedef struct _EX_PUSH_LOCK
330 ULONG_PTR MultipleShared
:1;
331 ULONG_PTR Shared
:sizeof (ULONG_PTR
) * 8 - 4;
336 } EX_PUSH_LOCK
, *PEX_PUSH_LOCK
;
339 // Executive Pushlock Wait Block
341 #ifndef __GNUC__ // WARNING! PUSHLOCKS WILL NOT WORK IN GCC FOR NOW!!!
342 __declspec(align(16))
344 typedef struct _EX_PUSH_LOCK_WAIT_BLOCK
351 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Next
;
352 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Last
;
353 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Previous
;
358 EX_PUSH_LOCK NewValue
;
359 EX_PUSH_LOCK OldValue
;
360 PEX_PUSH_LOCK PushLock
;
362 } EX_PUSH_LOCK_WAIT_BLOCK
, *PEX_PUSH_LOCK_WAIT_BLOCK
;
367 typedef struct _CALLBACK_OBJECT
371 LIST_ENTRY RegisteredCallbacks
;
372 ULONG AllowMultipleCallbacks
;
373 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
378 typedef struct _EPROFILE
390 KPROFILE_SOURCE ProfileSource
;
392 } EPROFILE
, *PEPROFILE
;
395 // Handle Table Structures
397 typedef struct _HANDLE_TABLE_ENTRY_INFO
400 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
402 typedef struct _HANDLE_TABLE_ENTRY
407 ULONG_PTR ObAttributes
;
408 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
414 USHORT GrantedAccessIndex
;
415 LONG NextFreeTableEntry
;
417 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
419 typedef struct _HANDLE_TABLE
423 PHANDLE_TABLE_ENTRY
**Table
;
424 PEPROCESS QuotaProcess
;
425 HANDLE UniqueProcessId
;
426 LONG FirstFreeTableEntry
;
427 LONG NextIndexNeedingPool
;
428 ERESOURCE HandleTableLock
;
429 LIST_ENTRY HandleTableList
;
430 KEVENT HandleContentionEvent
;
431 } HANDLE_TABLE
, *PHANDLE_TABLE
;
436 // Hard Error LPC Message
438 typedef struct _HARDERROR_MSG
442 LARGE_INTEGER ErrorTime
;
443 ULONG ValidResponseOptions
;
445 ULONG NumberOfParameters
;
446 ULONG UnicodeStringParameterMask
;
447 ULONG Parameters
[MAXIMUM_HARDERROR_PARAMETERS
];
448 } HARDERROR_MSG
, *PHARDERROR_MSG
;
451 // Information Structures for NtQueryMutant
453 typedef struct _MUTANT_BASIC_INFORMATION
456 BOOLEAN OwnedByCaller
;
457 BOOLEAN AbandonedState
;
458 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
461 // Information Structures for NtQueryAtom
463 typedef struct _ATOM_BASIC_INFORMATION
469 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
471 typedef struct _ATOM_TABLE_INFORMATION
475 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
478 // Information Structures for NtQueryTimer
480 typedef struct _TIMER_BASIC_INFORMATION
482 LARGE_INTEGER TimeRemaining
;
484 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
487 // Information Structures for NtQuerySemaphore
489 typedef struct _SEMAPHORE_BASIC_INFORMATION
493 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
496 // Information Structures for NtQueryEvent
498 typedef struct _EVENT_BASIC_INFORMATION
500 EVENT_TYPE EventType
;
502 } EVENT_BASIC_INFORMATION
, *PEVENT_BASIC_INFORMATION
;
505 // Information Structures for NtQuerySystemInformation
507 typedef struct _SYSTEM_BASIC_INFORMATION
510 ULONG TimerResolution
;
512 ULONG NumberOfPhysicalPages
;
513 ULONG LowestPhysicalPageNumber
;
514 ULONG HighestPhysicalPageNumber
;
515 ULONG AllocationGranularity
;
516 ULONG MinimumUserModeAddress
;
517 ULONG MaximumUserModeAddress
;
518 KAFFINITY ActiveProcessorsAffinityMask
;
519 CCHAR NumberOfProcessors
;
520 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
523 typedef struct _SYSTEM_PROCESSOR_INFORMATION
525 USHORT ProcessorArchitecture
;
526 USHORT ProcessorLevel
;
527 USHORT ProcessorRevision
;
529 ULONG ProcessorFeatureBits
;
530 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
533 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
535 LARGE_INTEGER IdleProcessTime
;
536 LARGE_INTEGER IoReadTransferCount
;
537 LARGE_INTEGER IoWriteTransferCount
;
538 LARGE_INTEGER IoOtherTransferCount
;
539 ULONG IoReadOperationCount
;
540 ULONG IoWriteOperationCount
;
541 ULONG IoOtherOperationCount
;
542 ULONG AvailablePages
;
543 ULONG CommittedPages
;
545 ULONG PeakCommitment
;
546 ULONG PageFaultCount
;
547 ULONG CopyOnWriteCount
;
548 ULONG TransitionCount
;
549 ULONG CacheTransitionCount
;
550 ULONG DemandZeroCount
;
552 ULONG PageReadIoCount
;
553 ULONG CacheReadCount
;
555 ULONG DirtyPagesWriteCount
;
556 ULONG DirtyWriteIoCount
;
557 ULONG MappedPagesWriteCount
;
558 ULONG MappedWriteIoCount
;
559 ULONG PagedPoolPages
;
560 ULONG NonPagedPoolPages
;
561 ULONG PagedPoolAllocs
;
562 ULONG PagedPoolFrees
;
563 ULONG NonPagedPoolAllocs
;
564 ULONG NonPagedPoolFrees
;
565 ULONG FreeSystemPtes
;
566 ULONG ResidentSystemCodePage
;
567 ULONG TotalSystemDriverPages
;
568 ULONG TotalSystemCodePages
;
569 ULONG NonPagedPoolLookasideHits
;
570 ULONG PagedPoolLookasideHits
;
572 ULONG ResidentSystemCachePage
;
573 ULONG ResidentPagedPoolPage
;
574 ULONG ResidentSystemDriverPage
;
575 ULONG CcFastReadNoWait
;
576 ULONG CcFastReadWait
;
577 ULONG CcFastReadResourceMiss
;
578 ULONG CcFastReadNotPossible
;
579 ULONG CcFastMdlReadNoWait
;
580 ULONG CcFastMdlReadWait
;
581 ULONG CcFastMdlReadResourceMiss
;
582 ULONG CcFastMdlReadNotPossible
;
583 ULONG CcMapDataNoWait
;
585 ULONG CcMapDataNoWaitMiss
;
586 ULONG CcMapDataWaitMiss
;
587 ULONG CcPinMappedDataCount
;
588 ULONG CcPinReadNoWait
;
590 ULONG CcPinReadNoWaitMiss
;
591 ULONG CcPinReadWaitMiss
;
592 ULONG CcCopyReadNoWait
;
593 ULONG CcCopyReadWait
;
594 ULONG CcCopyReadNoWaitMiss
;
595 ULONG CcCopyReadWaitMiss
;
596 ULONG CcMdlReadNoWait
;
598 ULONG CcMdlReadNoWaitMiss
;
599 ULONG CcMdlReadWaitMiss
;
600 ULONG CcReadAheadIos
;
601 ULONG CcLazyWriteIos
;
602 ULONG CcLazyWritePages
;
605 ULONG ContextSwitches
;
606 ULONG FirstLevelTbFills
;
607 ULONG SecondLevelTbFills
;
609 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
612 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
614 LARGE_INTEGER BootTime
;
615 LARGE_INTEGER CurrentTime
;
616 LARGE_INTEGER TimeZoneBias
;
619 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
622 // This class is obsolete, please use KUSER_SHARED_DATA instead
625 typedef struct _SYSTEM_THREAD_INFORMATION
627 LARGE_INTEGER KernelTime
;
628 LARGE_INTEGER UserTime
;
629 LARGE_INTEGER CreateTime
;
635 ULONG ContextSwitches
;
638 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
640 typedef struct _SYSTEM_PROCESS_INFORMATION
642 ULONG NextEntryOffset
;
643 ULONG NumberOfThreads
;
644 LARGE_INTEGER SpareLi1
;
645 LARGE_INTEGER SpareLi2
;
646 LARGE_INTEGER SpareLi3
;
647 LARGE_INTEGER CreateTime
;
648 LARGE_INTEGER UserTime
;
649 LARGE_INTEGER KernelTime
;
650 UNICODE_STRING ImageName
;
651 KPRIORITY BasePriority
;
652 HANDLE UniqueProcessId
;
653 HANDLE InheritedFromUniqueProcessId
;
656 ULONG PageDirectoryFrame
;
659 // This part corresponds to VM_COUNTERS_EX.
660 // NOTE: *NOT* THE SAME AS VM_COUNTERS!
662 ULONG PeakVirtualSize
;
664 ULONG PageFaultCount
;
665 ULONG PeakWorkingSetSize
;
666 ULONG WorkingSetSize
;
667 ULONG QuotaPeakPagedPoolUsage
;
668 ULONG QuotaPagedPoolUsage
;
669 ULONG QuotaPeakNonPagedPoolUsage
;
670 ULONG QuotaNonPagedPoolUsage
;
672 ULONG PeakPagefileUsage
;
676 // This part corresponds to IO_COUNTERS
678 LARGE_INTEGER ReadOperationCount
;
679 LARGE_INTEGER WriteOperationCount
;
680 LARGE_INTEGER OtherOperationCount
;
681 LARGE_INTEGER ReadTransferCount
;
682 LARGE_INTEGER WriteTransferCount
;
683 LARGE_INTEGER OtherTransferCount
;
685 SYSTEM_THREAD_INFORMATION TH
[1];
686 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
689 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
692 ULONG NumberOfTables
;
693 } SYSTEM_CALL_COUNT_INFORMATION
, *PSYSTEM_CALL_COUNT_INFORMATION
;
696 typedef struct _SYSTEM_DEVICE_INFORMATION
699 ULONG NumberOfFloppies
;
700 ULONG NumberOfCdRoms
;
702 ULONG NumberOfSerialPorts
;
703 ULONG NumberOfParallelPorts
;
704 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
707 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
709 LARGE_INTEGER IdleTime
;
710 LARGE_INTEGER KernelTime
;
711 LARGE_INTEGER UserTime
;
712 LARGE_INTEGER DpcTime
;
713 LARGE_INTEGER InterruptTime
;
714 ULONG InterruptCount
;
715 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
;
718 typedef struct _SYSTEM_FLAGS_INFORMATION
721 } SYSTEM_FLAGS_INFORMATION
, *PSYSTEM_FLAGS_INFORMATION
;
724 typedef struct _SYSTEM_CALL_TIME_INFORMATION
728 LARGE_INTEGER TimeOfCalls
[1];
729 } SYSTEM_CALL_TIME_INFORMATION
, *PSYSTEM_CALL_TIME_INFORMATION
;
732 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
744 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
745 typedef struct _SYSTEM_MODULE_INFORMATION
748 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
749 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
752 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
754 ULONG ResourceAddress
;
758 ULONG ContentionCount
;
760 ULONG NumberOfSharedWaiters
;
761 ULONG NumberOfExclusiveWaiters
;
762 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
764 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
767 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
768 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
771 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
774 } SYSTEM_BACKTRACE_INFORMATION_ENTRY
, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY
;
776 typedef struct _SYSTEM_BACKTRACE_INFORMATION
780 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace
[1];
781 } SYSTEM_BACKTRACE_INFORMATION
, *PSYSTEM_BACKTRACE_INFORMATION
;
784 typedef struct _SYSTEM_POOL_ENTRY
788 USHORT AllocatorBackTraceIndex
;
794 PVOID ProcessChargedQuota
;
796 } SYSTEM_POOL_ENTRY
, *PSYSTEM_POOL_ENTRY
;
798 typedef struct _SYSTEM_POOL_INFORMATION
802 USHORT EntryOverhead
;
803 BOOLEAN PoolTagPresent
;
805 ULONG NumberOfEntries
;
806 SYSTEM_POOL_ENTRY Entries
[1];
807 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
810 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
812 USHORT UniqueProcessId
;
813 USHORT CreatorBackTraceIndex
;
814 UCHAR ObjectTypeIndex
;
815 UCHAR HandleAttributes
;
819 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
821 typedef struct _SYSTEM_HANDLE_INFORMATION
823 ULONG NumberOfHandles
;
824 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
825 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
828 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
830 ULONG NextEntryOffset
;
831 ULONG NumberOfObjects
;
832 ULONG NumberOfHandles
;
834 ULONG InvalidAttributes
;
835 GENERIC_MAPPING GenericMapping
;
836 ULONG ValidAccessMask
;
838 BOOLEAN SecurityRequired
;
839 BOOLEAN WaitableObject
;
840 UNICODE_STRING TypeName
;
841 } SYSTEM_OBJECTTYPE_INFORMATION
, *PSYSTEM_OBJECTTYPE_INFORMATION
;
843 typedef struct _SYSTEM_OBJECT_INFORMATION
845 ULONG NextEntryOffset
;
847 HANDLE CreatorUniqueProcess
;
848 USHORT CreatorBackTraceIndex
;
852 ULONG PagedPoolCharge
;
853 ULONG NonPagedPoolCharge
;
854 HANDLE ExclusiveProcessId
;
855 PVOID SecurityDescriptor
;
856 OBJECT_NAME_INFORMATION NameInfo
;
857 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
860 typedef struct _SYSTEM_PAGEFILE_INFORMATION
862 ULONG NextEntryOffset
;
866 UNICODE_STRING PageFileName
;
867 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
870 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
872 ULONG SegmentNotPresent
;
874 ULONG OpcodeESPrefix
;
875 ULONG OpcodeCSPrefix
;
876 ULONG OpcodeSSPrefix
;
877 ULONG OpcodeDSPrefix
;
878 ULONG OpcodeFSPrefix
;
879 ULONG OpcodeGSPrefix
;
880 ULONG OpcodeOPER32Prefix
;
881 ULONG OpcodeADDR32Prefix
;
894 ULONG OpcodeOUTWimm
;
899 ULONG OpcodeLOCKPrefix
;
900 ULONG OpcodeREPNEPrefix
;
901 ULONG OpcodeREPPrefix
;
906 } SYSTEM_VDM_INSTEMUL_INFO
, *PSYSTEM_VDM_INSTEMUL_INFO
;
909 typedef struct _SYSTEM_VDM_BOP_INFO
912 } SYSTEM_VDM_BOP_INFO
, *PSYSTEM_VDM_BOP_INFO
;
915 typedef struct _SYSTEM_CACHE_INFORMATION
919 ULONG PageFaultCount
;
920 ULONG MinimumWorkingSet
;
921 ULONG MaximumWorkingSet
;
922 ULONG CurrentSizeIncludingTransitionInPages
;
923 ULONG PeakSizeIncludingTransitionInPages
;
925 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
928 typedef struct _SYSTEM_POOLTAG
938 ULONG NonPagedAllocs
;
941 } SYSTEM_POOLTAG
, *PSYSTEM_POOLTAG
;
942 typedef struct _SYSTEM_POOLTAG_INFORMATION
945 SYSTEM_POOLTAG TagInfo
[1];
946 } SYSTEM_POOLTAG_INFORMATION
, *PSYSTEM_POOLTAG_INFORMATION
;
949 typedef struct _SYSTEM_INTERRUPT_INFORMATION
951 ULONG ContextSwitches
;
955 ULONG DpcBypassCount
;
956 ULONG ApcBypassCount
;
957 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
960 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
964 ULONG MinimumDpcRate
;
965 ULONG AdjustDpcThreshold
;
967 } SYSTEM_DPC_BEHAVIOR_INFORMATION
, *PSYSTEM_DPC_BEHAVIOR_INFORMATION
;
970 typedef struct _SYSTEM_MEMORY_INFO
974 USHORT TransitionCount
;
975 USHORT ModifiedCount
;
976 USHORT PageTableCount
;
977 } SYSTEM_MEMORY_INFO
, *PSYSTEM_MEMORY_INFO
;
978 typedef struct _SYSTEM_MEMORY_INFORMATION
982 SYSTEM_MEMORY_INFO Memory
[1];
983 } SYSTEM_MEMORY_INFORMATION
, *PSYSTEM_MEMORY_INFORMATION
;
986 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
988 UNICODE_STRING DriverName
;
990 PVOID SectionPointer
;
992 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer
;
993 } SYSTEM_GDI_DRIVER_INFORMATION
, *PSYSTEM_GDI_DRIVER_INFORMATION
;
996 // Not an actually class, simply a PVOID to the ImageAddress
999 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
1001 ULONG TimeAdjustment
;
1002 ULONG TimeIncrement
;
1004 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION
, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION
;
1006 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
1008 ULONG TimeAdjustment
;
1010 } SYSTEM_SET_TIME_ADJUST_INFORMATION
, *PSYSTEM_SET_TIME_ADJUST_INFORMATION
;
1012 // Class 29 - Same as 25
1014 // FIXME: Class 30 - 31
1017 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
1019 HANDLE CrashDumpSection
;
1020 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
1023 typedef struct _SYSTEM_EXCEPTION_INFORMATION
1025 ULONG AlignmentFixupCount
;
1026 ULONG ExceptionDispatchCount
;
1027 ULONG FloatingEmulationCount
;
1028 ULONG ByteWordEmulationCount
;
1029 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
1032 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
1034 ULONG ValidCrashDump
;
1035 } SYSTEM_CRASH_STATE_INFORMATION
, *PSYSTEM_CRASH_STATE_INFORMATION
;
1038 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
1040 BOOLEAN KernelDebuggerEnabled
;
1041 BOOLEAN KernelDebuggerNotPresent
;
1042 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
1045 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
1047 ULONG ContextSwitches
;
1056 ULONG PreemptCurrent
;
1059 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
1062 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
1064 ULONG RegistryQuotaAllowed
;
1065 ULONG RegistryQuotaUsed
;
1066 ULONG PagedPoolSize
;
1067 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
1070 // Not a structure, simply send the UNICODE_STRING
1073 // Not a structure, simply send a ULONG containing the new separation
1076 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
1079 PLUGPLAY_BUS_INSTANCE BusInstance
[1];
1080 } SYSTEM_PLUGPLAY_BUS_INFORMATION
, *PSYSTEM_PLUGPLAY_BUS_INFORMATION
;
1083 typedef struct _SYSTEM_DOCK_INFORMATION
1085 SYSTEM_DOCK_STATE DockState
;
1086 INTERFACE_TYPE DeviceBusType
;
1087 ULONG DeviceBusNumber
;
1089 } SYSTEM_DOCK_INFORMATION
, *PSYSTEM_DOCK_INFORMATION
;
1092 typedef struct _SYSTEM_POWER_INFORMATION_NATIVE
1094 BOOLEAN SystemSuspendSupported
;
1095 BOOLEAN SystemHibernateSupported
;
1096 BOOLEAN ResumeTimerSupportsSuspend
;
1097 BOOLEAN ResumeTimerSupportsHibernate
;
1098 BOOLEAN LidSupported
;
1099 BOOLEAN TurboSettingSupported
;
1101 BOOLEAN SystemAcOrDc
;
1102 BOOLEAN PowerDownDisabled
;
1103 LARGE_INTEGER SpindownDrives
;
1104 } SYSTEM_POWER_INFORMATION_NATIVE
, *PSYSTEM_POWER_INFORMATION_NATIVE
;
1107 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
1109 PNP_VETO_TYPE VetoType
;
1110 UNICODE_STRING VetoDriver
;
1112 } SYSTEM_LEGACY_DRIVER_INFORMATION
, *PSYSTEM_LEGACY_DRIVER_INFORMATION
;
1115 typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION
;
1118 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
1120 USHORT CurrentDepth
;
1121 USHORT MaximumDepth
;
1122 ULONG TotalAllocates
;
1123 ULONG AllocateMisses
;
1129 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
1132 // Not a structure. Only a HANDLE for the SlipEvent;
1135 // Not a structure. Only a ULONG for the SessionId;
1138 // Not a structure. Only a ULONG for the SessionId;
1143 // Not a structure. Only a ULONG_PTR for the SystemRangeStart
1145 // FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
1150 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
1154 PVOID Buffer
; // Same format as in SystemProcessInformation
1155 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;