1 #ifndef __INCLUDE_NTOS_ZWTYPES_H
2 #define __INCLUDE_NTOS_ZWTYPES_H
6 typedef unsigned short LANGID
;
7 typedef LANGID
*PLANGID
;
9 typedef struct _LDT_ENTRY
{
27 DWORD Default_Big
: 1;
28 DWORD Granularity
: 1;
32 } LDT_ENTRY
, *PLDT_ENTRY
, *LPLDT_ENTRY
;
34 typedef enum _THREAD_STATE
{
45 typedef enum _DEBUG_CONTROL_CODE
47 DebugGetTraceInformation
= 1,
48 DebugSetInternalBreakpoint
,
50 DebugClearSpecialCalls
,
51 DebugQuerySpecialCalls
,
56 typedef enum _KPROFILE_SOURCE
61 // file disposition values
63 #define FILE_SUPERSEDE 0x0000
64 #define FILE_OPEN 0x0001
65 #define FILE_CREATE 0x0002
66 #define FILE_OPEN_IF 0x0003
67 #define FILE_OVERWRITE 0x0004
68 #define FILE_OVERWRITE_IF 0x0005
69 #define FILE_MAXIMUM_DISPOSITION 0x0005
71 // job query / set information class
73 typedef enum _JOBOBJECTINFOCLASS
{ // Q S
74 JobObjectBasicAccountingInformation
= 1, // Y N
75 JobObjectBasicLimitInformation
, // Y Y
76 JobObjectBasicProcessIdList
, // Y N
77 JobObjectBasicUIRestrictions
, // Y Y
78 JobObjectSecurityLimitInformation
, // Y Y
79 JobObjectEndOfJobTimeInformation
, // N Y
80 JobObjectAssociateCompletionPortInformation
, // N Y
81 JobObjectBasicAndIoAccountingInformation
, // Y N
82 JobObjectExtendedLimitInformation
, // Y Y
86 // {Nt|Zw}{Query|Set}SystemInformation
87 // (GN means Gary Nebbet in "NT/W2K Native API Reference")
90 enum _SYSTEM_INFORMATION_CLASS
92 SystemInformationClassMin
= 0,
93 SystemBasicInformation
= 0, /* Q */
95 SystemProcessorInformation
= 1, /* Q */
97 SystemPerformanceInformation
= 2, /* Q */
99 SystemTimeOfDayInformation
= 3, /* Q */
101 SystemPathInformation
= 4, /* Q (checked build only) */
102 SystemNotImplemented1
= 4, /* Q (GN) */
104 SystemProcessInformation
= 5, /* Q */
105 SystemProcessesAndThreadsInformation
= 5, /* Q (GN) */
107 SystemCallCountInfoInformation
= 6, /* Q */
108 SystemCallCounts
= 6, /* Q (GN) */
110 SystemDeviceInformation
= 7, /* Q */
111 // It conflicts with symbol in ntoskrnl/io/resource.c
112 // SystemConfigurationInformation = 7, /* Q (GN) */
114 SystemProcessorPerformanceInformation
= 8, /* Q */
115 SystemProcessorTimes
= 8, /* Q (GN) */
117 SystemFlagsInformation
= 9, /* QS */
118 SystemGlobalFlag
= 9, /* QS (GN) */
120 SystemCallTimeInformation
= 10,
121 SystemNotImplemented2
= 10, /* (GN) */
123 SystemModuleInformation
= 11, /* Q */
125 SystemLocksInformation
= 12, /* Q */
126 SystemLockInformation
= 12, /* Q (GN) */
128 SystemStackTraceInformation
= 13,
129 SystemNotImplemented3
= 13, /* Q (GN) */
131 SystemPagedPoolInformation
= 14,
132 SystemNotImplemented4
= 14, /* Q (GN) */
134 SystemNonPagedPoolInformation
= 15,
135 SystemNotImplemented5
= 15, /* Q (GN) */
137 SystemHandleInformation
= 16, /* Q */
139 SystemObjectInformation
= 17, /* Q */
141 SystemPageFileInformation
= 18, /* Q */
142 SystemPagefileInformation
= 18, /* Q (GN) */
144 SystemVdmInstemulInformation
= 19, /* Q */
145 SystemInstructionEmulationCounts
= 19, /* Q (GN) */
147 SystemVdmBopInformation
= 20,
148 SystemInvalidInfoClass1
= 20, /* (GN) */
150 SystemFileCacheInformation
= 21, /* QS */
151 SystemCacheInformation
= 21, /* QS (GN) */
153 SystemPoolTagInformation
= 22, /* Q (checked build only) */
155 SystemInterruptInformation
= 23, /* Q */
156 SystemProcessorStatistics
= 23, /* Q (GN) */
158 SystemDpcBehaviourInformation
= 24, /* QS */
159 SystemDpcInformation
= 24, /* QS (GN) */
161 SystemFullMemoryInformation
= 25,
162 SystemNotImplemented6
= 25, /* (GN) */
164 SystemLoadImage
= 26, /* S (callable) (GN) */
166 SystemUnloadImage
= 27, /* S (callable) (GN) */
168 SystemTimeAdjustmentInformation
= 28, /* QS */
169 SystemTimeAdjustment
= 28, /* QS (GN) */
171 SystemSummaryMemoryInformation
= 29,
172 SystemNotImplemented7
= 29, /* (GN) */
174 SystemNextEventIdInformation
= 30,
175 SystemNotImplemented8
= 30, /* (GN) */
177 SystemEventIdsInformation
= 31,
178 SystemNotImplemented9
= 31, /* (GN) */
180 SystemCrashDumpInformation
= 32, /* Q */
182 SystemExceptionInformation
= 33, /* Q */
184 SystemCrashDumpStateInformation
= 34, /* Q */
186 SystemKernelDebuggerInformation
= 35, /* Q */
188 SystemContextSwitchInformation
= 36, /* Q */
190 SystemRegistryQuotaInformation
= 37, /* QS */
192 SystemLoadAndCallImage
= 38, /* S (GN) */
194 SystemPrioritySeparation
= 39, /* S */
196 SystemPlugPlayBusInformation
= 40,
197 SystemNotImplemented10
= 40, /* Q (GN) */
199 SystemDockInformation
= 41,
200 SystemNotImplemented11
= 41, /* Q (GN) */
202 SystemPowerInformation
= 42,
203 SystemInvalidInfoClass2
= 42, /* (GN) */
205 SystemProcessorSpeedInformation
= 43,
206 SystemInvalidInfoClass3
= 43, /* (GN) */
208 SystemCurrentTimeZoneInformation
= 44, /* QS */
209 SystemTimeZoneInformation
= 44, /* QS (GN) */
211 SystemLookasideInformation
= 45, /* Q */
213 SystemSetTimeSlipEvent
= 46, /* S (GN) */
215 SystemCreateSession
= 47, /* S (GN) */
217 SystemDeleteSession
= 48, /* S (GN) */
219 SystemInvalidInfoClass4
= 49, /* (GN) */
221 SystemRangeStartInformation
= 50, /* Q (GN) */
223 SystemVerifierInformation
= 51, /* QS (GN) */
225 SystemAddVerifier
= 52, /* S (GN) */
227 SystemSessionProcessesInformation
= 53, /* Q (GN) */
228 SystemInformationClassMax
230 } SYSTEM_INFORMATION_CLASS
;
232 // SystemBasicInformation (0)
233 // Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
235 struct _SYSTEM_BASIC_INFORMATION
238 ULONG MaximumIncrement
;
239 ULONG PhysicalPageSize
;
240 ULONG NumberOfPhysicalPages
;
241 ULONG LowestPhysicalPage
;
242 ULONG HighestPhysicalPage
;
243 ULONG AllocationGranularity
;
244 ULONG LowestUserAddress
;
245 ULONG HighestUserAddress
;
246 KAFFINITY ActiveProcessors
;
247 CCHAR NumberProcessors
;
248 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
250 // SystemProcessorInformation (1)
251 // Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
252 typedef struct _SYSTEM_PROCESSOR_INFORMATION
{
253 USHORT ProcessorArchitecture
;
254 USHORT ProcessorLevel
;
255 USHORT ProcessorRevision
;
258 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
260 // SystemPerformanceInfo (2)
261 // Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
262 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
263 LARGE_INTEGER IdleTime
;
264 LARGE_INTEGER ReadTransferCount
;
265 LARGE_INTEGER WriteTransferCount
;
266 LARGE_INTEGER OtherTransferCount
;
267 ULONG ReadOperationCount
;
268 ULONG WriteOperationCount
;
269 ULONG OtherOperationCount
;
270 ULONG AvailablePages
;
271 ULONG TotalCommittedPages
;
272 ULONG TotalCommitLimit
;
273 ULONG PeakCommitment
;
275 ULONG WriteCopyFaults
;
276 ULONG TransitionFaults
;
277 ULONG CacheTransitionFaults
;
278 ULONG DemandZeroFaults
;
283 ULONG PagefilePagesWritten
;
284 ULONG PagefilePageWriteIos
;
285 ULONG MappedFilePagesWritten
;
286 ULONG MappedFilePageWriteIos
;
287 ULONG PagedPoolUsage
;
288 ULONG NonPagedPoolUsage
;
289 ULONG PagedPoolAllocs
;
290 ULONG PagedPoolFrees
;
291 ULONG NonPagedPoolAllocs
;
292 ULONG NonPagedPoolFrees
;
293 ULONG TotalFreeSystemPtes
;
294 ULONG SystemCodePage
;
295 ULONG TotalSystemDriverPages
;
296 ULONG TotalSystemCodePages
;
297 ULONG SmallNonPagedLookasideListAllocateHits
;
298 ULONG SmallPagedLookasideListAllocateHits
;
300 ULONG MmSystemCachePage
;
302 ULONG SystemDriverPage
;
303 ULONG FastReadNoWait
;
305 ULONG FastReadResourceMiss
;
306 ULONG FastReadNotPossible
;
307 ULONG FastMdlReadNoWait
;
308 ULONG FastMdlReadWait
;
309 ULONG FastMdlReadResourceMiss
;
310 ULONG FastMdlReadNotPossible
;
313 ULONG MapDataNoWaitMiss
;
314 ULONG MapDataWaitMiss
;
315 ULONG PinMappedDataCount
;
318 ULONG PinReadNoWaitMiss
;
319 ULONG PinReadWaitMiss
;
320 ULONG CopyReadNoWait
;
322 ULONG CopyReadNoWaitMiss
;
323 ULONG CopyReadWaitMiss
;
326 ULONG MdlReadNoWaitMiss
;
327 ULONG MdlReadWaitMiss
;
330 ULONG LazyWritePages
;
333 ULONG ContextSwitches
;
334 ULONG FirstLevelTbFills
;
335 ULONG SecondLevelTbFills
;
337 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
339 // SystemModuleInformation (11)
340 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
{
347 /* Length of module name not including the path, this
348 field contains valid value only for NTOSKRNL module */
353 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
355 typedef struct _SYSTEM_MODULE_INFORMATION
{
357 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
358 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
360 // SystemHandleInformation (16)
363 struct _SYSTEM_HANDLE_ENTRY
372 } SYSTEM_HANDLE_ENTRY
, *PSYSTEM_HANDLE_ENTRY
;
375 struct _SYSTEM_HANDLE_INFORMATION_NT4
378 SYSTEM_HANDLE_ENTRY Handle
[1];
380 } SYSTEM_HANDLE_INFORMATION_NT4
, *PSYSTEM_HANDLE_INFORMATION_NT4
;
382 typedef struct _SYSTEM_HANDLE_INFORMATION
{
384 UCHAR ObjectTypeNumber
;
388 ACCESS_MASK GrantedAccess
;
389 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
391 // SystemObjectInformation (17)
393 struct _SYSTEM_OBJECT_TYPE_INFORMATION
395 ULONG NextEntryOffset
;
399 ULONG InvalidAttributes
;
400 GENERIC_MAPPING GenericMapping
;
401 ACCESS_MASK ValidAccessMask
;
406 } SYSTEM_OBJECT_TYPE_INFORMATION
, *PSYSTEM_OBJECT_TYPE_INFORMATION
;
409 struct _SYSTEM_OBJECT_INFORMATION
411 ULONG NextEntryOffset
;
413 ULONG CreatorProcessId
;
418 ULONG PagedPoolUsage
;
419 ULONG NonPagedPoolUsage
;
420 ULONG ExclusiveProcessId
;
421 PSECURITY_DESCRIPTOR SecurityDescriptor
;
424 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
426 // SystemPageFileInformation (18)
428 struct _SYSTEM_PAGEFILE_INFORMATION
430 ULONG RelativeOffset
;
431 ULONG CurrentSizePages
;
432 ULONG TotalUsedPages
;
434 UNICODE_STRING PagefileFileName
;
436 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
438 // SystemCacheInformation (21)
440 struct _SYSTEM_CACHE_INFORMATION
444 ULONG PageFaultCount
;
445 ULONG MinimumWorkingSet
;
446 ULONG MaximumWorkingSet
;
447 ULONG TransitionSharedPages
;
448 ULONG TransitionSharedPagesPeak
;
451 } SYSTEM_CACHE_INFORMATION
;
453 // SystemDpcInformation (24)
455 struct _SYSTEM_DPC_INFORMATION
458 ULONG KiMaximumDpcQueueDepth
;
459 ULONG KiMinimumDpcRate
;
460 ULONG KiAdjustDpcThreshold
;
461 ULONG KiIdealDpcRate
;
463 } SYSTEM_DPC_INFORMATION
, *PSYSTEM_DPC_INFORMATION
;
465 // SystemLoadImage (26)
466 typedef struct _SYSTEM_LOAD_IMAGE
468 UNICODE_STRING ModuleName
;
470 PVOID SectionPointer
;
472 PVOID ExportDirectory
;
473 } SYSTEM_LOAD_IMAGE
, *PSYSTEM_LOAD_IMAGE
;
475 // SystemUnloadImage (27)
476 typedef struct _SYSTEM_UNLOAD_IMAGE
479 } SYSTEM_UNLOAD_IMAGE
, *PSYSTEM_UNLOAD_IMAGE
;
481 // SystemTimeAdjustmentInformation (28)
483 struct _SYSTEM_QUERY_TIME_ADJUSTMENT
485 ULONG TimeAdjustment
;
486 ULONG MaximumIncrement
;
487 BOOLEAN TimeSynchronization
;
489 } SYSTEM_QUERY_TIME_ADJUSTMENT
, *PSYSTEM_QUERY_TIME_ADJUSTMENT
;
492 struct _SYSTEM_SET_TIME_ADJUSTMENT
494 ULONG TimeAdjustment
;
495 BOOLEAN TimeSynchronization
;
497 } SYSTEM_SET_TIME_ADJUSTMENT
, *PSYSTEM_SET_TIME_ADJUSTMENT
;
501 typedef enum _ATOM_INFORMATION_CLASS
503 AtomBasicInformation
= 0,
504 AtomTableInformation
= 1,
505 } ATOM_INFORMATION_CLASS
;
507 typedef struct _ATOM_BASIC_INFORMATION
513 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
515 // SystemLoadAndCallImage(38)
516 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE
518 UNICODE_STRING ModuleName
;
519 } SYSTEM_LOAD_AND_CALL_IMAGE
, *PSYSTEM_LOAD_AND_CALL_IMAGE
;
521 // SystemTimeZoneInformation (44)
523 struct _SYSTEM_TIME_ZONE_INFORMATION
526 WCHAR StandardName
[32];
529 WCHAR DaylightName
[32];
533 } SYSTEM_TIME_ZONE_INFORMATION
, * PSYSTEM_TIME_ZONE_INFORMATION
;
535 // SystemLookasideInformation (45)
537 struct _SYSTEM_LOOKASIDE_INFORMATION
541 ULONG TotalAllocates
;
542 ULONG AllocatesMisses
;
549 } SYSTEM_LOOKASIDE_INFORMATION
, * PSYSTEM_LOOKASIDE_INFORMATION
;
551 // SystemSetTimeSlipEvent (46)
553 struct _SYSTEM_SET_TIME_SLIP_EVENT
555 HANDLE TimeSlipEvent
; /* IN */
557 } SYSTEM_SET_TIME_SLIP_EVENT
, * PSYSTEM_SET_TIME_SLIP_EVENT
;
559 // SystemCreateSession (47)
560 // (available only on TSE/NT5+)
562 struct _SYSTEM_CREATE_SESSION
564 ULONG SessionId
; /* OUT */
566 } SYSTEM_CREATE_SESSION
, * PSYSTEM_CREATE_SESSION
;
568 // SystemDeleteSession (48)
569 // (available only on TSE/NT5+)
571 struct _SYSTEM_DELETE_SESSION
573 ULONG SessionId
; /* IN */
575 } SYSTEM_DELETE_SESSION
, * PSYSTEM_DELETE_SESSION
;
577 // SystemRangeStartInformation (50)
579 struct _SYSTEM_RANGE_START_INFORMATION
581 PVOID SystemRangeStart
;
583 } SYSTEM_RANGE_START_INFORMATION
, * PSYSTEM_RANGE_START_INFORMATION
;
585 // SystemSessionProcessesInformation (53)
586 // (available only on TSE/NT5+)
588 struct _SYSTEM_SESSION_PROCESSES_INFORMATION
592 PVOID Buffer
; /* same format as in SystemProcessInformation */
594 } SYSTEM_SESSION_PROCESSES_INFORMATION
, * PSYSTEM_SESSION_PROCESSES_INFORMATION
;
596 // memory information
598 typedef enum _MEMORY_INFORMATION_CLASS
{
599 MemoryBasicInformation
,
600 MemoryWorkingSetList
,
601 MemorySectionName
//,
602 //MemoryBasicVlmInformation //???
603 } MEMORY_INFORMATION_CLASS
;
605 typedef struct _MEMORY_BASIC_INFORMATION
{ // Information Class 0
607 PVOID AllocationBase
;
608 ULONG AllocationProtect
;
613 } MEMORY_BASIC_INFORMATION
, *PMEMORY_BASIC_INFORMATION
;
615 typedef struct _MEMORY_WORKING_SET_LIST
{ // Information Class 1
617 ULONG WorkingSetList
[1];
618 } MEMORY_WORKING_SET_LIST
, *PMEMORY_WORKING_SET_LIST
;
620 // Information Class 2
621 /*#define _MEMORY_SECTION_NAME_STATIC(__bufsize__) \
623 UNICODE_STRING SectionFileName; \
624 WCHAR NameBuffer[(__bufsize__)]; \
629 UNICODE_STRING SectionFileName
;
630 WCHAR NameBuffer
[ANYSIZE_ARRAY
];
631 } MEMORY_SECTION_NAME
, *PMEMORY_SECTION_NAME
;
633 // Information class 0
634 typedef struct _PROCESS_BASIC_INFORMATION
638 KAFFINITY AffinityMask
;
639 KPRIORITY BasePriority
;
640 ULONG UniqueProcessId
;
641 ULONG InheritedFromUniqueProcessId
;
642 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
644 // Information class 1
645 typedef struct _QUOTA_LIMITS
647 ULONG PagedPoolLimit
;
648 ULONG NonPagedPoolLimit
;
649 SIZE_T MinimumWorkingSetSize
;
650 SIZE_T MaximumWorkingSetSize
;
653 } QUOTA_LIMITS
, *PQUOTA_LIMITS
;
655 // Information class 2
656 typedef struct _IO_COUNTERS
658 LARGE_INTEGER ReadOperationCount
;
659 LARGE_INTEGER WriteOperationCount
;
660 LARGE_INTEGER OtherOperationCount
;
661 LARGE_INTEGER ReadTransferCount
;
662 LARGE_INTEGER WriteTransferCount
;
663 LARGE_INTEGER OtherTransferCount
;
664 } IO_COUNTERS
, *PIO_COUNTERS
;
666 // Information class 3
667 typedef struct _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
;
680 } VM_COUNTERS
, *PVM_COUNTERS
;
682 // Information class 4
683 typedef struct _KERNEL_USER_TIMES
689 } KERNEL_USER_TIMES
, *PKERNEL_USER_TIMES
;
691 // Information class 9
692 typedef struct _PROCESS_ACCESS_TOKEN
696 } PROCESS_ACCESS_TOKEN
, *PPROCESS_ACCESS_TOKEN
;
698 // Information class 14
699 typedef struct _POOLED_USAGE_AND_LIMITS_
701 ULONG PeakPagedPoolUsage
;
702 ULONG PagedPoolUsage
;
703 ULONG PagedPoolLimit
;
704 ULONG PeakNonPagedPoolUsage
;
705 ULONG NonPagedPoolUsage
;
706 ULONG NonPagedPoolLimit
;
707 ULONG PeakPagefileUsage
;
710 } POOLED_USAGE_AND_LIMITS
, *PPOOLED_USAGE_AND_LIMITS
;
712 // Information class 15
713 typedef struct _PROCESS_WS_WATCH_INFORMATION
717 } PROCESS_WS_WATCH_INFORMATION
, *PPROCESS_WS_WATCH_INFORMATION
;
719 // Information class 18
720 typedef struct _PROCESS_PRIORITY_CLASS
724 } PROCESS_PRIORITY_CLASS
, *PPROCESS_PRIORITY_CLASS
;
726 // Information class 23
727 typedef struct _PROCESS_DEVICEMAP_INFORMATION
731 HANDLE DirectoryHandle
;
738 } PROCESS_DEVICEMAP_INFORMATION
, *pPROCESS_DEVICEMAP_INFORMATION
;
740 // Information class 24
741 typedef struct _PROCESS_SESSION_INFORMATION
744 } PROCESS_SESSION_INFORMATION
, *PPROCESS_SESSION_INFORMATION
;
746 // thread information
748 // incompatible with MS NT
750 typedef struct _THREAD_BASIC_INFORMATION
753 PVOID TebBaseAddress
; // PNT_TIB (GN)
755 KAFFINITY AffinityMask
;
757 KPRIORITY BasePriority
;
758 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
763 typedef struct _FILE_BASIC_INFORMATION
765 LARGE_INTEGER CreationTime
;
766 LARGE_INTEGER LastAccessTime
;
767 LARGE_INTEGER LastWriteTime
;
768 LARGE_INTEGER ChangeTime
;
769 ULONG FileAttributes
;
770 } FILE_BASIC_INFORMATION
, *PFILE_BASIC_INFORMATION
;
772 typedef struct _FILE_STANDARD_INFORMATION
774 LARGE_INTEGER AllocationSize
;
775 LARGE_INTEGER EndOfFile
;
777 BOOLEAN DeletePending
;
779 } FILE_STANDARD_INFORMATION
, *PFILE_STANDARD_INFORMATION
;
781 typedef struct _FILE_POSITION_INFORMATION
783 LARGE_INTEGER CurrentByteOffset
;
784 } FILE_POSITION_INFORMATION
, *PFILE_POSITION_INFORMATION
;
786 typedef struct _FILE_ALIGNMENT_INFORMATION
788 ULONG AlignmentRequirement
;
789 } FILE_ALIGNMENT_INFORMATION
, *PFILE_ALIGNMENT_INFORMATION
;
791 typedef struct _FILE_DISPOSITION_INFORMATION
793 BOOLEAN DoDeleteFile
;
794 } FILE_DISPOSITION_INFORMATION
, *PFILE_DISPOSITION_INFORMATION
;
796 typedef struct _FILE_END_OF_FILE_INFORMATION
798 LARGE_INTEGER EndOfFile
;
799 } FILE_END_OF_FILE_INFORMATION
, *PFILE_END_OF_FILE_INFORMATION
;
801 typedef struct _FILE_NETWORK_OPEN_INFORMATION
807 LARGE_INTEGER AllocationSize
;
808 LARGE_INTEGER EndOfFile
;
809 ULONG FileAttributes
;
810 } FILE_NETWORK_OPEN_INFORMATION
, *PFILE_NETWORK_OPEN_INFORMATION
;
812 typedef struct _FILE_FULL_EA_INFORMATION
814 ULONG NextEntryOffset
;
817 USHORT EaValueLength
;
819 } FILE_FULL_EA_INFORMATION
, *PFILE_FULL_EA_INFORMATION
;
822 typedef struct _FILE_EA_INFORMATION
{
824 } FILE_EA_INFORMATION
, *PFILE_EA_INFORMATION
;
827 typedef struct _FILE_GET_EA_INFORMATION
{
828 ULONG NextEntryOffset
;
831 } FILE_GET_EA_INFORMATION
, *PFILE_GET_EA_INFORMATION
;
833 typedef struct _FILE_STREAM_INFORMATION
{
834 ULONG NextEntryOffset
;
835 ULONG StreamNameLength
;
836 LARGE_INTEGER StreamSize
;
837 LARGE_INTEGER StreamAllocationSize
;
839 } FILE_STREAM_INFORMATION
, *PFILE_STREAM_INFORMATION
;
841 typedef struct _FILE_ALLOCATION_INFORMATION
{
842 LARGE_INTEGER AllocationSize
;
843 } FILE_ALLOCATION_INFORMATION
, *PFILE_ALLOCATION_INFORMATION
;
845 typedef struct _FILE_NAME_INFORMATION
{
846 ULONG FileNameLength
;
848 } FILE_NAME_INFORMATION
, *PFILE_NAME_INFORMATION
;
850 typedef struct _FILE_NAMES_INFORMATION
852 ULONG NextEntryOffset
;
854 ULONG FileNameLength
;
856 } FILE_NAMES_INFORMATION
, *PFILE_NAMES_INFORMATION
;
859 typedef struct _FILE_RENAME_INFORMATION
{
862 ULONG FileNameLength
;
864 } FILE_RENAME_INFORMATION
, *PFILE_RENAME_INFORMATION
;
867 typedef struct _FILE_INTERNAL_INFORMATION
{
868 LARGE_INTEGER IndexNumber
;
869 } FILE_INTERNAL_INFORMATION
, *PFILE_INTERNAL_INFORMATION
;
871 typedef struct _FILE_ACCESS_INFORMATION
{
872 ACCESS_MASK AccessFlags
;
873 } FILE_ACCESS_INFORMATION
, *PFILE_ACCESS_INFORMATION
;
876 typedef struct _FILE_MODE_INFORMATION
{
878 } FILE_MODE_INFORMATION
, *PFILE_MODE_INFORMATION
;
881 typedef struct _FILE_PIPE_INFORMATION
{
883 ULONG CompletionMode
;
884 } FILE_PIPE_INFORMATION
, *PFILE_PIPE_INFORMATION
;
886 typedef struct _FILE_PIPE_LOCAL_INFORMATION
{
888 ULONG NamedPipeConfiguration
;
889 ULONG MaximumInstances
;
890 ULONG CurrentInstances
;
892 ULONG ReadDataAvailable
;
894 ULONG WriteQuotaAvailable
;
895 ULONG NamedPipeState
;
897 } FILE_PIPE_LOCAL_INFORMATION
, *PFILE_PIPE_LOCAL_INFORMATION
;
899 typedef struct _FILE_PIPE_REMOTE_INFORMATION
{
900 LARGE_INTEGER CollectDataTime
;
901 ULONG MaximumCollectionCount
;
902 } FILE_PIPE_REMOTE_INFORMATION
, *PFILE_PIPE_REMOTE_INFORMATION
;
904 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
{
905 ULONG MaxMessageSize
;
906 ULONG Unknown
; /* ?? */
909 LARGE_INTEGER Timeout
;
910 } FILE_MAILSLOT_QUERY_INFORMATION
, *PFILE_MAILSLOT_QUERY_INFORMATION
;
912 typedef struct _FILE_MAILSLOT_SET_INFORMATION
{
913 LARGE_INTEGER Timeout
;
914 } FILE_MAILSLOT_SET_INFORMATION
, *PFILE_MAILSLOT_SET_INFORMATION
;
916 typedef struct _FILE_COMPRESSION_INFORMATION
{
917 LARGE_INTEGER CompressedFileSize
;
918 USHORT CompressionFormat
;
919 UCHAR CompressionUnitShift
;
923 } FILE_COMPRESSION_INFORMATION
, *PFILE_COMPRESSION_INFORMATION
;
925 typedef struct _FILE_COMPLETION_INFORMATION
{ // Information Class 30
926 HANDLE IoCompletionHandle
;
928 } FILE_COMPLETION_INFORMATION
, *PFILE_COMPLETION_INFORMATION
;
930 typedef struct _FILE_ALL_INFORMATION
{
931 FILE_BASIC_INFORMATION BasicInformation
;
932 FILE_STANDARD_INFORMATION StandardInformation
;
933 FILE_INTERNAL_INFORMATION InternalInformation
;
934 FILE_EA_INFORMATION EaInformation
;
935 FILE_ACCESS_INFORMATION AccessInformation
;
936 FILE_POSITION_INFORMATION PositionInformation
;
937 FILE_MODE_INFORMATION ModeInformation
;
938 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
939 FILE_NAME_INFORMATION NameInformation
;
940 } FILE_ALL_INFORMATION
, *PFILE_ALL_INFORMATION
;
943 // file system information structures
945 typedef struct _FILE_FS_DEVICE_INFORMATION
{
946 DEVICE_TYPE DeviceType
;
947 ULONG Characteristics
;
948 } FILE_FS_DEVICE_INFORMATION
, *PFILE_FS_DEVICE_INFORMATION
;
951 typedef struct _FILE_FS_VOLUME_INFORMATION
{
952 TIME VolumeCreationTime
;
953 ULONG VolumeSerialNumber
;
954 ULONG VolumeLabelLength
;
955 BOOLEAN SupportsObjects
;
956 WCHAR VolumeLabel
[0];
957 } FILE_FS_VOLUME_INFORMATION
, *PFILE_FS_VOLUME_INFORMATION
;
959 typedef struct _FILE_FS_SIZE_INFORMATION
{
960 LARGE_INTEGER TotalAllocationUnits
;
961 LARGE_INTEGER AvailableAllocationUnits
;
962 ULONG SectorsPerAllocationUnit
;
963 ULONG BytesPerSector
;
964 } FILE_FS_SIZE_INFORMATION
, *PFILE_FS_SIZE_INFORMATION
;
966 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
{
967 ULONG FileSystemAttributes
;
968 LONG MaximumComponentNameLength
;
969 ULONG FileSystemNameLength
;
970 WCHAR FileSystemName
[0];
971 } FILE_FS_ATTRIBUTE_INFORMATION
, *PFILE_FS_ATTRIBUTE_INFORMATION
;
974 FileSystemAttributes is one of the following values:
976 FILE_CASE_SENSITIVE_SEARCH 0x00000001
977 FILE_CASE_PRESERVED_NAMES 0x00000002
978 FILE_UNICODE_ON_DISK 0x00000004
979 FILE_PERSISTENT_ACLS 0x00000008
980 FILE_FILE_COMPRESSION 0x00000010
981 FILE_VOLUME_QUOTAS 0x00000020
982 FILE_VOLUME_IS_COMPRESSED 0x00008000
984 typedef struct _FILE_FS_LABEL_INFORMATION
{
985 ULONG VolumeLabelLength
;
986 WCHAR VolumeLabel
[0];
987 } FILE_FS_LABEL_INFORMATION
, *PFILE_FS_LABEL_INFORMATION
;
990 typedef struct _FILE_DIRECTORY_INFORMATION
{
991 ULONG NextEntryOffset
;
997 LARGE_INTEGER EndOfFile
;
998 LARGE_INTEGER AllocationSize
;
999 ULONG FileAttributes
;
1000 ULONG FileNameLength
;
1002 } FILE_DIRECTORY_INFORMATION
, *PFILE_DIRECTORY_INFORMATION
;
1004 typedef struct _FILE_FULL_DIRECTORY_INFORMATION
{
1005 ULONG NextEntryOffset
;
1008 TIME LastAccessTime
;
1011 LARGE_INTEGER EndOfFile
;
1012 LARGE_INTEGER AllocationSize
;
1013 ULONG FileAttributes
;
1014 ULONG FileNameLength
;
1016 WCHAR FileName
[0]; // variable size
1017 } FILE_FULL_DIRECTORY_INFORMATION
, *PFILE_FULL_DIRECTORY_INFORMATION
,
1018 FILE_FULL_DIR_INFORMATION
, *PFILE_FULL_DIR_INFORMATION
;
1021 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION
{
1022 ULONG NextEntryOffset
;
1025 TIME LastAccessTime
;
1028 LARGE_INTEGER EndOfFile
;
1029 LARGE_INTEGER AllocationSize
;
1030 ULONG FileAttributes
;
1031 ULONG FileNameLength
;
1033 CHAR ShortNameLength
;
1034 WCHAR ShortName
[12]; // 8.3 name
1036 } FILE_BOTH_DIRECTORY_INFORMATION
, *PFILE_BOTH_DIRECTORY_INFORMATION
,
1037 FILE_BOTH_DIR_INFORMATION
, *PFILE_BOTH_DIR_INFORMATION
;
1040 NotifyFilter / CompletionFilter:
1042 FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
1043 FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
1044 FILE_NOTIFY_CHANGE_NAME 0x00000003
1045 FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
1046 FILE_NOTIFY_CHANGE_SIZE 0x00000008
1047 FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
1048 FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
1049 FILE_NOTIFY_CHANGE_CREATION 0x00000040
1050 FILE_NOTIFY_CHANGE_EA 0x00000080
1051 FILE_NOTIFY_CHANGE_SECURITY 0x00000100
1052 FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
1053 FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
1054 FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
1057 typedef struct _FILE_NOTIFY_INFORMATION
{
1059 ULONG FileNameLength
;
1061 } FILE_NOTIFY_INFORMATION
;
1063 #define FSCTL_GET_VOLUME_BITMAP 0x9006F
1064 #define FSCTL_GET_RETRIEVAL_POINTERS 0x90073
1065 #define FSCTL_MOVE_FILE 0x90074
1067 typedef struct _MAPPING_PAIR
1071 } MAPPING_PAIR
, *PMAPPING_PAIR
;
1073 typedef struct _GET_RETRIEVAL_DESCRIPTOR
1075 ULONG NumberOfPairs
;
1077 MAPPING_PAIR Pair
[0]; // variable size
1078 } GET_RETRIEVAL_DESCRIPTOR
, *PGET_RETRIEVAL_DESCRIPTOR
;
1080 typedef struct _MOVEFILE_DESCRIPTOR
1084 LARGE_INTEGER StartVcn
;
1085 LARGE_INTEGER TargetLcn
;
1088 } MOVEFILE_DESCRIPTOR
, *PMOVEFILE_DESCRIPTOR
;
1090 typedef struct _SECTION_BASIC_INFORMATION
1095 } SECTION_BASIC_INFORMATION
, *PSECTION_BASIC_INFORMATION
;
1097 typedef enum _SECTION_INFORMATION_CLASS
1099 SectionBasicInformation
,
1100 SectionImageInformation
,
1101 } SECTION_INFORMATION_CLASS
;
1105 typedef enum SHUTDOWN_ACTION_TAG
{
1111 typedef enum _IO_COMPLETION_INFORMATION_CLASS
{
1112 IoCompletionBasicInformation
1113 } IO_COMPLETION_INFORMATION_CLASS
;
1115 typedef struct _IO_COMPLETION_BASIC_INFORMATION
{
1117 } IO_COMPLETION_BASIC_INFORMATION
, *PIO_COMPLETION_BASIC_INFORMATION
;
1119 #else /* __USE_W32API */
1121 #define DebugDbgLoadSymbols ((DEBUG_CONTROL_CODE)0xffffffff)
1123 #endif /* __USE_W32API */
1126 #include <ddk/ntddk.h>
1127 #endif /* __USE_W32API */
1128 #ifndef NtCurrentProcess
1129 #define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
1130 #endif /* NtCurrentProcess */
1131 #ifndef NtCurrentThread
1132 #define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
1133 #endif /* NtCurrentThread */
1137 extern ULONG EXPORTED NtBuildNumber
;
1139 extern ULONG IMPORTED NtBuildNumber
;
1142 /* Microsoft-style declarations */
1144 extern EXPORTED ULONG NtBuildNumber
;
1146 extern IMPORTED ULONG NtBuildNumber
;
1148 #endif /* __GNUC__ */
1151 // event access mask
1153 #define EVENT_READ_ACCESS 1
1154 #define EVENT_WRITE_ACCESS 2
1156 //process query / set information class
1158 #define ProcessBasicInformation 0
1159 #define ProcessQuotaLimits 1
1160 #define ProcessIoCounters 2
1161 #define ProcessVmCounters 3
1162 #define ProcessTimes 4
1163 #define ProcessBasePriority 5
1164 #define ProcessRaisePriority 6
1165 #define ProcessDebugPort 7
1166 #define ProcessExceptionPort 8
1167 #define ProcessAccessToken 9
1168 #define ProcessLdtInformation 10
1169 #define ProcessLdtSize 11
1170 #define ProcessDefaultHardErrorMode 12
1171 #define ProcessIoPortHandlers 13
1172 #define ProcessPooledUsageAndLimits 14
1173 #define ProcessWorkingSetWatch 15
1174 #define ProcessUserModeIOPL 16
1175 #define ProcessEnableAlignmentFaultFixup 17
1176 #define ProcessPriorityClass 18
1177 #define ProcessWx86Information 19
1178 #define ProcessHandleCount 20
1179 #define ProcessAffinityMask 21
1180 #define ProcessPriorityBoost 22
1181 #define ProcessDeviceMap 23
1182 #define ProcessSessionInformation 24
1183 #define ProcessForegroundInformation 25
1184 #define ProcessWow64Information 26
1185 /* ReactOS private. */
1186 #define ProcessImageFileName 27
1187 #define ProcessDesktop 28
1188 #define MaxProcessInfoClass 29
1191 * thread query / set information class
1193 #define ThreadBasicInformation 0
1194 #define ThreadTimes 1
1195 #define ThreadPriority 2
1196 #define ThreadBasePriority 3
1197 #define ThreadAffinityMask 4
1198 #define ThreadImpersonationToken 5
1199 #define ThreadDescriptorTableEntry 6
1200 #define ThreadEnableAlignmentFaultFixup 7
1201 #define ThreadEventPair 8
1202 #define ThreadQuerySetWin32StartAddress 9
1203 #define ThreadZeroTlsCell 10
1204 #define ThreadPerformanceCount 11
1205 #define ThreadAmILastThread 12
1206 #define ThreadIdealProcessor 13
1207 #define ThreadPriorityBoost 14
1208 #define ThreadSetTlsArrayAddress 15
1209 #define ThreadIsIoPending 16
1210 #define ThreadHideFromDebugger 17
1211 #define MaxThreadInfoClass 17
1214 typedef struct _ATOM_TABLE_INFORMATION
1216 ULONG NumberOfAtoms
;
1218 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
1221 // mutant information
1223 typedef enum _MUTANT_INFORMATION_CLASS
1225 MutantBasicInformation
= 0
1226 } MUTANT_INFORMATION_CLASS
;
1228 typedef struct _MUTANT_BASIC_INFORMATION
1233 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
1236 // SystemTimeOfDayInformation (3)
1238 struct _SYSTEM_TIMEOFDAY_INFORMATION
1240 LARGE_INTEGER BootTime
;
1241 LARGE_INTEGER CurrentTime
;
1242 LARGE_INTEGER TimeZoneBias
;
1245 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
1247 // SystemPathInformation (4)
1250 struct _SYSTEM_PATH_INFORMATION
1254 } SYSTEM_PATH_INFORMATION
, * PSYSTEM_PATH_INFORMATION
;
1256 // SystemProcessInformation (5)
1258 #ifndef __USE_W32API
1260 typedef struct _SYSTEM_THREADS
{
1261 LARGE_INTEGER KernelTime
;
1262 LARGE_INTEGER UserTime
;
1263 LARGE_INTEGER CreateTime
;
1268 KPRIORITY BasePriority
;
1269 ULONG ContextSwitchCount
;
1271 KWAIT_REASON WaitReason
;
1272 } SYSTEM_THREADS
, *PSYSTEM_THREADS
;
1274 #endif /* __USE_W32API */
1276 typedef struct _SYSTEM_PROCESSES_NT4
1278 SIZE_T NextEntryDelta
;
1284 UNICODE_STRING ProcessName
;
1285 KPRIORITY BasePriority
;
1287 ULONG InheritedFromProcessId
;
1290 VM_COUNTERS VmCounters
;
1291 SYSTEM_THREADS Threads
[ANYSIZE_ARRAY
];
1292 } SYSTEM_PROCESSES_NT4
, *PSYSTEM_PROCESSES_NT4
;
1294 typedef struct _SYSTEM_PROCESSES_NT5
1296 SIZE_T NextEntryDelta
;
1302 UNICODE_STRING ProcessName
;
1303 KPRIORITY BasePriority
;
1305 ULONG InheritedFromProcessId
;
1308 VM_COUNTERS VmCounters
;
1309 IO_COUNTERS IoCounters
;
1310 SYSTEM_THREADS Threads
[ANYSIZE_ARRAY
];
1311 } SYSTEM_PROCESSES_NT5
, *PSYSTEM_PROCESSES_NT5
;
1313 #ifndef __USE_W32API
1315 /* Not sure. What version are we emulating? */
1316 typedef SYSTEM_PROCESSES_NT5 SYSTEM_PROCESSES
, *PSYSTEM_PROCESSES
;
1318 #endif /* __USE_W32API */
1320 // SystemCallCountInformation (6)
1322 struct _SYSTEM_SDT_INFORMATION
1325 ULONG NumberOfSystemServiceTables
;
1326 ULONG NumberOfServices
[1];
1327 ULONG ServiceCounters
[1];
1329 } SYSTEM_SDT_INFORMATION
, *PSYSTEM_SDT_INFORMATION
;
1331 // SystemDeviceInformation (7)
1333 struct _SYSTEM_DEVICE_INFORMATION
1335 ULONG NumberOfDisks
;
1336 ULONG NumberOfFloppies
;
1337 ULONG NumberOfCdRoms
;
1338 ULONG NumberOfTapes
;
1339 ULONG NumberOfSerialPorts
;
1340 ULONG NumberOfParallelPorts
;
1341 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
1343 // SystemProcessorPerformanceInformation (8)
1344 // (one per processor in the system)
1346 struct _SYSTEM_PROCESSORTIME_INFO
1348 TIME TotalProcessorRunTime
;
1349 TIME TotalProcessorTime
;
1350 TIME TotalProcessorUserTime
;
1352 TIME TotalInterruptTime
;
1353 ULONG TotalInterrupts
;
1356 } SYSTEM_PROCESSORTIME_INFO
, *PSYSTEM_PROCESSORTIME_INFO
;
1358 // SystemFlagsInformation (9)
1360 struct _SYSTEM_FLAGS_INFORMATION
1364 } SYSTEM_FLAGS_INFORMATION
, * PSYSTEM_FLAGS_INFORMATION
;
1366 #define FLG_STOP_ON_EXCEPTION 0x00000001
1367 #define FLG_SHOW_LDR_SNAPS 0x00000002
1368 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
1369 #define FLG_STOP_ON_HANG_GUI 0x00000008
1370 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
1371 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
1372 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
1373 #define FLG_HEAP_VALIDATE_ALL 0x00000080
1374 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
1375 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
1376 #define FLG_POOL_ENABLE_TAGGING 0x00000400
1377 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
1378 #define FLG_USER_STACK_TRACE_DB 0x00001000
1379 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
1380 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
1381 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
1382 #define FLG_IGNORE_DEBUG_PRIV 0x00010000
1383 #define FLG_ENABLE_CSRDEBUG 0x00020000
1384 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
1385 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
1386 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
1387 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
1388 #define FLG_ENABLE_CLOSE_EXCEPTION 0x00400000
1389 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
1390 #define FLG_UNKNOWN_01000000 0x01000000
1391 #define FLG_UNKNOWN_02000000 0x02000000
1392 #define FLG_UNKNOWN_04000000 0x04000000
1393 #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000
1394 #define FLG_UNKNOWN_10000000 0x10000000
1395 #define FLG_UNKNOWN_20000000 0x20000000
1396 #define FLG_UNKNOWN_40000000 0x40000000
1397 #define FLG_UNKNOWN_80000000 0x80000000
1399 // SystemCallTimeInformation (10)
1402 // SystemLocksInformation (12)
1404 struct _SYSTEM_RESOURCE_LOCK_ENTRY
1406 ULONG ResourceAddress
;
1410 ULONG ContentionCount
;
1412 ULONG NumberOfSharedWaiters
;
1413 ULONG NumberOfExclusiveWaiters
;
1415 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
1418 struct _SYSTEM_RESOURCE_LOCK_INFO
1421 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
1423 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
1425 // SystemInformation13 (13)
1428 // SystemInformation14 (14)
1431 // SystemInformation15 (15)
1434 // SystemInstructionEmulationInfo (19)
1436 struct _SYSTEM_VDM_INFORMATION
1438 ULONG VdmSegmentNotPresentCount
;
1440 ULONG VdmESPREFIXCount
;
1441 ULONG VdmCSPREFIXCount
;
1442 ULONG VdmSSPREFIXCount
;
1443 ULONG VdmDSPREFIXCount
;
1444 ULONG VdmFSPREFIXCount
;
1445 ULONG VdmGSPREFIXCount
;
1446 ULONG VdmOPER32PREFIXCount
;
1447 ULONG VdmADDR32PREFIXCount
;
1449 ULONG VdmINSWV86Count
;
1450 ULONG VdmOUTSBCount
;
1451 ULONG VdmOUTSWCount
;
1452 ULONG VdmPUSHFCount
;
1454 ULONG VdmINTNNCount
;
1457 ULONG VdmINBIMMCount
;
1458 ULONG VdmINWIMMCount
;
1459 ULONG VdmOUTBIMMCount
;
1460 ULONG VdmOUTWIMMCount
;
1465 ULONG VdmLOCKPREFIXCount
;
1466 ULONG VdmREPNEPREFIXCount
;
1467 ULONG VdmREPPREFIXCount
;
1473 } SYSTEM_VDM_INFORMATION
, *PSYSTEM_VDM_INFORMATION
;
1475 // SystemInformation20 (20)
1478 // SystemPoolTagInformation (22)
1479 // found by Klaus P. Gerlicher
1480 // (implemented only in checked builds)
1482 struct _POOL_TAG_STATS
1484 ULONG AllocationCount
;
1491 struct _SYSTEM_POOL_TAG_ENTRY
1494 POOL_TAG_STATS Paged
;
1495 POOL_TAG_STATS NonPaged
;
1497 } SYSTEM_POOL_TAG_ENTRY
, * PSYSTEM_POOL_TAG_ENTRY
;
1500 struct _SYSTEM_POOL_TAG_INFO
1503 SYSTEM_POOL_TAG_ENTRY PoolEntry
[1];
1505 } SYSTEM_POOL_TAG_INFO
, *PSYSTEM_POOL_TAG_INFO
;
1507 // SystemProcessorScheduleInfo (23)
1509 struct _SYSTEM_PROCESSOR_SCHEDULE_INFO
1511 ULONG nContextSwitches
;
1514 ULONG TimerResolution
;
1518 } SYSTEM_PROCESSOR_SCHEDULE_INFO
, *PSYSTEM_PROCESSOR_SCHEDULE_INFO
;
1520 // SystemInformation25 (25)
1523 // SystemProcessorFaultCountInfo (33)
1525 struct _SYSTEM_PROCESSOR_FAULT_INFO
1527 ULONG nAlignmentFixup
;
1528 ULONG nExceptionDispatches
;
1529 ULONG nFloatingEmulation
;
1532 } SYSTEM_PROCESSOR_FAULT_INFO
, *PSYSTEM_PROCESSOR_FAULT_INFO
;
1534 // SystemCrashDumpStateInfo (34)
1537 // SystemDebuggerInformation (35)
1539 struct _SYSTEM_DEBUGGER_INFO
1541 BOOLEAN KdDebuggerEnabled
;
1542 BOOLEAN KdDebuggerPresent
;
1544 } SYSTEM_DEBUGGER_INFO
, *PSYSTEM_DEBUGGER_INFO
;
1546 // SystemInformation36 (36)
1549 // SystemQuotaInformation (37)
1551 struct _SYSTEM_QUOTA_INFORMATION
1553 ULONG CmpGlobalQuota
;
1554 ULONG CmpGlobalQuotaUsed
;
1555 ULONG MmSizeofPagedPoolInBytes
;
1557 } SYSTEM_QUOTA_INFORMATION
, *PSYSTEM_QUOTA_INFORMATION
;
1562 // SystemVerifierInformation (51)
1565 // SystemAddVerifier (52)
1573 // number of wait objects
1575 #define THREAD_WAIT_OBJECTS 3
1576 //#define MAXIMUM_WAIT_OBJECTS 64
1578 // object type access rights
1580 #define OBJECT_TYPE_CREATE 0x0001
1581 #define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1583 // directory access rights
1585 #ifndef __USE_W32API
1586 #define DIRECTORY_QUERY 0x0001
1587 #define DIRECTORY_TRAVERSE 0x0002
1588 #define DIRECTORY_CREATE_OBJECT 0x0004
1589 #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
1592 #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
1594 // symbolic link access rights
1596 #define SYMBOLIC_LINK_QUERY 0x0001
1597 #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1600 /* object information class */
1602 #ifndef __USE_W32API
1604 typedef enum _OBJECT_INFORMATION_CLASS
1606 ObjectBasicInformation
,
1607 ObjectNameInformation
,
1608 ObjectTypeInformation
,
1609 ObjectAllTypesInformation
,
1610 ObjectHandleInformation
1611 } OBJECT_INFORMATION_CLASS
;
1614 // directory information
1616 typedef struct _DIRECTORY_BASIC_INFORMATION
1618 UNICODE_STRING ObjectName
;
1619 UNICODE_STRING ObjectTypeName
; // Directory, Device ...
1620 } DIRECTORY_BASIC_INFORMATION
, *PDIRECTORY_BASIC_INFORMATION
;
1623 // power information levels
1624 typedef enum _POWER_INFORMATION_LEVEL
{
1625 SystemPowerPolicyAc
,
1626 SystemPowerPolicyDc
,
1627 VerifySystemPolicyAc
,
1628 VerifySystemPolicyDc
,
1629 SystemPowerCapabilities
,
1631 SystemPowerStateHandler
,
1632 ProcessorStateHandler
,
1633 SystemPowerPolicyCurrent
,
1634 AdministratorPowerPolicy
,
1635 SystemReserveHiberFile
,
1636 ProcessorInformation
,
1637 SystemPowerInformationData
1638 } POWER_INFORMATION_LEVEL
;
1640 #endif /* __USE_W32API */
1643 Action is one of the following values:
1645 FILE_ACTION_ADDED 0x00000001
1646 FILE_ACTION_REMOVED 0x00000002
1647 FILE_ACTION_MODIFIED 0x00000003
1648 FILE_ACTION_RENAMED_OLD_NAME 0x00000004
1649 FILE_ACTION_RENAMED_NEW_NAME 0x00000005
1650 FILE_ACTION_ADDED_STREAM 0x00000006
1651 FILE_ACTION_REMOVED_STREAM 0x00000007
1652 FILE_ACTION_MODIFIED_STREAM 0x00000008
1657 // File System Control commands ( related to defragging )
1659 #define FSCTL_READ_MFT_RECORD 0x90068 // NTFS only
1661 typedef struct _BITMAP_DESCRIPTOR
1664 ULONGLONG ClustersToEndOfVol
;
1665 BYTE Map
[0]; // variable size
1666 } BITMAP_DESCRIPTOR
, *PBITMAP_DESCRIPTOR
;
1669 //typedef enum _TIMER_TYPE
1671 // NotificationTimer,
1672 // SynchronizationTimer
1675 typedef struct _TIMER_BASIC_INFORMATION
1677 LARGE_INTEGER TimeRemaining
;
1678 BOOLEAN SignalState
;
1679 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
1681 typedef enum _TIMER_INFORMATION_CLASS
1683 TimerBasicInformation
1684 } TIMER_INFORMATION_CLASS
;
1686 #ifndef __USE_W32API
1690 UNUSED_MSG_TYPE
= 0x0, /* ReactOS */
1691 LPC_NEW_MESSAGE
= 0x0, /* NT */
1695 LPC_LOST_REPLY
= 0x4,
1696 LPC_PORT_CLOSED
= 0x5,
1697 LPC_CLIENT_DIED
= 0x6,
1698 LPC_EXCEPTION
= 0x7,
1699 LPC_DEBUG_EVENT
= 0x8,
1700 LPC_ERROR_EVENT
= 0x9,
1701 LPC_CONNECTION_REQUEST
= 0xa,
1702 LPC_CONNECTION_REFUSED
= 0xb
1704 } LPC_TYPE
, *PLPC_TYPE
;
1706 typedef struct _LPC_SECTION_WRITE
1709 HANDLE SectionHandle
;
1710 ULONG SectionOffset
;
1713 PVOID TargetViewBase
;
1714 } LPC_SECTION_WRITE
, *PLPC_SECTION_WRITE
;
1716 typedef struct _LPC_SECTION_READ
1721 } LPC_SECTION_READ
, *PLPC_SECTION_READ
;
1723 typedef struct _LPC_MESSAGE
1728 USHORT VirtualRangesOffset
;
1731 ULONG SectionSize
; /* CallbackID */
1732 } LPC_MESSAGE
, *PLPC_MESSAGE
;
1734 #define LPC_MESSAGE_BASE_SIZE sizeof(LPC_MESSAGE)
1736 #define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
1738 #define PORT_MAX_DATA_LENGTH 0x104
1739 #define PORT_MAX_MESSAGE_LENGTH 0x148
1741 #endif /* __USE_W32API */
1743 #define MAX_MESSAGE_DATA (0x130)
1745 typedef struct _LPC_MAX_MESSAGE
1748 BYTE Data
[MAX_MESSAGE_DATA
];
1749 } LPC_MAX_MESSAGE
, *PLPC_MAX_MESSAGE
;
1751 typedef struct _LPC_PORT_BASIC_INFORMATION
1768 } LPC_PORT_BASIC_INFORMATION
, * PLPC_PORT_BASIC_INFORMATION
;
1771 typedef struct _KINTERRUPT
1774 KAFFINITY ProcessorEnableMask
;
1775 PKSPIN_LOCK IrqLock
;
1777 BOOLEAN FloatingSave
;
1778 PKSERVICE_ROUTINE ServiceRoutine
;
1779 PVOID ServiceContext
;
1784 #ifndef __USE_W32API
1786 typedef struct _KINTERRUPT
*PKINTERRUPT
;
1788 #endif /* __USE_W32API */
1790 /* BEGIN REACTOS ONLY */
1792 typedef enum _TRAVERSE_METHOD
{
1793 TraverseMethodPreorder
,
1794 TraverseMethodInorder
,
1795 TraverseMethodPostorder
1798 typedef LONG STDCALL_FUNC
1799 (*PKEY_COMPARATOR
)(IN PVOID Key1
,
1802 typedef BOOLEAN STDCALL_FUNC
1803 (*PTRAVERSE_ROUTINE
)(IN PVOID Context
,
1807 struct _BINARY_TREE_NODE
;
1809 typedef struct _BINARY_TREE
1811 struct _BINARY_TREE_NODE
* RootNode
;
1812 PKEY_COMPARATOR Compare
;
1813 BOOLEAN UseNonPagedPool
;
1815 NPAGED_LOOKASIDE_LIST NonPaged
;
1816 PAGED_LOOKASIDE_LIST Paged
;
1819 KSPIN_LOCK NonPaged
;
1822 } BINARY_TREE
, *PBINARY_TREE
;
1825 struct _SPLAY_TREE_NODE
;
1827 typedef struct _SPLAY_TREE
1829 struct _SPLAY_TREE_NODE
* RootNode
;
1830 PKEY_COMPARATOR Compare
;
1832 BOOLEAN UseNonPagedPool
;
1834 NPAGED_LOOKASIDE_LIST NonPaged
;
1835 PAGED_LOOKASIDE_LIST Paged
;
1838 KSPIN_LOCK NonPaged
;
1842 } SPLAY_TREE
, *PSPLAY_TREE
;
1845 typedef struct _HASH_TABLE
1847 // Size of hash table in number of bits
1848 ULONG HashTableSize
;
1850 // Use non-paged pool memory?
1851 BOOLEAN UseNonPagedPool
;
1853 // Lock for this structure
1855 KSPIN_LOCK NonPaged
;
1859 // Pointer to array of hash buckets with splay trees
1860 PSPLAY_TREE HashTrees
;
1861 } HASH_TABLE
, *PHASH_TABLE
;
1864 /* END REACTOS ONLY */