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 // Invalid Handle Value Constant
53 #define INVALID_HANDLE_VALUE (HANDLE)-1
60 #define MUTANT_INCREMENT 1
63 // Callback Object Access Mask
65 #define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
66 #define CALLBACK_EXECUTE (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
67 #define CALLBACK_WRITE (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
68 #define CALLBACK_READ (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
71 // Event Object Access Masks
74 #define EVENT_QUERY_STATE 0x0001
77 // Semaphore Object Acess Masks
79 #define SEMAPHORE_QUERY_STATE 0x0001
83 // Port Object Access Masks (FIXME: lpctypes.h?)
85 #define PORT_ALL_ACCESS 0x1
88 // Event Pair Access Masks
90 #define EVENT_PAIR_ALL_ACCESS 0x1F0000L
93 // Maximum Parameters for NtRaiseHardError
95 #define MAXIMUM_HARDERROR_PARAMETERS 4
98 // Shutdown types for NtShutdownSystem
100 typedef enum _SHUTDOWN_ACTION
108 // Responses for NtRaiseHardError
110 typedef enum _HARDERROR_RESPONSE_OPTION
112 OptionAbortRetryIgnore
,
119 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
121 typedef enum _HARDERROR_RESPONSE
123 ResponseReturnToCaller
,
132 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
135 // System Information Classes for NtQuerySystemInformation
137 typedef enum _SYSTEM_INFORMATION_CLASS
139 SystemBasicInformation
,
140 SystemProcessorInformation
,
141 SystemPerformanceInformation
,
142 SystemTimeOfDayInformation
,
143 SystemPathInformation
, /// Obsolete: Use KUSER_SHARED_DATA
144 SystemProcessInformation
,
145 SystemCallCountInformation
,
146 SystemDeviceInformation
,
147 SystemProcessorPerformanceInformation
,
148 SystemFlagsInformation
,
149 SystemCallTimeInformation
,
150 SystemModuleInformation
,
151 SystemLocksInformation
,
152 SystemStackTraceInformation
,
153 SystemPagedPoolInformation
,
154 SystemNonPagedPoolInformation
,
155 SystemHandleInformation
,
156 SystemObjectInformation
,
157 SystemPageFileInformation
,
158 SystemVdmInstemulInformation
,
159 SystemVdmBopInformation
,
160 SystemFileCacheInformation
,
161 SystemPoolTagInformation
,
162 SystemInterruptInformation
,
163 SystemDpcBehaviorInformation
,
164 SystemFullMemoryInformation
,
165 SystemLoadGdiDriverInformation
,
166 SystemUnloadGdiDriverInformation
,
167 SystemTimeAdjustmentInformation
,
168 SystemSummaryMemoryInformation
,
169 SystemNextEventIdInformation
,
170 SystemEventIdsInformation
,
171 SystemCrashDumpInformation
,
172 SystemExceptionInformation
,
173 SystemCrashDumpStateInformation
,
174 SystemKernelDebuggerInformation
,
175 SystemContextSwitchInformation
,
176 SystemRegistryQuotaInformation
,
177 SystemExtendServiceTableInformation
,
178 SystemPrioritySeperation
,
179 SystemPlugPlayBusInformation
,
180 SystemDockInformation
,
181 _SystemPowerInformation
, // FIXME
182 SystemProcessorSpeedInformation
,
183 SystemCurrentTimeZoneInformation
,
184 SystemLookasideInformation
,
185 SystemTimeSlipNotification
,
188 SystemSessionInformation
,
189 SystemRangeStartInformation
,
190 SystemVerifierInformation
,
192 SystemSessionProcessesInformation
,
193 SystemInformationClassMax
194 } SYSTEM_INFORMATION_CLASS
;
197 // System Information Classes for NtQueryMutant
199 typedef enum _MUTANT_INFORMATION_CLASS
201 MutantBasicInformation
202 } MUTANT_INFORMATION_CLASS
;
205 // System Information Classes for NtQueryAtom
207 typedef enum _ATOM_INFORMATION_CLASS
209 AtomBasicInformation
,
210 AtomTableInformation
,
211 } ATOM_INFORMATION_CLASS
;
214 // System Information Classes for NtQueryTimer
216 typedef enum _TIMER_INFORMATION_CLASS
218 TimerBasicInformation
219 } TIMER_INFORMATION_CLASS
;
222 // System Information Classes for NtQuerySemaphore
224 typedef enum _SEMAPHORE_INFORMATION_CLASS
226 SemaphoreBasicInformation
227 } SEMAPHORE_INFORMATION_CLASS
;
230 // System Information Classes for NtQueryEvent
232 typedef enum _EVENT_INFORMATION_CLASS
234 EventBasicInformation
235 } EVENT_INFORMATION_CLASS
;
237 #ifndef NTOS_MODE_USER
240 // Executive Work Queue Structures
242 typedef struct _EX_QUEUE_WORKER_INFO
244 ULONG QueueDisabled
:1;
245 ULONG MakeThreadsAsNecessary
:1;
247 ULONG WorkerCount
:29;
248 } EX_QUEUE_WORKER_INFO
, *PEX_QUEUE_WORKER_INFO
;
250 typedef struct _EX_WORK_QUEUE
253 ULONG DynamicThreadCount
;
254 ULONG WorkItemsProcessed
;
255 ULONG WorkItemsProcessedLastPass
;
256 ULONG QueueDepthLastPass
;
257 EX_QUEUE_WORKER_INFO Info
;
258 } EX_WORK_QUEUE
, *PEX_WORK_QUEUE
;
261 // Executive Fast Reference Structure
263 typedef struct _EX_FAST_REF
271 } EX_FAST_REF
, *PEX_FAST_REF
;
276 typedef struct _RUNDOWN_DESCRIPTOR
278 ULONG_PTR References
;
280 } RUNDOWN_DESCRIPTOR
, *PRUNDOWN_DESCRIPTOR
;
285 typedef struct _CALLBACK_OBJECT
289 LIST_ENTRY RegisteredCallbacks
;
290 ULONG AllowMultipleCallbacks
;
291 } CALLBACK_OBJECT
, *PCALLBACK_OBJECT
;
294 // Handle Table Structures
296 typedef struct _HANDLE_TABLE_ENTRY_INFO
299 } HANDLE_TABLE_ENTRY_INFO
, *PHANDLE_TABLE_ENTRY_INFO
;
301 typedef struct _HANDLE_TABLE_ENTRY
306 ULONG_PTR ObAttributes
;
307 PHANDLE_TABLE_ENTRY_INFO InfoTable
;
313 USHORT GrantedAccessIndex
;
314 LONG NextFreeTableEntry
;
316 } HANDLE_TABLE_ENTRY
, *PHANDLE_TABLE_ENTRY
;
318 typedef struct _HANDLE_TABLE
322 PHANDLE_TABLE_ENTRY
**Table
;
323 PEPROCESS QuotaProcess
;
324 HANDLE UniqueProcessId
;
325 LONG FirstFreeTableEntry
;
326 LONG NextIndexNeedingPool
;
327 ERESOURCE HandleTableLock
;
328 LIST_ENTRY HandleTableList
;
329 KEVENT HandleContentionEvent
;
330 } HANDLE_TABLE
, *PHANDLE_TABLE
;
335 // Hard Error LPC Message
337 typedef struct _HARDERROR_MSG
341 LARGE_INTEGER ErrorTime
;
342 ULONG ValidResponseOptions
;
344 ULONG NumberOfParameters
;
345 ULONG UnicodeStringParameterMask
;
346 ULONG Parameters
[MAXIMUM_HARDERROR_PARAMETERS
];
347 } HARDERROR_MSG
, *PHARDERROR_MSG
;
350 // Information Structures for NtQueryMutant
352 typedef struct _MUTANT_BASIC_INFORMATION
355 BOOLEAN OwnedByCaller
;
356 BOOLEAN AbandonedState
;
357 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
360 // Information Structures for NtQueryAtom
362 typedef struct _ATOM_BASIC_INFORMATION
368 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
370 typedef struct _ATOM_TABLE_INFORMATION
374 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
377 // Information Structures for NtQueryTimer
379 typedef struct _TIMER_BASIC_INFORMATION
381 LARGE_INTEGER TimeRemaining
;
383 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
386 // Information Structures for NtQuerySemaphore
388 typedef struct _SEMAPHORE_BASIC_INFORMATION
392 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
395 // Information Structures for NtQueryEvent
397 typedef struct _EVENT_BASIC_INFORMATION
399 EVENT_TYPE EventType
;
401 } EVENT_BASIC_INFORMATION
, *PEVENT_BASIC_INFORMATION
;
404 // Information Structures for NtQuerySystemInformation
406 typedef struct _SYSTEM_BASIC_INFORMATION
409 ULONG TimerResolution
;
411 ULONG NumberOfPhysicalPages
;
412 ULONG LowestPhysicalPageNumber
;
413 ULONG HighestPhysicalPageNumber
;
414 ULONG AllocationGranularity
;
415 ULONG MinimumUserModeAddress
;
416 ULONG MaximumUserModeAddress
;
417 KAFFINITY ActiveProcessorsAffinityMask
;
418 CCHAR NumberOfProcessors
;
419 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
422 typedef struct _SYSTEM_PROCESSOR_INFORMATION
424 USHORT ProcessorArchitecture
;
425 USHORT ProcessorLevel
;
426 USHORT ProcessorRevision
;
428 ULONG ProcessorFeatureBits
;
429 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
432 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
434 LARGE_INTEGER IdleProcessTime
;
435 LARGE_INTEGER IoReadTransferCount
;
436 LARGE_INTEGER IoWriteTransferCount
;
437 LARGE_INTEGER IoOtherTransferCount
;
438 ULONG IoReadOperationCount
;
439 ULONG IoWriteOperationCount
;
440 ULONG IoOtherOperationCount
;
441 ULONG AvailablePages
;
442 ULONG CommittedPages
;
444 ULONG PeakCommitment
;
445 ULONG PageFaultCount
;
446 ULONG CopyOnWriteCount
;
447 ULONG TransitionCount
;
448 ULONG CacheTransitionCount
;
449 ULONG DemandZeroCount
;
451 ULONG PageReadIoCount
;
452 ULONG CacheReadCount
;
454 ULONG DirtyPagesWriteCount
;
455 ULONG DirtyWriteIoCount
;
456 ULONG MappedPagesWriteCount
;
457 ULONG MappedWriteIoCount
;
458 ULONG PagedPoolPages
;
459 ULONG NonPagedPoolPages
;
460 ULONG PagedPoolAllocs
;
461 ULONG PagedPoolFrees
;
462 ULONG NonPagedPoolAllocs
;
463 ULONG NonPagedPoolFrees
;
464 ULONG FreeSystemPtes
;
465 ULONG ResidentSystemCodePage
;
466 ULONG TotalSystemDriverPages
;
467 ULONG TotalSystemCodePages
;
468 ULONG NonPagedPoolLookasideHits
;
469 ULONG PagedPoolLookasideHits
;
471 ULONG ResidentSystemCachePage
;
472 ULONG ResidentPagedPoolPage
;
473 ULONG ResidentSystemDriverPage
;
474 ULONG CcFastReadNoWait
;
475 ULONG CcFastReadWait
;
476 ULONG CcFastReadResourceMiss
;
477 ULONG CcFastReadNotPossible
;
478 ULONG CcFastMdlReadNoWait
;
479 ULONG CcFastMdlReadWait
;
480 ULONG CcFastMdlReadResourceMiss
;
481 ULONG CcFastMdlReadNotPossible
;
482 ULONG CcMapDataNoWait
;
484 ULONG CcMapDataNoWaitMiss
;
485 ULONG CcMapDataWaitMiss
;
486 ULONG CcPinMappedDataCount
;
487 ULONG CcPinReadNoWait
;
489 ULONG CcPinReadNoWaitMiss
;
490 ULONG CcPinReadWaitMiss
;
491 ULONG CcCopyReadNoWait
;
492 ULONG CcCopyReadWait
;
493 ULONG CcCopyReadNoWaitMiss
;
494 ULONG CcCopyReadWaitMiss
;
495 ULONG CcMdlReadNoWait
;
497 ULONG CcMdlReadNoWaitMiss
;
498 ULONG CcMdlReadWaitMiss
;
499 ULONG CcReadAheadIos
;
500 ULONG CcLazyWriteIos
;
501 ULONG CcLazyWritePages
;
504 ULONG ContextSwitches
;
505 ULONG FirstLevelTbFills
;
506 ULONG SecondLevelTbFills
;
508 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
511 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
513 LARGE_INTEGER BootTime
;
514 LARGE_INTEGER CurrentTime
;
515 LARGE_INTEGER TimeZoneBias
;
518 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
521 // This class is obsolete, please use KUSER_SHARED_DATA instead
524 typedef struct _SYSTEM_THREAD_INFORMATION
526 LARGE_INTEGER KernelTime
;
527 LARGE_INTEGER UserTime
;
528 LARGE_INTEGER CreateTime
;
534 ULONG ContextSwitches
;
537 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
539 typedef struct _SYSTEM_PROCESS_INFORMATION
541 ULONG NextEntryOffset
;
542 ULONG NumberOfThreads
;
543 LARGE_INTEGER SpareLi1
;
544 LARGE_INTEGER SpareLi2
;
545 LARGE_INTEGER SpareLi3
;
546 LARGE_INTEGER CreateTime
;
547 LARGE_INTEGER UserTime
;
548 LARGE_INTEGER KernelTime
;
549 UNICODE_STRING ImageName
;
550 KPRIORITY BasePriority
;
551 HANDLE UniqueProcessId
;
552 HANDLE InheritedFromUniqueProcessId
;
555 ULONG PageDirectoryFrame
;
558 // This part corresponds to VM_COUNTERS_EX.
559 // NOTE: *NOT* THE SAME AS VM_COUNTERS!
561 ULONG PeakVirtualSize
;
563 ULONG PageFaultCount
;
564 ULONG PeakWorkingSetSize
;
565 ULONG WorkingSetSize
;
566 ULONG QuotaPeakPagedPoolUsage
;
567 ULONG QuotaPagedPoolUsage
;
568 ULONG QuotaPeakNonPagedPoolUsage
;
569 ULONG QuotaNonPagedPoolUsage
;
571 ULONG PeakPagefileUsage
;
575 // This part corresponds to IO_COUNTERS
577 LARGE_INTEGER ReadOperationCount
;
578 LARGE_INTEGER WriteOperationCount
;
579 LARGE_INTEGER OtherOperationCount
;
580 LARGE_INTEGER ReadTransferCount
;
581 LARGE_INTEGER WriteTransferCount
;
582 LARGE_INTEGER OtherTransferCount
;
584 SYSTEM_THREAD_INFORMATION TH
[1];
585 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
588 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
591 ULONG NumberOfTables
;
592 } SYSTEM_CALL_COUNT_INFORMATION
, *PSYSTEM_CALL_COUNT_INFORMATION
;
595 typedef struct _SYSTEM_DEVICE_INFORMATION
598 ULONG NumberOfFloppies
;
599 ULONG NumberOfCdRoms
;
601 ULONG NumberOfSerialPorts
;
602 ULONG NumberOfParallelPorts
;
603 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
606 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
608 LARGE_INTEGER IdleTime
;
609 LARGE_INTEGER KernelTime
;
610 LARGE_INTEGER UserTime
;
611 LARGE_INTEGER DpcTime
;
612 LARGE_INTEGER InterruptTime
;
613 ULONG InterruptCount
;
614 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
;
617 typedef struct _SYSTEM_FLAGS_INFORMATION
620 } SYSTEM_FLAGS_INFORMATION
, *PSYSTEM_FLAGS_INFORMATION
;
623 typedef struct _SYSTEM_CALL_TIME_INFORMATION
627 LARGE_INTEGER TimeOfCalls
[1];
628 } SYSTEM_CALL_TIME_INFORMATION
, *PSYSTEM_CALL_TIME_INFORMATION
;
631 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
643 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
644 typedef struct _SYSTEM_MODULE_INFORMATION
647 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
648 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
651 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
653 ULONG ResourceAddress
;
657 ULONG ContentionCount
;
659 ULONG NumberOfSharedWaiters
;
660 ULONG NumberOfExclusiveWaiters
;
661 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
663 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
666 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
667 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
670 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
673 } SYSTEM_BACKTRACE_INFORMATION_ENTRY
, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY
;
675 typedef struct _SYSTEM_BACKTRACE_INFORMATION
679 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace
[1];
680 } SYSTEM_BACKTRACE_INFORMATION
, *PSYSTEM_BACKTRACE_INFORMATION
;
683 typedef struct _SYSTEM_POOL_ENTRY
687 USHORT AllocatorBackTraceIndex
;
693 PVOID ProcessChargedQuota
;
695 } SYSTEM_POOL_ENTRY
, *PSYSTEM_POOL_ENTRY
;
697 typedef struct _SYSTEM_POOL_INFORMATION
701 USHORT EntryOverhead
;
702 BOOLEAN PoolTagPresent
;
704 ULONG NumberOfEntries
;
705 SYSTEM_POOL_ENTRY Entries
[1];
706 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
709 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
711 USHORT UniqueProcessId
;
712 USHORT CreatorBackTraceIndex
;
713 UCHAR ObjectTypeIndex
;
714 UCHAR HandleAttributes
;
718 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
720 typedef struct _SYSTEM_HANDLE_INFORMATION
722 ULONG NumberOfHandles
;
723 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
724 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
727 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
729 ULONG NextEntryOffset
;
730 ULONG NumberOfObjects
;
731 ULONG NumberOfHandles
;
733 ULONG InvalidAttributes
;
734 GENERIC_MAPPING GenericMapping
;
735 ULONG ValidAccessMask
;
737 BOOLEAN SecurityRequired
;
738 BOOLEAN WaitableObject
;
739 UNICODE_STRING TypeName
;
740 } SYSTEM_OBJECTTYPE_INFORMATION
, *PSYSTEM_OBJECTTYPE_INFORMATION
;
742 typedef struct _SYSTEM_OBJECT_INFORMATION
744 ULONG NextEntryOffset
;
746 HANDLE CreatorUniqueProcess
;
747 USHORT CreatorBackTraceIndex
;
751 ULONG PagedPoolCharge
;
752 ULONG NonPagedPoolCharge
;
753 HANDLE ExclusiveProcessId
;
754 PVOID SecurityDescriptor
;
755 OBJECT_NAME_INFORMATION NameInfo
;
756 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
759 typedef struct _SYSTEM_PAGEFILE_INFORMATION
761 ULONG NextEntryOffset
;
765 UNICODE_STRING PageFileName
;
766 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
769 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
771 ULONG SegmentNotPresent
;
773 ULONG OpcodeESPrefix
;
774 ULONG OpcodeCSPrefix
;
775 ULONG OpcodeSSPrefix
;
776 ULONG OpcodeDSPrefix
;
777 ULONG OpcodeFSPrefix
;
778 ULONG OpcodeGSPrefix
;
779 ULONG OpcodeOPER32Prefix
;
780 ULONG OpcodeADDR32Prefix
;
793 ULONG OpcodeOUTWimm
;
798 ULONG OpcodeLOCKPrefix
;
799 ULONG OpcodeREPNEPrefix
;
800 ULONG OpcodeREPPrefix
;
805 } SYSTEM_VDM_INSTEMUL_INFO
, *PSYSTEM_VDM_INSTEMUL_INFO
;
808 typedef struct _SYSTEM_VDM_BOP_INFO
811 } SYSTEM_VDM_BOP_INFO
, *PSYSTEM_VDM_BOP_INFO
;
814 typedef struct _SYSTEM_CACHE_INFORMATION
818 ULONG PageFaultCount
;
819 ULONG MinimumWorkingSet
;
820 ULONG MaximumWorkingSet
;
821 ULONG CurrentSizeIncludingTransitionInPages
;
822 ULONG PeakSizeIncludingTransitionInPages
;
824 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
827 typedef struct _SYSTEM_POOLTAG
837 ULONG NonPagedAllocs
;
840 } SYSTEM_POOLTAG
, *PSYSTEM_POOLTAG
;
841 typedef struct _SYSTEM_POOLTAG_INFORMATION
844 SYSTEM_POOLTAG TagInfo
[1];
845 } SYSTEM_POOLTAG_INFORMATION
, *PSYSTEM_POOLTAG_INFORMATION
;
848 typedef struct _SYSTEM_INTERRUPT_INFORMATION
850 ULONG ContextSwitches
;
854 ULONG DpcBypassCount
;
855 ULONG ApcBypassCount
;
856 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
859 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
863 ULONG MinimumDpcRate
;
864 ULONG AdjustDpcThreshold
;
866 } SYSTEM_DPC_BEHAVIOR_INFORMATION
, *PSYSTEM_DPC_BEHAVIOR_INFORMATION
;
869 typedef struct _SYSTEM_MEMORY_INFO
873 USHORT TransitionCount
;
874 USHORT ModifiedCount
;
875 USHORT PageTableCount
;
876 } SYSTEM_MEMORY_INFO
, *PSYSTEM_MEMORY_INFO
;
877 typedef struct _SYSTEM_MEMORY_INFORMATION
881 SYSTEM_MEMORY_INFO Memory
[1];
882 } SYSTEM_MEMORY_INFORMATION
, *PSYSTEM_MEMORY_INFORMATION
;
885 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
887 UNICODE_STRING DriverName
;
889 PVOID SectionPointer
;
891 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer
;
892 } SYSTEM_GDI_DRIVER_INFORMATION
, *PSYSTEM_GDI_DRIVER_INFORMATION
;
895 // Not an actually class, simply a PVOID to the ImageAddress
898 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
900 ULONG TimeAdjustment
;
903 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION
, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION
;
905 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
907 ULONG TimeAdjustment
;
909 } SYSTEM_SET_TIME_ADJUST_INFORMATION
, *PSYSTEM_SET_TIME_ADJUST_INFORMATION
;
911 // Class 29 - Same as 25
913 // FIXME: Class 30 - 31
916 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
918 HANDLE CrashDumpSection
;
919 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
922 typedef struct _SYSTEM_EXCEPTION_INFORMATION
924 ULONG AlignmentFixupCount
;
925 ULONG ExceptionDispatchCount
;
926 ULONG FloatingEmulationCount
;
927 ULONG ByteWordEmulationCount
;
928 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
931 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
933 ULONG ValidCrashDump
;
934 } SYSTEM_CRASH_STATE_INFORMATION
, *PSYSTEM_CRASH_STATE_INFORMATION
;
937 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
939 BOOLEAN KernelDebuggerEnabled
;
940 BOOLEAN KernelDebuggerNotPresent
;
941 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
944 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
946 ULONG ContextSwitches
;
955 ULONG PreemptCurrent
;
958 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
961 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
963 ULONG RegistryQuotaAllowed
;
964 ULONG RegistryQuotaUsed
;
966 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
969 // Not a structure, simply send the UNICODE_STRING
972 // Not a structure, simply send a ULONG containing the new separation
975 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
978 PLUGPLAY_BUS_INSTANCE BusInstance
[1];
979 } SYSTEM_PLUGPLAY_BUS_INFORMATION
, *PSYSTEM_PLUGPLAY_BUS_INFORMATION
;
982 typedef struct _SYSTEM_DOCK_INFORMATION
984 SYSTEM_DOCK_STATE DockState
;
985 INTERFACE_TYPE DeviceBusType
;
986 ULONG DeviceBusNumber
;
988 } SYSTEM_DOCK_INFORMATION
, *PSYSTEM_DOCK_INFORMATION
;
991 // FIXME: Conflict with WINNT.H
992 typedef struct __SYSTEM_POWER_INFORMATION
994 BOOLEAN SystemSuspendSupported
;
995 BOOLEAN SystemHibernateSupported
;
996 BOOLEAN ResumeTimerSupportsSuspend
;
997 BOOLEAN ResumeTimerSupportsHibernate
;
998 BOOLEAN LidSupported
;
999 BOOLEAN TurboSettingSupported
;
1001 BOOLEAN SystemAcOrDc
;
1002 BOOLEAN PowerDownDisabled
;
1003 LARGE_INTEGER SpindownDrives
;
1004 } _SYSTEM_POWER_INFORMATION
, *P_SYSTEM_POWER_INFORMATION
;
1007 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
1009 PNP_VETO_TYPE VetoType
;
1010 UNICODE_STRING VetoDriver
;
1012 } SYSTEM_LEGACY_DRIVER_INFORMATION
, *PSYSTEM_LEGACY_DRIVER_INFORMATION
;
1015 typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION
;
1018 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
1020 USHORT CurrentDepth
;
1021 USHORT MaximumDepth
;
1022 ULONG TotalAllocates
;
1023 ULONG AllocateMisses
;
1029 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
1032 // Not a structure. Only a HANDLE for the SlipEvent;
1035 // Not a structure. Only a ULONG for the SessionId;
1038 // Not a structure. Only a ULONG for the SessionId;
1043 // Not a structure. Only a ULONG_PTR for the SystemRangeStart
1045 // FIXME: Class 51 (Based on MM_DRIVER_VERIFIER_DATA)
1050 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
1054 PVOID Buffer
; // Same format as in SystemProcessInformation
1055 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;