2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/zwtypes.h
4 * PURPOSE: Defintions for Native Types not defined in DDK/IFS
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
12 /* DEPENDENCIES **************************************************************/
16 /* EXPORTED DATA *************************************************************/
18 /* CONSTANTS *****************************************************************/
19 #define MAX_BUS_NAME 24
21 #define EVENT_READ_ACCESS 1
22 #define EVENT_WRITE_ACCESS 2
24 #define PORT_ALL_ACCESS (0x1)
26 #define EVENT_PAIR_ALL_ACCESS (0x1F0000L)
28 #define OBJECT_TYPE_CREATE 0x0001
29 #define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
31 /* For ProcessDeviceMap */
32 #define DOSDEVICE_DRIVE_UNKNOWN 0
33 #define DOSDEVICE_DRIVE_CALCULATE 1
34 #define DOSDEVICE_DRIVE_REMOVABLE 2
35 #define DOSDEVICE_DRIVE_FIXED 3
36 #define DOSDEVICE_DRIVE_REMOTE 4
37 #define DOSDEVICE_DRIVE_CDROM 5
38 #define DOSDEVICE_DRIVE_RAMDISK 6
40 /* ENUMERATIONS **************************************************************/
42 typedef enum _HARDERROR_RESPONSE_OPTION
44 OptionAbortRetryIgnore
,
51 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
53 typedef enum _HARDERROR_RESPONSE
55 ResponseReturnToCaller
,
64 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
66 typedef enum SHUTDOWN_ACTION_TAG
73 typedef enum _PLUGPLAY_BUS_CLASS
78 } PLUGPLAY_BUS_CLASS
, *PPLUGPLAY_BUS_CLASS
;
80 typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE
83 MaxPlugPlayVirtualBusType
84 } PLUGPLAY_VIRTUAL_BUS_TYPE
, *PPLUGPLAY_VIRTUAL_BUS_TYPE
;
86 typedef enum _SYSTEM_DOCK_STATE
88 SystemDockStateUnknown
,
91 } SYSTEM_DOCK_STATE
, *PSYSTEM_DOCK_STATE
;
93 /**** Information Classes ****/
96 * Process (extra ones not defined in DDK)
98 /* FIXME: Temporary hack until all KMODE stuf are NDK */
100 typedef enum _PROCESS_INFORMATION_FLAGS
102 ProcessUnknown33
= 33,
106 } PROCESS_INFORMATION_FLAGS
;
112 typedef enum _SYSTEM_INFORMATION_CLASS
114 SystemBasicInformation
,
115 SystemProcessorInformation
,
116 SystemPerformanceInformation
,
117 SystemTimeOfDayInformation
,
118 SystemPathInformation
, /* OBSOLETE: USE KUSER_SHARED_DATA */
119 SystemProcessInformation
,
120 SystemCallCountInformation
,
121 SystemDeviceInformation
,
122 SystemProcessorPerformanceInformation
,
123 SystemFlagsInformation
,
124 SystemCallTimeInformation
,
125 SystemModuleInformation
,
126 SystemLocksInformation
,
127 SystemStackTraceInformation
,
128 SystemPagedPoolInformation
,
129 SystemNonPagedPoolInformation
,
130 SystemHandleInformation
,
131 SystemObjectInformation
,
132 SystemPageFileInformation
,
133 SystemVdmInstemulInformation
,
134 SystemVdmBopInformation
,
135 SystemFileCacheInformation
,
136 SystemPoolTagInformation
,
137 SystemInterruptInformation
,
138 SystemDpcBehaviorInformation
,
139 SystemFullMemoryInformation
,
140 SystemLoadGdiDriverInformation
,
141 SystemUnloadGdiDriverInformation
,
142 SystemTimeAdjustmentInformation
,
143 SystemSummaryMemoryInformation
,
144 SystemNextEventIdInformation
,
145 SystemEventIdsInformation
,
146 SystemCrashDumpInformation
,
147 SystemExceptionInformation
,
148 SystemCrashDumpStateInformation
,
149 SystemKernelDebuggerInformation
,
150 SystemContextSwitchInformation
,
151 SystemRegistryQuotaInformation
,
152 SystemExtendServiceTableInformation
,
153 SystemPrioritySeperation
,
154 SystemPlugPlayBusInformation
,
155 SystemDockInformation
,
156 _SystemPowerInformation
, /* FIXME */
157 SystemProcessorSpeedInformation
,
158 SystemCurrentTimeZoneInformation
,
159 SystemLookasideInformation
,
160 SystemTimeSlipNotification
,
163 SystemSessionInformation
,
164 SystemRangeStartInformation
,
165 SystemVerifierInformation
,
167 SystemSessionProcessesInformation
,
168 SystemInformationClassMax
169 } SYSTEM_INFORMATION_CLASS
;
174 typedef enum _OBJECT_INFORMATION_CLASS
176 ObjectBasicInformation
,
177 ObjectNameInformation
,
178 ObjectTypeInformation
,
179 ObjectAllTypesInformation
,
180 ObjectHandleInformation
181 } OBJECT_INFORMATION_CLASS
;
186 typedef enum _MEMORY_INFORMATION_CLASS
188 MemoryBasicInformation
,
189 MemoryWorkingSetList
,
191 MemoryBasicVlmInformation
192 } MEMORY_INFORMATION_CLASS
;
197 typedef enum _MUTANT_INFORMATION_CLASS
199 MutantBasicInformation
200 } MUTANT_INFORMATION_CLASS
;
205 typedef enum _ATOM_INFORMATION_CLASS
207 AtomBasicInformation
,
208 AtomTableInformation
,
209 } ATOM_INFORMATION_CLASS
;
214 typedef enum _SECTION_INFORMATION_CLASS
216 SectionBasicInformation
,
217 SectionImageInformation
,
218 } SECTION_INFORMATION_CLASS
;
223 typedef enum _TIMER_INFORMATION_CLASS
{
224 TimerBasicInformation
225 } TIMER_INFORMATION_CLASS
;
230 typedef enum _SEMAPHORE_INFORMATION_CLASS
232 SemaphoreBasicInformation
233 } SEMAPHORE_INFORMATION_CLASS
;
238 typedef enum _EVENT_INFORMATION_CLASS
240 EventBasicInformation
241 } EVENT_INFORMATION_CLASS
;
246 typedef enum _IO_COMPLETION_INFORMATION_CLASS
248 IoCompletionBasicInformation
249 } IO_COMPLETION_INFORMATION_CLASS
;
251 /* TYPES *********************************************************************/
253 typedef unsigned short LANGID
;
254 typedef LANGID
*PLANGID
;
255 struct _PLUGPLAY_EVENT_BLOCK
; /* FIXME: Ask Filip if it's OK to define it */
257 /**** Information Structures ****/
263 typedef struct _MUTANT_BASIC_INFORMATION
266 BOOLEAN OwnedByCaller
;
267 BOOLEAN AbandonedState
;
268 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
275 typedef struct _THREAD_BASIC_INFORMATION
278 PVOID TebBaseAddress
;
280 KAFFINITY AffinityMask
;
282 KPRIORITY BasePriority
;
283 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
290 typedef struct _ATOM_BASIC_INFORMATION
{
295 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
298 typedef struct _ATOM_TABLE_INFORMATION
302 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
307 typedef struct _OBJECT_DIRECTORY_INFORMATION
309 UNICODE_STRING ObjectName
;
310 UNICODE_STRING ObjectTypeName
;
311 } OBJECT_DIRECTORY_INFORMATION
, *POBJECT_DIRECTORY_INFORMATION
;
318 typedef struct _MEMORY_WORKING_SET_LIST
321 ULONG WorkingSetList
[1];
322 } MEMORY_WORKING_SET_LIST
, *PMEMORY_WORKING_SET_LIST
;
326 UNICODE_STRING SectionFileName
;
327 WCHAR NameBuffer
[ANYSIZE_ARRAY
];
328 } MEMORY_SECTION_NAME
, *PMEMORY_SECTION_NAME
;
335 typedef struct _SECTION_BASIC_INFORMATION
340 } SECTION_BASIC_INFORMATION
, *PSECTION_BASIC_INFORMATION
;
343 typedef struct _SECTION_IMAGE_INFORMATION
347 ULONG_PTR StackReserve
;
348 ULONG_PTR StackCommit
;
350 USHORT MinorSubsystemVersion
;
351 USHORT MajorSubsystemVersion
;
353 ULONG Characteristics
;
358 } SECTION_IMAGE_INFORMATION
, *PSECTION_IMAGE_INFORMATION
;
365 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION
368 BOOLEAN ProtectFromClose
;
369 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION
, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION
;
376 typedef struct _TIMER_BASIC_INFORMATION
378 LARGE_INTEGER TimeRemaining
;
380 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
387 typedef struct _SEMAPHORE_BASIC_INFORMATION
{
390 } SEMAPHORE_BASIC_INFORMATION
, *PSEMAPHORE_BASIC_INFORMATION
;
396 typedef struct _EVENT_BASIC_INFORMATION
398 EVENT_TYPE EventType
;
400 } EVENT_BASIC_INFORMATION
, *PEVENT_BASIC_INFORMATION
;
407 typedef struct _PROCESS_BASIC_INFORMATION
411 KAFFINITY AffinityMask
;
412 KPRIORITY BasePriority
;
413 ULONG UniqueProcessId
;
414 ULONG InheritedFromUniqueProcessId
;
415 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
419 typedef struct _KERNEL_USER_TIMES
421 LARGE_INTEGER CreateTime
;
422 LARGE_INTEGER ExitTime
;
423 LARGE_INTEGER KernelTime
;
424 LARGE_INTEGER UserTime
;
425 } KERNEL_USER_TIMES
, *PKERNEL_USER_TIMES
;
428 typedef struct _PROCESS_ACCESS_TOKEN
432 } PROCESS_ACCESS_TOKEN
, *PPROCESS_ACCESS_TOKEN
;
435 typedef struct _PROCESS_PRIORITY_CLASS
439 } PROCESS_PRIORITY_CLASS
, *PPROCESS_PRIORITY_CLASS
;
442 typedef struct _PROCESS_DEVICEMAP_INFORMATION
448 HANDLE DirectoryHandle
;
456 } PROCESS_DEVICEMAP_INFORMATION
, *PPROCESS_DEVICEMAP_INFORMATION
;
459 typedef struct _PROCESS_SESSION_INFORMATION
462 } PROCESS_SESSION_INFORMATION
, *PPROCESS_SESSION_INFORMATION
;
469 typedef struct _SYSTEM_BASIC_INFORMATION
472 ULONG TimerResolution
;
474 ULONG NumberOfPhysicalPages
;
475 ULONG LowestPhysicalPageNumber
;
476 ULONG HighestPhysicalPageNumber
;
477 ULONG AllocationGranularity
;
478 ULONG MinimumUserModeAddress
;
479 ULONG MaximumUserModeAddress
;
480 KAFFINITY ActiveProcessorsAffinityMask
;
481 CCHAR NumberOfProcessors
;
482 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
485 typedef struct _SYSTEM_PROCESSOR_INFORMATION
487 USHORT ProcessorArchitecture
;
488 USHORT ProcessorLevel
;
489 USHORT ProcessorRevision
;
491 ULONG ProcessorFeatureBits
;
492 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
495 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
497 LARGE_INTEGER IdleProcessTime
;
498 LARGE_INTEGER IoReadTransferCount
;
499 LARGE_INTEGER IoWriteTransferCount
;
500 LARGE_INTEGER IoOtherTransferCount
;
501 ULONG IoReadOperationCount
;
502 ULONG IoWriteOperationCount
;
503 ULONG IoOtherOperationCount
;
504 ULONG AvailablePages
;
505 ULONG CommittedPages
;
507 ULONG PeakCommitment
;
508 ULONG PageFaultCount
;
509 ULONG CopyOnWriteCount
;
510 ULONG TransitionCount
;
511 ULONG CacheTransitionCount
;
512 ULONG DemandZeroCount
;
514 ULONG PageReadIoCount
;
515 ULONG CacheReadCount
;
517 ULONG DirtyPagesWriteCount
;
518 ULONG DirtyWriteIoCount
;
519 ULONG MappedPagesWriteCount
;
520 ULONG MappedWriteIoCount
;
521 ULONG PagedPoolPages
;
522 ULONG NonPagedPoolPages
;
523 ULONG PagedPoolAllocs
;
524 ULONG PagedPoolFrees
;
525 ULONG NonPagedPoolAllocs
;
526 ULONG NonPagedPoolFrees
;
527 ULONG FreeSystemPtes
;
528 ULONG ResidentSystemCodePage
;
529 ULONG TotalSystemDriverPages
;
530 ULONG TotalSystemCodePages
;
531 ULONG NonPagedPoolLookasideHits
;
532 ULONG PagedPoolLookasideHits
;
534 ULONG ResidentSystemCachePage
;
535 ULONG ResidentPagedPoolPage
;
536 ULONG ResidentSystemDriverPage
;
537 ULONG CcFastReadNoWait
;
538 ULONG CcFastReadWait
;
539 ULONG CcFastReadResourceMiss
;
540 ULONG CcFastReadNotPossible
;
541 ULONG CcFastMdlReadNoWait
;
542 ULONG CcFastMdlReadWait
;
543 ULONG CcFastMdlReadResourceMiss
;
544 ULONG CcFastMdlReadNotPossible
;
545 ULONG CcMapDataNoWait
;
547 ULONG CcMapDataNoWaitMiss
;
548 ULONG CcMapDataWaitMiss
;
549 ULONG CcPinMappedDataCount
;
550 ULONG CcPinReadNoWait
;
552 ULONG CcPinReadNoWaitMiss
;
553 ULONG CcPinReadWaitMiss
;
554 ULONG CcCopyReadNoWait
;
555 ULONG CcCopyReadWait
;
556 ULONG CcCopyReadNoWaitMiss
;
557 ULONG CcCopyReadWaitMiss
;
558 ULONG CcMdlReadNoWait
;
560 ULONG CcMdlReadNoWaitMiss
;
561 ULONG CcMdlReadWaitMiss
;
562 ULONG CcReadAheadIos
;
563 ULONG CcLazyWriteIos
;
564 ULONG CcLazyWritePages
;
567 ULONG ContextSwitches
;
568 ULONG FirstLevelTbFills
;
569 ULONG SecondLevelTbFills
;
571 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
574 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
576 LARGE_INTEGER BootTime
;
577 LARGE_INTEGER CurrentTime
;
578 LARGE_INTEGER TimeZoneBias
;
581 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
584 /* This class is obsoleted, please use KUSER_SHARED_DATA instead */
587 typedef struct _SYSTEM_THREAD_INFORMATION
589 LARGE_INTEGER KernelTime
;
590 LARGE_INTEGER UserTime
;
591 LARGE_INTEGER CreateTime
;
597 ULONG ContextSwitches
;
600 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
601 typedef struct _SYSTEM_PROCESS_INFORMATION
603 ULONG NextEntryOffset
;
604 ULONG NumberOfThreads
;
605 LARGE_INTEGER SpareLi1
;
606 LARGE_INTEGER SpareLi2
;
607 LARGE_INTEGER SpareLi3
;
608 LARGE_INTEGER CreateTime
;
609 LARGE_INTEGER UserTime
;
610 LARGE_INTEGER KernelTime
;
611 UNICODE_STRING ImageName
;
612 KPRIORITY BasePriority
;
613 HANDLE UniqueProcessId
;
614 HANDLE InheritedFromUniqueProcessId
;
617 ULONG PageDirectoryFrame
;
620 * This part corresponds to VM_COUNTERS_EX.
621 * NOTE: *NOT* THE SAME AS VM_COUNTERS!
623 ULONG PeakVirtualSize
;
625 ULONG PageFaultCount
;
626 ULONG PeakWorkingSetSize
;
627 ULONG WorkingSetSize
;
628 ULONG QuotaPeakPagedPoolUsage
;
629 ULONG QuotaPagedPoolUsage
;
630 ULONG QuotaPeakNonPagedPoolUsage
;
631 ULONG QuotaNonPagedPoolUsage
;
633 ULONG PeakPagefileUsage
;
636 /* This part corresponds to IO_COUNTERS */
637 LARGE_INTEGER ReadOperationCount
;
638 LARGE_INTEGER WriteOperationCount
;
639 LARGE_INTEGER OtherOperationCount
;
640 LARGE_INTEGER ReadTransferCount
;
641 LARGE_INTEGER WriteTransferCount
;
642 LARGE_INTEGER OtherTransferCount
;
644 /* Finally, the array of Threads */
645 SYSTEM_THREAD_INFORMATION TH
[1];
646 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
649 typedef struct _SYSTEM_CALL_COUNT_INFORMATION
652 ULONG NumberOfTables
;
653 } SYSTEM_CALL_COUNT_INFORMATION
, *PSYSTEM_CALL_COUNT_INFORMATION
;
656 typedef struct _SYSTEM_DEVICE_INFORMATION
659 ULONG NumberOfFloppies
;
660 ULONG NumberOfCdRoms
;
662 ULONG NumberOfSerialPorts
;
663 ULONG NumberOfParallelPorts
;
664 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
667 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
669 LARGE_INTEGER IdleTime
;
670 LARGE_INTEGER KernelTime
;
671 LARGE_INTEGER UserTime
;
672 LARGE_INTEGER DpcTime
;
673 LARGE_INTEGER InterruptTime
;
674 ULONG InterruptCount
;
675 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
;
678 typedef struct _SYSTEM_FLAGS_INFORMATION
681 } SYSTEM_FLAGS_INFORMATION
, *PSYSTEM_FLAGS_INFORMATION
;
684 typedef struct _SYSTEM_CALL_TIME_INFORMATION
688 LARGE_INTEGER TimeOfCalls
[1];
689 } SYSTEM_CALL_TIME_INFORMATION
, *PSYSTEM_CALL_TIME_INFORMATION
;
692 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
704 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
705 typedef struct _SYSTEM_MODULE_INFORMATION
708 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
709 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
712 typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY
714 ULONG ResourceAddress
;
718 ULONG ContentionCount
;
720 ULONG NumberOfSharedWaiters
;
721 ULONG NumberOfExclusiveWaiters
;
722 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
723 typedef struct _SYSTEM_RESOURCE_LOCK_INFO
726 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
727 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
730 typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
733 } SYSTEM_BACKTRACE_INFORMATION_ENTRY
, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY
;
734 typedef struct _SYSTEM_BACKTRACE_INFORMATION
739 SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace
[1];
740 } SYSTEM_BACKTRACE_INFORMATION
, *PSYSTEM_BACKTRACE_INFORMATION
;
743 typedef struct _SYSTEM_POOL_ENTRY
747 USHORT AllocatorBackTraceIndex
;
752 PVOID ProcessChargedQuota
;
754 } SYSTEM_POOL_ENTRY
, *PSYSTEM_POOL_ENTRY
;
755 typedef struct _SYSTEM_POOL_INFORMATION
759 USHORT EntryOverhead
;
760 BOOLEAN PoolTagPresent
;
762 ULONG NumberOfEntries
;
763 SYSTEM_POOL_ENTRY Entries
[1];
764 } SYSTEM_POOL_INFORMATION
, *PSYSTEM_POOL_INFORMATION
;
767 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
769 USHORT UniqueProcessId
;
770 USHORT CreatorBackTraceIndex
;
771 UCHAR ObjectTypeIndex
;
772 UCHAR HandleAttributes
;
776 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
777 typedef struct _SYSTEM_HANDLE_INFORMATION
779 ULONG NumberOfHandles
;
780 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
781 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
784 typedef struct _SYSTEM_OBJECTTYPE_INFORMATION
786 ULONG NextEntryOffset
;
787 ULONG NumberOfObjects
;
788 ULONG NumberOfHandles
;
790 ULONG InvalidAttributes
;
791 GENERIC_MAPPING GenericMapping
;
792 ULONG ValidAccessMask
;
794 BOOLEAN SecurityRequired
;
795 BOOLEAN WaitableObject
;
796 UNICODE_STRING TypeName
;
797 } SYSTEM_OBJECTTYPE_INFORMATION
, *PSYSTEM_OBJECTTYPE_INFORMATION
;
798 typedef struct _SYSTEM_OBJECT_INFORMATION
800 ULONG NextEntryOffset
;
802 HANDLE CreatorUniqueProcess
;
803 USHORT CreatorBackTraceIndex
;
807 ULONG PagedPoolCharge
;
808 ULONG NonPagedPoolCharge
;
809 HANDLE ExclusiveProcessId
;
810 PVOID SecurityDescriptor
;
811 OBJECT_NAME_INFORMATION NameInfo
;
812 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
815 typedef struct _SYSTEM_PAGEFILE_INFORMATION
817 ULONG NextEntryOffset
;
821 UNICODE_STRING PageFileName
;
822 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
825 typedef struct _SYSTEM_VDM_INSTEMUL_INFO
827 ULONG SegmentNotPresent
;
829 ULONG OpcodeESPrefix
;
830 ULONG OpcodeCSPrefix
;
831 ULONG OpcodeSSPrefix
;
832 ULONG OpcodeDSPrefix
;
833 ULONG OpcodeFSPrefix
;
834 ULONG OpcodeGSPrefix
;
835 ULONG OpcodeOPER32Prefix
;
836 ULONG OpcodeADDR32Prefix
;
849 ULONG OpcodeOUTWimm
;
854 ULONG OpcodeLOCKPrefix
;
855 ULONG OpcodeREPNEPrefix
;
856 ULONG OpcodeREPPrefix
;
861 } SYSTEM_VDM_INSTEMUL_INFO
, *PSYSTEM_VDM_INSTEMUL_INFO
;
864 typedef struct _SYSTEM_VDM_BOP_INFO
868 } SYSTEM_VDM_BOP_INFO
, *PSYSTEM_VDM_BOP_INFO
;
871 typedef struct _SYSTEM_CACHE_INFORMATION
875 ULONG PageFaultCount
;
876 ULONG MinimumWorkingSet
;
877 ULONG MaximumWorkingSet
;
878 ULONG CurrentSizeIncludingTransitionInPages
;
879 ULONG PeakSizeIncludingTransitionInPages
;
881 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
884 typedef struct _SYSTEM_POOLTAG
894 ULONG NonPagedAllocs
;
897 } SYSTEM_POOLTAG
, *PSYSTEM_POOLTAG
;
898 typedef struct _SYSTEM_POOLTAG_INFORMATION
901 SYSTEM_POOLTAG TagInfo
[1];
902 } SYSTEM_POOLTAG_INFORMATION
, *PSYSTEM_POOLTAG_INFORMATION
;
905 typedef struct _SYSTEM_INTERRUPT_INFORMATION
907 ULONG ContextSwitches
;
911 ULONG DpcBypassCount
;
912 ULONG ApcBypassCount
;
913 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
916 typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION
920 ULONG MinimumDpcRate
;
921 ULONG AdjustDpcThreshold
;
923 } SYSTEM_DPC_BEHAVIOR_INFORMATION
, *PSYSTEM_DPC_BEHAVIOR_INFORMATION
;
926 typedef struct _SYSTEM_MEMORY_INFO
930 USHORT TransitionCount
;
931 USHORT ModifiedCount
;
932 USHORT PageTableCount
;
933 } SYSTEM_MEMORY_INFO
, *PSYSTEM_MEMORY_INFO
;
934 typedef struct _SYSTEM_MEMORY_INFORMATION
938 SYSTEM_MEMORY_INFO Memory
[1];
939 } SYSTEM_MEMORY_INFORMATION
, *PSYSTEM_MEMORY_INFORMATION
;
942 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
{
943 UNICODE_STRING DriverName
;
945 PVOID SectionPointer
;
947 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer
;
948 } SYSTEM_GDI_DRIVER_INFORMATION
, *PSYSTEM_GDI_DRIVER_INFORMATION
;
951 /* Not an actuall class, simply a PVOID to the ImageAddress */
954 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
956 ULONG TimeAdjustment
;
959 } SYSTEM_QUERY_TIME_ADJUST_INFORMATION
, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION
;
960 typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION
962 ULONG TimeAdjustment
;
964 } SYSTEM_SET_TIME_ADJUST_INFORMATION
, *PSYSTEM_SET_TIME_ADJUST_INFORMATION
;
966 /* Class 29 - Same as 25 */
972 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
974 HANDLE CrashDumpSection
;
975 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
978 typedef struct _SYSTEM_EXCEPTION_INFORMATION
980 ULONG AlignmentFixupCount
;
981 ULONG ExceptionDispatchCount
;
982 ULONG FloatingEmulationCount
;
983 ULONG ByteWordEmulationCount
;
984 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
987 typedef struct _SYSTEM_CRASH_STATE_INFORMATION
989 ULONG ValidCrashDump
;
990 } SYSTEM_CRASH_STATE_INFORMATION
, *PSYSTEM_CRASH_STATE_INFORMATION
;
993 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
995 BOOLEAN KernelDebuggerEnabled
;
996 BOOLEAN KernelDebuggerNotPresent
;
997 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
1000 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
{
1001 ULONG ContextSwitches
;
1010 ULONG PreemptCurrent
;
1013 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
1016 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
1018 ULONG RegistryQuotaAllowed
;
1019 ULONG RegistryQuotaUsed
;
1020 ULONG PagedPoolSize
;
1021 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
1024 /* Not a structure, simply send the UNICODE_STRING */
1027 /* Not a structure, simply send a ULONG containing the new separation */
1030 typedef struct _PLUGPLAY_BUS_TYPE
1032 PLUGPLAY_BUS_CLASS BusClass
;
1035 INTERFACE_TYPE SystemBusType
;
1036 PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType
;
1038 } PLUGPLAY_BUS_TYPE
, *PPLUGPLAY_BUS_TYPE
;
1039 typedef struct _PLUGPLAY_BUS_INSTANCE
1041 PLUGPLAY_BUS_TYPE BusType
;
1043 WCHAR BusName
[MAX_BUS_NAME
];
1044 } PLUGPLAY_BUS_INSTANCE
, *PPLUGPLAY_BUS_INSTANCE
;
1045 typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION
1048 PLUGPLAY_BUS_INSTANCE BusInstance
[1];
1049 } SYSTEM_PLUGPLAY_BUS_INFORMATION
, *PSYSTEM_PLUGPLAY_BUS_INFORMATION
;
1052 typedef struct _SYSTEM_DOCK_INFORMATION
1054 SYSTEM_DOCK_STATE DockState
;
1055 INTERFACE_TYPE DeviceBusType
;
1056 ULONG DeviceBusNumber
;
1058 } SYSTEM_DOCK_INFORMATION
, *PSYSTEM_DOCK_INFORMATION
;
1061 /* FIXME: Conflict with WINNT.H */
1062 typedef struct __SYSTEM_POWER_INFORMATION
1064 BOOLEAN SystemSuspendSupported
;
1065 BOOLEAN SystemHibernateSupported
;
1066 BOOLEAN ResumeTimerSupportsSuspend
;
1067 BOOLEAN ResumeTimerSupportsHibernate
;
1068 BOOLEAN LidSupported
;
1069 BOOLEAN TurboSettingSupported
;
1071 BOOLEAN SystemAcOrDc
;
1072 BOOLEAN PowerDownDisabled
;
1073 LARGE_INTEGER SpindownDrives
;
1074 } _SYSTEM_POWER_INFORMATION
, *P_SYSTEM_POWER_INFORMATION
;
1077 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
1079 PNP_VETO_TYPE VetoType
;
1080 UNICODE_STRING VetoDriver
;
1081 /* Buffer Follows */
1082 } SYSTEM_LEGACY_DRIVER_INFORMATION
, *PSYSTEM_LEGACY_DRIVER_INFORMATION
;
1085 typedef struct _TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION
;
1088 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
1090 USHORT CurrentDepth
;
1091 USHORT MaximumDepth
;
1092 ULONG TotalAllocates
;
1093 ULONG AllocateMisses
;
1099 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
1102 /* Not a structure. Only a HANDLE for the SlipEvent; */
1105 /* Not a structure. Only a ULONG for the SessionId; */
1108 /* Not a structure. Only a ULONG for the SessionId; */
1114 /* Not a structure. Only a ULONG_PTR for the SystemRangeStart */
1117 /* FIXME. Based on MM_DRIVER_VERIFIER_DATA */
1123 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
1127 PVOID Buffer
; /* same format as in SystemProcessInformation */
1128 } SYSTEM_SESSION_PROCESSES_INFORMATION
, * PSYSTEM_SESSION_PROCESSES_INFORMATION
;