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 // Resource (ERESOURCE) Flags
123 #define ResourceHasDisabledPriorityBoost 0x08
126 // Shutdown types for NtShutdownSystem
128 typedef enum _SHUTDOWN_ACTION
136 // Responses for NtRaiseHardError
138 typedef enum _HARDERROR_RESPONSE_OPTION
140 OptionAbortRetryIgnore
,
147 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
149 typedef enum _HARDERROR_RESPONSE
151 ResponseReturnToCaller
,
160 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
163 // System Information Classes for NtQuerySystemInformation
165 typedef enum _SYSTEM_INFORMATION_CLASS
167 SystemBasicInformation
,
168 SystemProcessorInformation
,
169 SystemPerformanceInformation
,
170 SystemTimeOfDayInformation
,
171 SystemPathInformation
, /// Obsolete: Use KUSER_SHARED_DATA
172 SystemProcessInformation
,
173 SystemCallCountInformation
,
174 SystemDeviceInformation
,
175 SystemProcessorPerformanceInformation
,
176 SystemFlagsInformation
,
177 SystemCallTimeInformation
,
178 SystemModuleInformation
,
179 SystemLocksInformation
,
180 SystemStackTraceInformation
,
181 SystemPagedPoolInformation
,
182 SystemNonPagedPoolInformation
,
183 SystemHandleInformation
,
184 SystemObjectInformation
,
185 SystemPageFileInformation
,
186 SystemVdmInstemulInformation
,
187 SystemVdmBopInformation
,
188 SystemFileCacheInformation
,
189 SystemPoolTagInformation
,
190 SystemInterruptInformation
,
191 SystemDpcBehaviorInformation
,
192 SystemFullMemoryInformation
,
193 SystemLoadGdiDriverInformation
,
194 SystemUnloadGdiDriverInformation
,
195 SystemTimeAdjustmentInformation
,
196 SystemSummaryMemoryInformation
,
197 SystemNextEventIdInformation
,
198 SystemEventIdsInformation
,
199 SystemCrashDumpInformation
,
200 SystemExceptionInformation
,
201 SystemCrashDumpStateInformation
,
202 SystemKernelDebuggerInformation
,
203 SystemContextSwitchInformation
,
204 SystemRegistryQuotaInformation
,
205 SystemExtendServiceTableInformation
,
206 SystemPrioritySeperation
,
207 SystemPlugPlayBusInformation
,
208 SystemDockInformation
,
209 SystemPowerInformationNative
,
210 SystemProcessorSpeedInformation
,
211 SystemCurrentTimeZoneInformation
,
212 SystemLookasideInformation
,
213 SystemTimeSlipNotification
,
216 SystemSessionInformation
,
217 SystemRangeStartInformation
,
218 SystemVerifierInformation
,
220 SystemSessionProcessesInformation
,
221 SystemInformationClassMax
222 } SYSTEM_INFORMATION_CLASS
;
225 // System Information Classes for NtQueryMutant
227 typedef enum _MUTANT_INFORMATION_CLASS
229 MutantBasicInformation
230 } MUTANT_INFORMATION_CLASS
;
233 // System Information Classes for NtQueryAtom
235 typedef enum _ATOM_INFORMATION_CLASS
237 AtomBasicInformation
,
238 AtomTableInformation
,
239 } ATOM_INFORMATION_CLASS
;
242 // System Information Classes for NtQueryTimer
244 typedef enum _TIMER_INFORMATION_CLASS
246 TimerBasicInformation
247 } TIMER_INFORMATION_CLASS
;
250 // System Information Classes for NtQuerySemaphore
252 typedef enum _SEMAPHORE_INFORMATION_CLASS
254 SemaphoreBasicInformation
255 } SEMAPHORE_INFORMATION_CLASS
;
258 // System Information Classes for NtQueryEvent
260 typedef enum _EVENT_INFORMATION_CLASS
262 EventBasicInformation
263 } EVENT_INFORMATION_CLASS
;
265 #ifndef NTOS_MODE_USER
268 // Executive Work Queue Structures
270 typedef struct _EX_QUEUE_WORKER_INFO
272 ULONG QueueDisabled
:1;
273 ULONG MakeThreadsAsNecessary
:1;
275 ULONG WorkerCount
:29;
276 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
278 typedef struct _EX_WORK_QUEUE
281 LONG DynamicThreadCount
;
282 ULONG WorkItemsProcessed
;
283 ULONG WorkItemsProcessedLastPass
;
284 ULONG QueueDepthLastPass
;
285 EX_QUEUE_WORKER_INFO Info
;
286 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
289 // Executive Fast Reference Structure
291 typedef struct _EX_FAST_REF
299 } EX_FAST_REF
, *PEX_FAST_REF
;
302 // Executive Cache-Aware Rundown Reference Descriptor
304 typedef struct _EX_RUNDOWN_REF_CACHE_AWARE
312 } EX_RUNDOWN_REF_CACHE_AWARE
, *PEX_RUNDOWN_REF_CACHE_AWARE
;
315 // Executive Rundown Wait Block
317 typedef struct _EX_RUNDOWN_WAIT_BLOCK
321 } EX_RUNDOWN_WAIT_BLOCK
, *PEX_RUNDOWN_WAIT_BLOCK
;
324 // Executive Pushlock
328 typedef struct _EX_PUSH_LOCK
337 ULONG_PTR MultipleShared
:1;
338 ULONG_PTR Shared
:sizeof (ULONG_PTR
) * 8 - 4;
343 } EX_PUSH_LOCK
, *PEX_PUSH_LOCK
;
346 // Executive Pushlock Wait Block
348 #ifndef __GNUC__ // WARNING! PUSHLOCKS WILL NOT WORK IN GCC FOR NOW!!!
349 __declspec(align(16))
351 typedef struct _EX_PUSH_LOCK_WAIT_BLOCK
358 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Next
;
359 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Last
;
360 struct _EX_PUSH_LOCK_WAIT_BLOCK
*Previous
;
365 EX_PUSH_LOCK NewValue
;
366 EX_PUSH_LOCK OldValue
;
367 PEX_PUSH_LOCK PushLock
;
369 } EX_PUSH_LOCK_WAIT_BLOCK
, *PEX_PUSH_LOCK_WAIT_BLOCK
;
374 typedef struct _CALLBACK_OBJECT
378 LIST_ENTRY RegisteredCallbacks
;
379 ULONG AllowMultipleCallbacks
;
380 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
385 typedef struct _EPROFILE
397 KPROFILE_SOURCE ProfileSource
;
399 } EPROFILE
, *PEPROFILE
;
402 // Handle Table Structures
404 typedef struct _HANDLE_TABLE_ENTRY_INFO
407 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
409 typedef struct _HANDLE_TABLE_ENTRY
414 ULONG_PTR ObAttributes
;
415 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
421 USHORT GrantedAccessIndex
;
422 LONG NextFreeTableEntry
;
424 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
426 typedef struct _HANDLE_TABLE
430 PHANDLE_TABLE_ENTRY
**Table
;
431 PEPROCESS QuotaProcess
;
432 HANDLE UniqueProcessId
;
433 LONG FirstFreeTableEntry
;
434 LONG NextIndexNeedingPool
;
435 ERESOURCE HandleTableLock
;
436 LIST_ENTRY HandleTableList
;
437 KEVENT HandleContentionEvent
;
438 } HANDLE_TABLE
, *PHANDLE_TABLE
;
443 // Hard Error LPC Message
445 typedef struct _HARDERROR_MSG
449 LARGE_INTEGER ErrorTime
;
450 ULONG ValidResponseOptions
;
452 ULONG NumberOfParameters
;
453 ULONG UnicodeStringParameterMask
;
454 ULONG Parameters
[MAXIMUM_HARDERROR_PARAMETERS
];
455 } HARDERROR_MSG
, *PHARDERROR_MSG
;
458 // Information Structures for NtQueryMutant
460 typedef struct _MUTANT_BASIC_INFORMATION
463 BOOLEAN OwnedByCaller
;
464 BOOLEAN AbandonedState
;
465 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
468 // Information Structures for NtQueryAtom
470 typedef struct _ATOM_BASIC_INFORMATION
476 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
478 typedef struct _ATOM_TABLE_INFORMATION
482 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
485 // Information Structures for NtQueryTimer
487 typedef struct _TIMER_BASIC_INFORMATION
489 LARGE_INTEGER TimeRemaining
;
491 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
494 // Information Structures for NtQuerySemaphore
496 typedef struct _SEMAPHORE_BASIC_INFORMATION
500 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
503 // Information Structures for NtQueryEvent
505 typedef struct _EVENT_BASIC_INFORMATION
507 EVENT_TYPE EventType
;
509 } EVENT_BASIC_INFORMATION
, *PEVENT_BASIC_INFORMATION
;
512 // Information Structures for NtQuerySystemInformation
514 typedef struct _SYSTEM_BASIC_INFORMATION
517 ULONG TimerResolution
;
519 ULONG NumberOfPhysicalPages
;
520 ULONG LowestPhysicalPageNumber
;
521 ULONG HighestPhysicalPageNumber
;
522 ULONG AllocationGranularity
;
523 ULONG MinimumUserModeAddress
;
524 ULONG MaximumUserModeAddress
;
525 KAFFINITY ActiveProcessorsAffinityMask
;
526 CCHAR NumberOfProcessors
;
527 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
530 typedef struct _SYSTEM_PROCESSOR_INFORMATION
532 USHORT ProcessorArchitecture
;
533 USHORT ProcessorLevel
;
534 USHORT ProcessorRevision
;
536 ULONG ProcessorFeatureBits
;
537 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
540 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
542 LARGE_INTEGER IdleProcessTime
;
543 LARGE_INTEGER IoReadTransferCount
;
544 LARGE_INTEGER IoWriteTransferCount
;
545 LARGE_INTEGER IoOtherTransferCount
;
546 ULONG IoReadOperationCount
;
547 ULONG IoWriteOperationCount
;
548 ULONG IoOtherOperationCount
;
549 ULONG AvailablePages
;
550 ULONG CommittedPages
;
552 ULONG PeakCommitment
;
553 ULONG PageFaultCount
;
554 ULONG CopyOnWriteCount
;
555 ULONG TransitionCount
;
556 ULONG CacheTransitionCount
;
557 ULONG DemandZeroCount
;
559 ULONG PageReadIoCount
;
560 ULONG CacheReadCount
;
562 ULONG DirtyPagesWriteCount
;
563 ULONG DirtyWriteIoCount
;
564 ULONG MappedPagesWriteCount
;
565 ULONG MappedWriteIoCount
;
566 ULONG PagedPoolPages
;
567 ULONG NonPagedPoolPages
;
568 ULONG PagedPoolAllocs
;
569 ULONG PagedPoolFrees
;
570 ULONG NonPagedPoolAllocs
;
571 ULONG NonPagedPoolFrees
;
572 ULONG FreeSystemPtes
;
573 ULONG ResidentSystemCodePage
;
574 ULONG TotalSystemDriverPages
;
575 ULONG TotalSystemCodePages
;
576 ULONG NonPagedPoolLookasideHits
;
577 ULONG PagedPoolLookasideHits
;
579 ULONG ResidentSystemCachePage
;
580 ULONG ResidentPagedPoolPage
;
581 ULONG ResidentSystemDriverPage
;
582 ULONG CcFastReadNoWait
;
583 ULONG CcFastReadWait
;
584 ULONG CcFastReadResourceMiss
;
585 ULONG CcFastReadNotPossible
;
586 ULONG CcFastMdlReadNoWait
;
587 ULONG CcFastMdlReadWait
;
588 ULONG CcFastMdlReadResourceMiss
;
589 ULONG CcFastMdlReadNotPossible
;
590 ULONG CcMapDataNoWait
;
592 ULONG CcMapDataNoWaitMiss
;
593 ULONG CcMapDataWaitMiss
;
594 ULONG CcPinMappedDataCount
;
595 ULONG CcPinReadNoWait
;
597 ULONG CcPinReadNoWaitMiss
;
598 ULONG CcPinReadWaitMiss
;
599 ULONG CcCopyReadNoWait
;
600 ULONG CcCopyReadWait
;
601 ULONG CcCopyReadNoWaitMiss
;
602 ULONG CcCopyReadWaitMiss
;
603 ULONG CcMdlReadNoWait
;
605 ULONG CcMdlReadNoWaitMiss
;
606 ULONG CcMdlReadWaitMiss
;
607 ULONG CcReadAheadIos
;
608 ULONG CcLazyWriteIos
;
609 ULONG CcLazyWritePages
;
612 ULONG ContextSwitches
;
613 ULONG FirstLevelTbFills
;
614 ULONG SecondLevelTbFills
;
616 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
619 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
621 LARGE_INTEGER BootTime
;
622 LARGE_INTEGER CurrentTime
;
623 LARGE_INTEGER TimeZoneBias
;
626 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
629 // This class is obsolete, please use KUSER_SHARED_DATA instead
632 typedef struct _SYSTEM_THREAD_INFORMATION
634 LARGE_INTEGER KernelTime
;
635 LARGE_INTEGER UserTime
;
636 LARGE_INTEGER CreateTime
;
642 ULONG ContextSwitches
;
645 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
647 typedef struct _SYSTEM_PROCESS_INFORMATION
649 ULONG NextEntryOffset
;
650 ULONG NumberOfThreads
;
651 LARGE_INTEGER SpareLi1
;
652 LARGE_INTEGER SpareLi2
;
653 LARGE_INTEGER SpareLi3
;
654 LARGE_INTEGER CreateTime
;
655 LARGE_INTEGER UserTime
;
656 LARGE_INTEGER KernelTime
;
657 UNICODE_STRING ImageName
;
658 KPRIORITY BasePriority
;
659 HANDLE UniqueProcessId
;
660 HANDLE InheritedFromUniqueProcessId
;
663 ULONG PageDirectoryFrame
;
666 // This part corresponds to VM_COUNTERS_EX.
667 // NOTE: *NOT* THE SAME AS VM_COUNTERS!
669 ULONG PeakVirtualSize
;
671 ULONG PageFaultCount
;
672 ULONG PeakWorkingSetSize
;
673 ULONG WorkingSetSize
;
674 ULONG QuotaPeakPagedPoolUsage
;
675 ULONG QuotaPagedPoolUsage
;
676 ULONG QuotaPeakNonPagedPoolUsage
;
677 ULONG QuotaNonPagedPoolUsage
;
679 ULONG PeakPagefileUsage
;
683 // This part corresponds to IO_COUNTERS
685 LARGE_INTEGER ReadOperationCount
;
686 LARGE_INTEGER WriteOperationCount
;
687 LARGE_INTEGER OtherOperationCount
;
688 LARGE_INTEGER ReadTransferCount
;
689 LARGE_INTEGER WriteTransferCount
;
690 LARGE_INTEGER OtherTransferCount
;
692 SYSTEM_THREAD_INFORMATION TH
[1];
693 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
696 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
699 ULONG NumberOfTables
;
700 } SYSTEM_CALL_COUNT_INFORMATION
, *PSYSTEM_CALL_COUNT_INFORMATION
;
703 typedef struct _SYSTEM_DEVICE_INFORMATION
706 ULONG NumberOfFloppies
;
707 ULONG NumberOfCdRoms
;
709 ULONG NumberOfSerialPorts
;
710 ULONG NumberOfParallelPorts
;
711 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
714 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
716 LARGE_INTEGER IdleTime
;
717 LARGE_INTEGER KernelTime
;
718 LARGE_INTEGER UserTime
;
719 LARGE_INTEGER DpcTime
;
720 LARGE_INTEGER InterruptTime
;
721 ULONG InterruptCount
;
722 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
;
725 typedef struct _SYSTEM_FLAGS_INFORMATION
728 } SYSTEM_FLAGS_INFORMATION
, *PSYSTEM_FLAGS_INFORMATION
;
731 typedef struct _SYSTEM_CALL_TIME_INFORMATION
735 LARGE_INTEGER TimeOfCalls
[1];
736 } SYSTEM_CALL_TIME_INFORMATION
, *PSYSTEM_CALL_TIME_INFORMATION
;
739 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
751 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
752 typedef struct _SYSTEM_MODULE_INFORMATION
755 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
756 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
759 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
761 ULONG ResourceAddress
;
765 ULONG ContentionCount
;
767 ULONG NumberOfSharedWaiters
;
768 ULONG NumberOfExclusiveWaiters
;
769 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
771 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
774 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
775 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
778 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
781 } SYSTEM_BACKTRACE_INFORMATION_ENTRY
, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY
;
783 typedef struct _SYSTEM_BACKTRACE_INFORMATION
787 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace
[1];
788 } SYSTEM_BACKTRACE_INFORMATION
, *PSYSTEM_BACKTRACE_INFORMATION
;
791 typedef struct _SYSTEM_POOL_ENTRY
795 USHORT AllocatorBackTraceIndex
;
801 PVOID ProcessChargedQuota
;
803 } SYSTEM_POOL_ENTRY
, *PSYSTEM_POOL_ENTRY
;
805 typedef struct _SYSTEM_POOL_INFORMATION
809 USHORT EntryOverhead
;
810 BOOLEAN PoolTagPresent
;
812 ULONG NumberOfEntries
;
813 SYSTEM_POOL_ENTRY Entries
[1];
814 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
817 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
819 USHORT UniqueProcessId
;
820 USHORT CreatorBackTraceIndex
;
821 UCHAR ObjectTypeIndex
;
822 UCHAR HandleAttributes
;
826 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
828 typedef struct _SYSTEM_HANDLE_INFORMATION
830 ULONG NumberOfHandles
;
831 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
832 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
835 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
837 ULONG NextEntryOffset
;
838 ULONG NumberOfObjects
;
839 ULONG NumberOfHandles
;
841 ULONG InvalidAttributes
;
842 GENERIC_MAPPING GenericMapping
;
843 ULONG ValidAccessMask
;
845 BOOLEAN SecurityRequired
;
846 BOOLEAN WaitableObject
;
847 UNICODE_STRING TypeName
;
848 } SYSTEM_OBJECTTYPE_INFORMATION
, *PSYSTEM_OBJECTTYPE_INFORMATION
;
850 typedef struct _SYSTEM_OBJECT_INFORMATION
852 ULONG NextEntryOffset
;
854 HANDLE CreatorUniqueProcess
;
855 USHORT CreatorBackTraceIndex
;
859 ULONG PagedPoolCharge
;
860 ULONG NonPagedPoolCharge
;
861 HANDLE ExclusiveProcessId
;
862 PVOID SecurityDescriptor
;
863 OBJECT_NAME_INFORMATION NameInfo
;
864 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
867 typedef struct _SYSTEM_PAGEFILE_INFORMATION
869 ULONG NextEntryOffset
;
873 UNICODE_STRING PageFileName
;
874 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
877 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
879 ULONG SegmentNotPresent
;
881 ULONG OpcodeESPrefix
;
882 ULONG OpcodeCSPrefix
;
883 ULONG OpcodeSSPrefix
;
884 ULONG OpcodeDSPrefix
;
885 ULONG OpcodeFSPrefix
;
886 ULONG OpcodeGSPrefix
;
887 ULONG OpcodeOPER32Prefix
;
888 ULONG OpcodeADDR32Prefix
;
901 ULONG OpcodeOUTWimm
;
906 ULONG OpcodeLOCKPrefix
;
907 ULONG OpcodeREPNEPrefix
;
908 ULONG OpcodeREPPrefix
;
913 } SYSTEM_VDM_INSTEMUL_INFO
, *PSYSTEM_VDM_INSTEMUL_INFO
;
916 typedef struct _SYSTEM_VDM_BOP_INFO
919 } SYSTEM_VDM_BOP_INFO
, *PSYSTEM_VDM_BOP_INFO
;
922 typedef struct _SYSTEM_CACHE_INFORMATION
926 ULONG PageFaultCount
;
927 ULONG MinimumWorkingSet
;
928 ULONG MaximumWorkingSet
;
929 ULONG CurrentSizeIncludingTransitionInPages
;
930 ULONG PeakSizeIncludingTransitionInPages
;
932 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
935 typedef struct _SYSTEM_POOLTAG
945 ULONG NonPagedAllocs
;
948 } SYSTEM_POOLTAG
, *PSYSTEM_POOLTAG
;
949 typedef struct _SYSTEM_POOLTAG_INFORMATION
952 SYSTEM_POOLTAG TagInfo
[1];
953 } SYSTEM_POOLTAG_INFORMATION
, *PSYSTEM_POOLTAG_INFORMATION
;
956 typedef struct _SYSTEM_INTERRUPT_INFORMATION
958 ULONG ContextSwitches
;
962 ULONG DpcBypassCount
;
963 ULONG ApcBypassCount
;
964 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
967 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
971 ULONG MinimumDpcRate
;
972 ULONG AdjustDpcThreshold
;
974 } SYSTEM_DPC_BEHAVIOR_INFORMATION
, *PSYSTEM_DPC_BEHAVIOR_INFORMATION
;
977 typedef struct _SYSTEM_MEMORY_INFO
981 USHORT TransitionCount
;
982 USHORT ModifiedCount
;
983 USHORT PageTableCount
;
984 } SYSTEM_MEMORY_INFO
, *PSYSTEM_MEMORY_INFO
;
985 typedef struct _SYSTEM_MEMORY_INFORMATION
989 SYSTEM_MEMORY_INFO Memory
[1];
990 } SYSTEM_MEMORY_INFORMATION
, *PSYSTEM_MEMORY_INFORMATION
;
993 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
995 UNICODE_STRING DriverName
;
997 PVOID SectionPointer
;
999 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer
;
1000 } SYSTEM_GDI_DRIVER_INFORMATION
, *PSYSTEM_GDI_DRIVER_INFORMATION
;
1003 // Not an actually class, simply a PVOID to the ImageAddress
1006 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
1008 ULONG TimeAdjustment
;
1009 ULONG TimeIncrement
;
1011 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION
, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION
;
1013 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
1015 ULONG TimeAdjustment
;
1017 } SYSTEM_SET_TIME_ADJUST_INFORMATION
, *PSYSTEM_SET_TIME_ADJUST_INFORMATION
;
1019 // Class 29 - Same as 25
1021 // FIXME: Class 30 - 31
1024 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
1026 HANDLE CrashDumpSection
;
1027 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
1030 typedef struct _SYSTEM_EXCEPTION_INFORMATION
1032 ULONG AlignmentFixupCount
;
1033 ULONG ExceptionDispatchCount
;
1034 ULONG FloatingEmulationCount
;
1035 ULONG ByteWordEmulationCount
;
1036 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
1039 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
1041 ULONG ValidCrashDump
;
1042 } SYSTEM_CRASH_STATE_INFORMATION
, *PSYSTEM_CRASH_STATE_INFORMATION
;
1045 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
1047 BOOLEAN KernelDebuggerEnabled
;
1048 BOOLEAN KernelDebuggerNotPresent
;
1049 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
1052 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
1054 ULONG ContextSwitches
;
1063 ULONG PreemptCurrent
;
1066 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
1069 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
1071 ULONG RegistryQuotaAllowed
;
1072 ULONG RegistryQuotaUsed
;
1073 ULONG PagedPoolSize
;
1074 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
1077 // Not a structure, simply send the UNICODE_STRING
1080 // Not a structure, simply send a ULONG containing the new separation
1083 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
1086 PLUGPLAY_BUS_INSTANCE BusInstance
[1];
1087 } SYSTEM_PLUGPLAY_BUS_INFORMATION
, *PSYSTEM_PLUGPLAY_BUS_INFORMATION
;
1090 typedef struct _SYSTEM_DOCK_INFORMATION
1092 SYSTEM_DOCK_STATE DockState
;
1093 INTERFACE_TYPE DeviceBusType
;
1094 ULONG DeviceBusNumber
;
1096 } SYSTEM_DOCK_INFORMATION
, *PSYSTEM_DOCK_INFORMATION
;
1099 typedef struct _SYSTEM_POWER_INFORMATION_NATIVE
1101 BOOLEAN SystemSuspendSupported
;
1102 BOOLEAN SystemHibernateSupported
;
1103 BOOLEAN ResumeTimerSupportsSuspend
;
1104 BOOLEAN ResumeTimerSupportsHibernate
;
1105 BOOLEAN LidSupported
;
1106 BOOLEAN TurboSettingSupported
;
1108 BOOLEAN SystemAcOrDc
;
1109 BOOLEAN PowerDownDisabled
;
1110 LARGE_INTEGER SpindownDrives
;
1111 } SYSTEM_POWER_INFORMATION_NATIVE
, *PSYSTEM_POWER_INFORMATION_NATIVE
;
1114 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
1116 PNP_VETO_TYPE VetoType
;
1117 UNICODE_STRING VetoDriver
;
1119 } SYSTEM_LEGACY_DRIVER_INFORMATION
, *PSYSTEM_LEGACY_DRIVER_INFORMATION
;
1122 typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION
;
1125 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
1127 USHORT CurrentDepth
;
1128 USHORT MaximumDepth
;
1129 ULONG TotalAllocates
;
1130 ULONG AllocateMisses
;
1136 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
1139 // Not a structure. Only a HANDLE for the SlipEvent;
1142 // Not a structure. Only a ULONG for the SessionId;
1145 // Not a structure. Only a ULONG for the SessionId;
1150 // Not a structure. Only a ULONG_PTR for the SystemRangeStart
1152 // FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
1157 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
1161 PVOID Buffer
; // Same format as in SystemProcessInformation
1162 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;