3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the Executive.
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
26 #if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
35 // Atom and Language IDs
37 typedef USHORT LANGID
, *PLANGID
;
38 typedef USHORT RTL_ATOM
, *PRTL_ATOM
;
40 #ifndef NTOS_MODE_USER
43 // Kernel Exported Object Types
45 extern POBJECT_TYPE NTSYSAPI ExIoCompletionType
;
46 extern POBJECT_TYPE NTSYSAPI ExMutantObjectType
;
47 extern POBJECT_TYPE NTSYSAPI ExTimerType
;
50 // Invalid Handle Value Constant
52 #define INVALID_HANDLE_VALUE (HANDLE)-1
59 #define MUTANT_INCREMENT 1
62 // Callback Object Access Mask
64 #define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
65 #define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
66 #define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
67 #define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
70 // Event Object Access Masks
73 #define EVENT_QUERY_STATE 0x0001
76 // Semaphore Object Acess Masks
78 #define SEMAPHORE_QUERY_STATE 0x0001
82 // Port Object Access Masks (FIXME: lpctypes.h?)
84 #define PORT_ALL_ACCESS 0x1
87 // Event Pair Access Masks
89 #define EVENT_PAIR_ALL_ACCESS 0x1F0000L
92 // Maximum Parameters for NtRaiseHardError
94 #define MAXIMUM_HARDERROR_PARAMETERS 4
97 // Shutdown types for NtShutdownSystem
99 typedef enum _SHUTDOWN_ACTION
107 // Responses for NtRaiseHardError
109 typedef enum _HARDERROR_RESPONSE_OPTION
111 OptionAbortRetryIgnore
,
118 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
120 typedef enum _HARDERROR_RESPONSE
122 ResponseReturnToCaller
,
131 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
134 // System Information Classes for NtQuerySystemInformation
136 typedef enum _SYSTEM_INFORMATION_CLASS
138 SystemBasicInformation
,
139 SystemProcessorInformation
,
140 SystemPerformanceInformation
,
141 SystemTimeOfDayInformation
,
142 SystemPathInformation
, /// Obsolete: Use KUSER_SHARED_DATA
143 SystemProcessInformation
,
144 SystemCallCountInformation
,
145 SystemDeviceInformation
,
146 SystemProcessorPerformanceInformation
,
147 SystemFlagsInformation
,
148 SystemCallTimeInformation
,
149 SystemModuleInformation
,
150 SystemLocksInformation
,
151 SystemStackTraceInformation
,
152 SystemPagedPoolInformation
,
153 SystemNonPagedPoolInformation
,
154 SystemHandleInformation
,
155 SystemObjectInformation
,
156 SystemPageFileInformation
,
157 SystemVdmInstemulInformation
,
158 SystemVdmBopInformation
,
159 SystemFileCacheInformation
,
160 SystemPoolTagInformation
,
161 SystemInterruptInformation
,
162 SystemDpcBehaviorInformation
,
163 SystemFullMemoryInformation
,
164 SystemLoadGdiDriverInformation
,
165 SystemUnloadGdiDriverInformation
,
166 SystemTimeAdjustmentInformation
,
167 SystemSummaryMemoryInformation
,
168 SystemNextEventIdInformation
,
169 SystemEventIdsInformation
,
170 SystemCrashDumpInformation
,
171 SystemExceptionInformation
,
172 SystemCrashDumpStateInformation
,
173 SystemKernelDebuggerInformation
,
174 SystemContextSwitchInformation
,
175 SystemRegistryQuotaInformation
,
176 SystemExtendServiceTableInformation
,
177 SystemPrioritySeperation
,
178 SystemPlugPlayBusInformation
,
179 SystemDockInformation
,
180 _SystemPowerInformation
, // FIXME
181 SystemProcessorSpeedInformation
,
182 SystemCurrentTimeZoneInformation
,
183 SystemLookasideInformation
,
184 SystemTimeSlipNotification
,
187 SystemSessionInformation
,
188 SystemRangeStartInformation
,
189 SystemVerifierInformation
,
191 SystemSessionProcessesInformation
,
192 SystemInformationClassMax
193 } SYSTEM_INFORMATION_CLASS
;
196 // System Information Classes for NtQueryMutant
198 typedef enum _MUTANT_INFORMATION_CLASS
200 MutantBasicInformation
201 } MUTANT_INFORMATION_CLASS
;
204 // System Information Classes for NtQueryAtom
206 typedef enum _ATOM_INFORMATION_CLASS
208 AtomBasicInformation
,
209 AtomTableInformation
,
210 } ATOM_INFORMATION_CLASS
;
213 // System Information Classes for NtQueryTimer
215 typedef enum _TIMER_INFORMATION_CLASS
217 TimerBasicInformation
218 } TIMER_INFORMATION_CLASS
;
221 // System Information Classes for NtQuerySemaphore
223 typedef enum _SEMAPHORE_INFORMATION_CLASS
225 SemaphoreBasicInformation
226 } SEMAPHORE_INFORMATION_CLASS
;
229 // System Information Classes for NtQueryEvent
231 typedef enum _EVENT_INFORMATION_CLASS
233 EventBasicInformation
234 } EVENT_INFORMATION_CLASS
;
236 #ifndef NTOS_MODE_USER
239 // Executive Work Queue Structures
241 typedef struct _EX_QUEUE_WORKER_INFO
243 ULONG QueueDisabled
:1;
244 ULONG MakeThreadsAsNecessary
:1;
246 ULONG WorkerCount
:29;
247 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
249 typedef struct _EX_WORK_QUEUE
252 ULONG DynamicThreadCount
;
253 ULONG WorkItemsProcessed
;
254 ULONG WorkItemsProcessedLastPass
;
255 ULONG QueueDepthLastPass
;
256 EX_QUEUE_WORKER_INFO Info
;
257 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
260 // Executive Fast Reference Structure
262 typedef struct _EX_FAST_REF
270 } EX_FAST_REF
, *PEX_FAST_REF
;
275 typedef struct _RUNDOWN_DESCRIPTOR
277 ULONG_PTR References
;
279 } RUNDOWN_DESCRIPTOR
, *PRUNDOWN_DESCRIPTOR
;
284 typedef struct _CALLBACK_OBJECT
288 LIST_ENTRY RegisteredCallbacks
;
289 ULONG AllowMultipleCallbacks
;
290 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
293 // Handle Table Structures
295 typedef struct _HANDLE_TABLE_ENTRY_INFO
298 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
300 typedef struct _HANDLE_TABLE_ENTRY
305 ULONG_PTR ObAttributes
;
306 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
312 USHORT GrantedAccessIndex
;
313 LONG NextFreeTableEntry
;
315 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
317 typedef struct _HANDLE_TABLE
321 PHANDLE_TABLE_ENTRY
**Table
;
322 PEPROCESS QuotaProcess
;
323 HANDLE UniqueProcessId
;
324 LONG FirstFreeTableEntry
;
325 LONG NextIndexNeedingPool
;
326 ERESOURCE HandleTableLock
;
327 LIST_ENTRY HandleTableList
;
328 KEVENT HandleContentionEvent
;
329 } HANDLE_TABLE
, *PHANDLE_TABLE
;
334 // Information Structures for NtQueryMutant
336 typedef struct _MUTANT_BASIC_INFORMATION
339 BOOLEAN OwnedByCaller
;
340 BOOLEAN AbandonedState
;
341 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
344 // Information Structures for NtQueryAtom
346 typedef struct _ATOM_BASIC_INFORMATION
352 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
354 typedef struct _ATOM_TABLE_INFORMATION
358 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
361 // Information Structures for NtQueryTimer
363 typedef struct _TIMER_BASIC_INFORMATION
365 LARGE_INTEGER TimeRemaining
;
367 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
370 // Information Structures for NtQuerySemaphore
372 typedef struct _SEMAPHORE_BASIC_INFORMATION
376 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
379 // Information Structures for NtQueryEvent
381 typedef struct _EVENT_BASIC_INFORMATION
383 EVENT_TYPE EventType
;
385 } EVENT_BASIC_INFORMATION
, *PEVENT_BASIC_INFORMATION
;
388 // Information Structures for NtQuerySystemInformation
390 typedef struct _SYSTEM_BASIC_INFORMATION
393 ULONG TimerResolution
;
395 ULONG NumberOfPhysicalPages
;
396 ULONG LowestPhysicalPageNumber
;
397 ULONG HighestPhysicalPageNumber
;
398 ULONG AllocationGranularity
;
399 ULONG MinimumUserModeAddress
;
400 ULONG MaximumUserModeAddress
;
401 KAFFINITY ActiveProcessorsAffinityMask
;
402 CCHAR NumberOfProcessors
;
403 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
406 typedef struct _SYSTEM_PROCESSOR_INFORMATION
408 USHORT ProcessorArchitecture
;
409 USHORT ProcessorLevel
;
410 USHORT ProcessorRevision
;
412 ULONG ProcessorFeatureBits
;
413 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
416 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
418 LARGE_INTEGER IdleProcessTime
;
419 LARGE_INTEGER IoReadTransferCount
;
420 LARGE_INTEGER IoWriteTransferCount
;
421 LARGE_INTEGER IoOtherTransferCount
;
422 ULONG IoReadOperationCount
;
423 ULONG IoWriteOperationCount
;
424 ULONG IoOtherOperationCount
;
425 ULONG AvailablePages
;
426 ULONG CommittedPages
;
428 ULONG PeakCommitment
;
429 ULONG PageFaultCount
;
430 ULONG CopyOnWriteCount
;
431 ULONG TransitionCount
;
432 ULONG CacheTransitionCount
;
433 ULONG DemandZeroCount
;
435 ULONG PageReadIoCount
;
436 ULONG CacheReadCount
;
438 ULONG DirtyPagesWriteCount
;
439 ULONG DirtyWriteIoCount
;
440 ULONG MappedPagesWriteCount
;
441 ULONG MappedWriteIoCount
;
442 ULONG PagedPoolPages
;
443 ULONG NonPagedPoolPages
;
444 ULONG PagedPoolAllocs
;
445 ULONG PagedPoolFrees
;
446 ULONG NonPagedPoolAllocs
;
447 ULONG NonPagedPoolFrees
;
448 ULONG FreeSystemPtes
;
449 ULONG ResidentSystemCodePage
;
450 ULONG TotalSystemDriverPages
;
451 ULONG TotalSystemCodePages
;
452 ULONG NonPagedPoolLookasideHits
;
453 ULONG PagedPoolLookasideHits
;
455 ULONG ResidentSystemCachePage
;
456 ULONG ResidentPagedPoolPage
;
457 ULONG ResidentSystemDriverPage
;
458 ULONG CcFastReadNoWait
;
459 ULONG CcFastReadWait
;
460 ULONG CcFastReadResourceMiss
;
461 ULONG CcFastReadNotPossible
;
462 ULONG CcFastMdlReadNoWait
;
463 ULONG CcFastMdlReadWait
;
464 ULONG CcFastMdlReadResourceMiss
;
465 ULONG CcFastMdlReadNotPossible
;
466 ULONG CcMapDataNoWait
;
468 ULONG CcMapDataNoWaitMiss
;
469 ULONG CcMapDataWaitMiss
;
470 ULONG CcPinMappedDataCount
;
471 ULONG CcPinReadNoWait
;
473 ULONG CcPinReadNoWaitMiss
;
474 ULONG CcPinReadWaitMiss
;
475 ULONG CcCopyReadNoWait
;
476 ULONG CcCopyReadWait
;
477 ULONG CcCopyReadNoWaitMiss
;
478 ULONG CcCopyReadWaitMiss
;
479 ULONG CcMdlReadNoWait
;
481 ULONG CcMdlReadNoWaitMiss
;
482 ULONG CcMdlReadWaitMiss
;
483 ULONG CcReadAheadIos
;
484 ULONG CcLazyWriteIos
;
485 ULONG CcLazyWritePages
;
488 ULONG ContextSwitches
;
489 ULONG FirstLevelTbFills
;
490 ULONG SecondLevelTbFills
;
492 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
495 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
497 LARGE_INTEGER BootTime
;
498 LARGE_INTEGER CurrentTime
;
499 LARGE_INTEGER TimeZoneBias
;
502 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
505 // This class is obsolete, please use KUSER_SHARED_DATA instead
508 typedef struct _SYSTEM_THREAD_INFORMATION
510 LARGE_INTEGER KernelTime
;
511 LARGE_INTEGER UserTime
;
512 LARGE_INTEGER CreateTime
;
518 ULONG ContextSwitches
;
521 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
523 typedef struct _SYSTEM_PROCESS_INFORMATION
525 ULONG NextEntryOffset
;
526 ULONG NumberOfThreads
;
527 LARGE_INTEGER SpareLi1
;
528 LARGE_INTEGER SpareLi2
;
529 LARGE_INTEGER SpareLi3
;
530 LARGE_INTEGER CreateTime
;
531 LARGE_INTEGER UserTime
;
532 LARGE_INTEGER KernelTime
;
533 UNICODE_STRING ImageName
;
534 KPRIORITY BasePriority
;
535 HANDLE UniqueProcessId
;
536 HANDLE InheritedFromUniqueProcessId
;
539 ULONG PageDirectoryFrame
;
542 // This part corresponds to VM_COUNTERS_EX.
543 // NOTE: *NOT* THE SAME AS VM_COUNTERS!
545 ULONG PeakVirtualSize
;
547 ULONG PageFaultCount
;
548 ULONG PeakWorkingSetSize
;
549 ULONG WorkingSetSize
;
550 ULONG QuotaPeakPagedPoolUsage
;
551 ULONG QuotaPagedPoolUsage
;
552 ULONG QuotaPeakNonPagedPoolUsage
;
553 ULONG QuotaNonPagedPoolUsage
;
555 ULONG PeakPagefileUsage
;
559 // This part corresponds to IO_COUNTERS
561 LARGE_INTEGER ReadOperationCount
;
562 LARGE_INTEGER WriteOperationCount
;
563 LARGE_INTEGER OtherOperationCount
;
564 LARGE_INTEGER ReadTransferCount
;
565 LARGE_INTEGER WriteTransferCount
;
566 LARGE_INTEGER OtherTransferCount
;
568 SYSTEM_THREAD_INFORMATION TH
[1];
569 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
572 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
575 ULONG NumberOfTables
;
576 } SYSTEM_CALL_COUNT_INFORMATION
, *PSYSTEM_CALL_COUNT_INFORMATION
;
579 typedef struct _SYSTEM_DEVICE_INFORMATION
582 ULONG NumberOfFloppies
;
583 ULONG NumberOfCdRoms
;
585 ULONG NumberOfSerialPorts
;
586 ULONG NumberOfParallelPorts
;
587 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
590 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
592 LARGE_INTEGER IdleTime
;
593 LARGE_INTEGER KernelTime
;
594 LARGE_INTEGER UserTime
;
595 LARGE_INTEGER DpcTime
;
596 LARGE_INTEGER InterruptTime
;
597 ULONG InterruptCount
;
598 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
;
601 typedef struct _SYSTEM_FLAGS_INFORMATION
604 } SYSTEM_FLAGS_INFORMATION
, *PSYSTEM_FLAGS_INFORMATION
;
607 typedef struct _SYSTEM_CALL_TIME_INFORMATION
611 LARGE_INTEGER TimeOfCalls
[1];
612 } SYSTEM_CALL_TIME_INFORMATION
, *PSYSTEM_CALL_TIME_INFORMATION
;
615 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
627 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
628 typedef struct _SYSTEM_MODULE_INFORMATION
631 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
632 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
635 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
637 ULONG ResourceAddress
;
641 ULONG ContentionCount
;
643 ULONG NumberOfSharedWaiters
;
644 ULONG NumberOfExclusiveWaiters
;
645 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
647 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
650 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
651 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
654 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
657 } SYSTEM_BACKTRACE_INFORMATION_ENTRY
, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY
;
659 typedef struct _SYSTEM_BACKTRACE_INFORMATION
663 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace
[1];
664 } SYSTEM_BACKTRACE_INFORMATION
, *PSYSTEM_BACKTRACE_INFORMATION
;
667 typedef struct _SYSTEM_POOL_ENTRY
671 USHORT AllocatorBackTraceIndex
;
677 PVOID ProcessChargedQuota
;
679 } SYSTEM_POOL_ENTRY
, *PSYSTEM_POOL_ENTRY
;
681 typedef struct _SYSTEM_POOL_INFORMATION
685 USHORT EntryOverhead
;
686 BOOLEAN PoolTagPresent
;
688 ULONG NumberOfEntries
;
689 SYSTEM_POOL_ENTRY Entries
[1];
690 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
693 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
695 USHORT UniqueProcessId
;
696 USHORT CreatorBackTraceIndex
;
697 UCHAR ObjectTypeIndex
;
698 UCHAR HandleAttributes
;
702 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
704 typedef struct _SYSTEM_HANDLE_INFORMATION
706 ULONG NumberOfHandles
;
707 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
708 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
711 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
713 ULONG NextEntryOffset
;
714 ULONG NumberOfObjects
;
715 ULONG NumberOfHandles
;
717 ULONG InvalidAttributes
;
718 GENERIC_MAPPING GenericMapping
;
719 ULONG ValidAccessMask
;
721 BOOLEAN SecurityRequired
;
722 BOOLEAN WaitableObject
;
723 UNICODE_STRING TypeName
;
724 } SYSTEM_OBJECTTYPE_INFORMATION
, *PSYSTEM_OBJECTTYPE_INFORMATION
;
726 typedef struct _SYSTEM_OBJECT_INFORMATION
728 ULONG NextEntryOffset
;
730 HANDLE CreatorUniqueProcess
;
731 USHORT CreatorBackTraceIndex
;
735 ULONG PagedPoolCharge
;
736 ULONG NonPagedPoolCharge
;
737 HANDLE ExclusiveProcessId
;
738 PVOID SecurityDescriptor
;
739 OBJECT_NAME_INFORMATION NameInfo
;
740 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
743 typedef struct _SYSTEM_PAGEFILE_INFORMATION
745 ULONG NextEntryOffset
;
749 UNICODE_STRING PageFileName
;
750 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
753 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
755 ULONG SegmentNotPresent
;
757 ULONG OpcodeESPrefix
;
758 ULONG OpcodeCSPrefix
;
759 ULONG OpcodeSSPrefix
;
760 ULONG OpcodeDSPrefix
;
761 ULONG OpcodeFSPrefix
;
762 ULONG OpcodeGSPrefix
;
763 ULONG OpcodeOPER32Prefix
;
764 ULONG OpcodeADDR32Prefix
;
777 ULONG OpcodeOUTWimm
;
782 ULONG OpcodeLOCKPrefix
;
783 ULONG OpcodeREPNEPrefix
;
784 ULONG OpcodeREPPrefix
;
789 } SYSTEM_VDM_INSTEMUL_INFO
, *PSYSTEM_VDM_INSTEMUL_INFO
;
792 typedef struct _SYSTEM_VDM_BOP_INFO
795 } SYSTEM_VDM_BOP_INFO
, *PSYSTEM_VDM_BOP_INFO
;
798 typedef struct _SYSTEM_CACHE_INFORMATION
802 ULONG PageFaultCount
;
803 ULONG MinimumWorkingSet
;
804 ULONG MaximumWorkingSet
;
805 ULONG CurrentSizeIncludingTransitionInPages
;
806 ULONG PeakSizeIncludingTransitionInPages
;
808 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
811 typedef struct _SYSTEM_POOLTAG
821 ULONG NonPagedAllocs
;
824 } SYSTEM_POOLTAG
, *PSYSTEM_POOLTAG
;
825 typedef struct _SYSTEM_POOLTAG_INFORMATION
828 SYSTEM_POOLTAG TagInfo
[1];
829 } SYSTEM_POOLTAG_INFORMATION
, *PSYSTEM_POOLTAG_INFORMATION
;
832 typedef struct _SYSTEM_INTERRUPT_INFORMATION
834 ULONG ContextSwitches
;
838 ULONG DpcBypassCount
;
839 ULONG ApcBypassCount
;
840 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
843 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
847 ULONG MinimumDpcRate
;
848 ULONG AdjustDpcThreshold
;
850 } SYSTEM_DPC_BEHAVIOR_INFORMATION
, *PSYSTEM_DPC_BEHAVIOR_INFORMATION
;
853 typedef struct _SYSTEM_MEMORY_INFO
857 USHORT TransitionCount
;
858 USHORT ModifiedCount
;
859 USHORT PageTableCount
;
860 } SYSTEM_MEMORY_INFO
, *PSYSTEM_MEMORY_INFO
;
861 typedef struct _SYSTEM_MEMORY_INFORMATION
865 SYSTEM_MEMORY_INFO Memory
[1];
866 } SYSTEM_MEMORY_INFORMATION
, *PSYSTEM_MEMORY_INFORMATION
;
869 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
871 UNICODE_STRING DriverName
;
873 PVOID SectionPointer
;
875 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer
;
876 } SYSTEM_GDI_DRIVER_INFORMATION
, *PSYSTEM_GDI_DRIVER_INFORMATION
;
879 // Not an actually class, simply a PVOID to the ImageAddress
882 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
884 ULONG TimeAdjustment
;
887 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION
, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION
;
889 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
891 ULONG TimeAdjustment
;
893 } SYSTEM_SET_TIME_ADJUST_INFORMATION
, *PSYSTEM_SET_TIME_ADJUST_INFORMATION
;
895 // Class 29 - Same as 25
897 // FIXME: Class 30 - 31
900 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
902 HANDLE CrashDumpSection
;
903 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
906 typedef struct _SYSTEM_EXCEPTION_INFORMATION
908 ULONG AlignmentFixupCount
;
909 ULONG ExceptionDispatchCount
;
910 ULONG FloatingEmulationCount
;
911 ULONG ByteWordEmulationCount
;
912 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
915 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
917 ULONG ValidCrashDump
;
918 } SYSTEM_CRASH_STATE_INFORMATION
, *PSYSTEM_CRASH_STATE_INFORMATION
;
921 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
923 BOOLEAN KernelDebuggerEnabled
;
924 BOOLEAN KernelDebuggerNotPresent
;
925 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
928 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
930 ULONG ContextSwitches
;
939 ULONG PreemptCurrent
;
942 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
945 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
947 ULONG RegistryQuotaAllowed
;
948 ULONG RegistryQuotaUsed
;
950 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
953 // Not a structure, simply send the UNICODE_STRING
956 // Not a structure, simply send a ULONG containing the new separation
959 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
962 PLUGPLAY_BUS_INSTANCE BusInstance
[1];
963 } SYSTEM_PLUGPLAY_BUS_INFORMATION
, *PSYSTEM_PLUGPLAY_BUS_INFORMATION
;
966 typedef struct _SYSTEM_DOCK_INFORMATION
968 SYSTEM_DOCK_STATE DockState
;
969 INTERFACE_TYPE DeviceBusType
;
970 ULONG DeviceBusNumber
;
972 } SYSTEM_DOCK_INFORMATION
, *PSYSTEM_DOCK_INFORMATION
;
975 // FIXME: Conflict with WINNT.H
976 typedef struct __SYSTEM_POWER_INFORMATION
978 BOOLEAN SystemSuspendSupported
;
979 BOOLEAN SystemHibernateSupported
;
980 BOOLEAN ResumeTimerSupportsSuspend
;
981 BOOLEAN ResumeTimerSupportsHibernate
;
982 BOOLEAN LidSupported
;
983 BOOLEAN TurboSettingSupported
;
985 BOOLEAN SystemAcOrDc
;
986 BOOLEAN PowerDownDisabled
;
987 LARGE_INTEGER SpindownDrives
;
988 } _SYSTEM_POWER_INFORMATION
, *P_SYSTEM_POWER_INFORMATION
;
991 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
993 PNP_VETO_TYPE VetoType
;
994 UNICODE_STRING VetoDriver
;
996 } SYSTEM_LEGACY_DRIVER_INFORMATION
, *PSYSTEM_LEGACY_DRIVER_INFORMATION
;
999 typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION
;
1002 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
1004 USHORT CurrentDepth
;
1005 USHORT MaximumDepth
;
1006 ULONG TotalAllocates
;
1007 ULONG AllocateMisses
;
1013 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
1016 // Not a structure. Only a HANDLE for the SlipEvent;
1019 // Not a structure. Only a ULONG for the SessionId;
1022 // Not a structure. Only a ULONG for the SessionId;
1027 // Not a structure. Only a ULONG_PTR for the SystemRangeStart
1029 // FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
1034 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
1038 PVOID Buffer
; // Same format as in SystemProcessInformation
1039 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;