1 #ifndef __INCLUDE_NTOS_ZWTYPES_H
2 #define __INCLUDE_NTOS_ZWTYPES_H
6 typedef struct _LDT_ENTRY
{
24 DWORD Default_Big
: 1;
25 DWORD Granularity
: 1;
29 } LDT_ENTRY
, *PLDT_ENTRY
, *LPLDT_ENTRY
;
31 typedef enum _THREAD_STATE
{
42 typedef enum _DEBUG_CONTROL_CODE
44 DebugGetTraceInformation
= 1,
45 DebugSetInternalBreakpoint
,
47 DebugClearSpecialCalls
,
48 DebugQuerySpecialCalls
,
53 typedef enum _KPROFILE_SOURCE
58 // file disposition values
60 #define FILE_SUPERSEDE 0x0000
61 #define FILE_OPEN 0x0001
62 #define FILE_CREATE 0x0002
63 #define FILE_OPEN_IF 0x0003
64 #define FILE_OVERWRITE 0x0004
65 #define FILE_OVERWRITE_IF 0x0005
66 #define FILE_MAXIMUM_DISPOSITION 0x0005
68 // job query / set information class
70 typedef enum _JOBOBJECTINFOCLASS
{ // Q S
71 JobObjectBasicAccountingInformation
= 1, // Y N
72 JobObjectBasicLimitInformation
, // Y Y
73 JobObjectBasicProcessIdList
, // Y N
74 JobObjectBasicUIRestrictions
, // Y Y
75 JobObjectSecurityLimitInformation
, // Y Y
76 JobObjectEndOfJobTimeInformation
, // N Y
77 JobObjectAssociateCompletionPortInformation
, // N Y
78 JobObjectBasicAndIoAccountingInformation
, // Y N
79 JobObjectExtendedLimitInformation
, // Y Y
83 // {Nt|Zw}{Query|Set}SystemInformation
84 // (GN means Gary Nebbet in "NT/W2K Native API Reference")
87 enum _SYSTEM_INFORMATION_CLASS
89 SystemInformationClassMin
= 0,
90 SystemBasicInformation
= 0, /* Q */
92 SystemProcessorInformation
= 1, /* Q */
94 SystemPerformanceInformation
= 2, /* Q */
96 SystemTimeOfDayInformation
= 3, /* Q */
98 SystemPathInformation
= 4, /* Q (checked build only) */
99 SystemNotImplemented1
= 4, /* Q (GN) */
101 SystemProcessInformation
= 5, /* Q */
102 SystemProcessesAndThreadsInformation
= 5, /* Q (GN) */
104 SystemCallCountInfoInformation
= 6, /* Q */
105 SystemCallCounts
= 6, /* Q (GN) */
107 SystemDeviceInformation
= 7, /* Q */
108 // It conflicts with symbol in ntoskrnl/io/resource.c
109 // SystemConfigurationInformation = 7, /* Q (GN) */
111 SystemProcessorPerformanceInformation
= 8, /* Q */
112 SystemProcessorTimes
= 8, /* Q (GN) */
114 SystemFlagsInformation
= 9, /* QS */
115 SystemGlobalFlag
= 9, /* QS (GN) */
117 SystemCallTimeInformation
= 10,
118 SystemNotImplemented2
= 10, /* (GN) */
120 SystemModuleInformation
= 11, /* Q */
122 SystemLocksInformation
= 12, /* Q */
123 SystemLockInformation
= 12, /* Q (GN) */
125 SystemStackTraceInformation
= 13,
126 SystemNotImplemented3
= 13, /* Q (GN) */
128 SystemPagedPoolInformation
= 14,
129 SystemNotImplemented4
= 14, /* Q (GN) */
131 SystemNonPagedPoolInformation
= 15,
132 SystemNotImplemented5
= 15, /* Q (GN) */
134 SystemHandleInformation
= 16, /* Q */
136 SystemObjectInformation
= 17, /* Q */
138 SystemPageFileInformation
= 18, /* Q */
139 SystemPagefileInformation
= 18, /* Q (GN) */
141 SystemVdmInstemulInformation
= 19, /* Q */
142 SystemInstructionEmulationCounts
= 19, /* Q (GN) */
144 SystemVdmBopInformation
= 20,
145 SystemInvalidInfoClass1
= 20, /* (GN) */
147 SystemFileCacheInformation
= 21, /* QS */
148 SystemCacheInformation
= 21, /* QS (GN) */
150 SystemPoolTagInformation
= 22, /* Q (checked build only) */
152 SystemInterruptInformation
= 23, /* Q */
153 SystemProcessorStatistics
= 23, /* Q (GN) */
155 SystemDpcBehaviourInformation
= 24, /* QS */
156 SystemDpcInformation
= 24, /* QS (GN) */
158 SystemFullMemoryInformation
= 25,
159 SystemNotImplemented6
= 25, /* (GN) */
161 SystemLoadImage
= 26, /* S (callable) (GN) */
163 SystemUnloadImage
= 27, /* S (callable) (GN) */
165 SystemTimeAdjustmentInformation
= 28, /* QS */
166 SystemTimeAdjustment
= 28, /* QS (GN) */
168 SystemSummaryMemoryInformation
= 29,
169 SystemNotImplemented7
= 29, /* (GN) */
171 SystemNextEventIdInformation
= 30,
172 SystemNotImplemented8
= 30, /* (GN) */
174 SystemEventIdsInformation
= 31,
175 SystemNotImplemented9
= 31, /* (GN) */
177 SystemCrashDumpInformation
= 32, /* Q */
179 SystemExceptionInformation
= 33, /* Q */
181 SystemCrashDumpStateInformation
= 34, /* Q */
183 SystemKernelDebuggerInformation
= 35, /* Q */
185 SystemContextSwitchInformation
= 36, /* Q */
187 SystemRegistryQuotaInformation
= 37, /* QS */
189 SystemLoadAndCallImage
= 38, /* S (GN) */
191 SystemPrioritySeparation
= 39, /* S */
193 SystemPlugPlayBusInformation
= 40,
194 SystemNotImplemented10
= 40, /* Q (GN) */
196 SystemDockInformation
= 41,
197 SystemNotImplemented11
= 41, /* Q (GN) */
199 SystemPowerInformation
= 42,
200 SystemInvalidInfoClass2
= 42, /* (GN) */
202 SystemProcessorSpeedInformation
= 43,
203 SystemInvalidInfoClass3
= 43, /* (GN) */
205 SystemCurrentTimeZoneInformation
= 44, /* QS */
206 SystemTimeZoneInformation
= 44, /* QS (GN) */
208 SystemLookasideInformation
= 45, /* Q */
210 SystemSetTimeSlipEvent
= 46, /* S (GN) */
212 SystemCreateSession
= 47, /* S (GN) */
214 SystemDeleteSession
= 48, /* S (GN) */
216 SystemInvalidInfoClass4
= 49, /* (GN) */
218 SystemRangeStartInformation
= 50, /* Q (GN) */
220 SystemVerifierInformation
= 51, /* QS (GN) */
222 SystemAddVerifier
= 52, /* S (GN) */
224 SystemSessionProcessesInformation
= 53, /* Q (GN) */
225 SystemInformationClassMax
227 } SYSTEM_INFORMATION_CLASS
;
229 // SystemBasicInformation (0)
230 // Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
232 struct _SYSTEM_BASIC_INFORMATION
235 ULONG MaximumIncrement
;
236 ULONG PhysicalPageSize
;
237 ULONG NumberOfPhysicalPages
;
238 ULONG LowestPhysicalPage
;
239 ULONG HighestPhysicalPage
;
240 ULONG AllocationGranularity
;
241 ULONG LowestUserAddress
;
242 ULONG HighestUserAddress
;
243 KAFFINITY ActiveProcessors
;
244 CCHAR NumberProcessors
;
245 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
247 // SystemProcessorInformation (1)
248 // Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
249 typedef struct _SYSTEM_PROCESSOR_INFORMATION
{
250 USHORT ProcessorArchitecture
;
251 USHORT ProcessorLevel
;
252 USHORT ProcessorRevision
;
255 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
257 // SystemPerformanceInfo (2)
258 // Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
259 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
260 LARGE_INTEGER IdleTime
;
261 LARGE_INTEGER ReadTransferCount
;
262 LARGE_INTEGER WriteTransferCount
;
263 LARGE_INTEGER OtherTransferCount
;
264 ULONG ReadOperationCount
;
265 ULONG WriteOperationCount
;
266 ULONG OtherOperationCount
;
267 ULONG AvailablePages
;
268 ULONG TotalCommittedPages
;
269 ULONG TotalCommitLimit
;
270 ULONG PeakCommitment
;
272 ULONG WriteCopyFaults
;
273 ULONG TransitionFaults
;
274 ULONG CacheTransitionFaults
;
275 ULONG DemandZeroFaults
;
280 ULONG PagefilePagesWritten
;
281 ULONG PagefilePageWriteIos
;
282 ULONG MappedFilePagesWritten
;
283 ULONG MappedFilePageWriteIos
;
284 ULONG PagedPoolUsage
;
285 ULONG NonPagedPoolUsage
;
286 ULONG PagedPoolAllocs
;
287 ULONG PagedPoolFrees
;
288 ULONG NonPagedPoolAllocs
;
289 ULONG NonPagedPoolFrees
;
290 ULONG TotalFreeSystemPtes
;
291 ULONG SystemCodePage
;
292 ULONG TotalSystemDriverPages
;
293 ULONG TotalSystemCodePages
;
294 ULONG SmallNonPagedLookasideListAllocateHits
;
295 ULONG SmallPagedLookasideListAllocateHits
;
297 ULONG MmSystemCachePage
;
299 ULONG SystemDriverPage
;
300 ULONG FastReadNoWait
;
302 ULONG FastReadResourceMiss
;
303 ULONG FastReadNotPossible
;
304 ULONG FastMdlReadNoWait
;
305 ULONG FastMdlReadWait
;
306 ULONG FastMdlReadResourceMiss
;
307 ULONG FastMdlReadNotPossible
;
310 ULONG MapDataNoWaitMiss
;
311 ULONG MapDataWaitMiss
;
312 ULONG PinMappedDataCount
;
315 ULONG PinReadNoWaitMiss
;
316 ULONG PinReadWaitMiss
;
317 ULONG CopyReadNoWait
;
319 ULONG CopyReadNoWaitMiss
;
320 ULONG CopyReadWaitMiss
;
323 ULONG MdlReadNoWaitMiss
;
324 ULONG MdlReadWaitMiss
;
327 ULONG LazyWritePages
;
330 ULONG ContextSwitches
;
331 ULONG FirstLevelTbFills
;
332 ULONG SecondLevelTbFills
;
334 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
336 // SystemModuleInformation (11)
337 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
{
344 /* Length of module name not including the path, this
345 field contains valid value only for NTOSKRNL module */
350 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
352 typedef struct _SYSTEM_MODULE_INFORMATION
{
354 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
355 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
357 // SystemHandleInformation (16)
360 struct _SYSTEM_HANDLE_ENTRY
369 } SYSTEM_HANDLE_ENTRY
, *PSYSTEM_HANDLE_ENTRY
;
372 struct _SYSTEM_HANDLE_INFORMATION_NT4
375 SYSTEM_HANDLE_ENTRY Handle
[1];
377 } SYSTEM_HANDLE_INFORMATION_NT4
, *PSYSTEM_HANDLE_INFORMATION_NT4
;
379 typedef struct _SYSTEM_HANDLE_INFORMATION
{
381 UCHAR ObjectTypeNumber
;
385 ACCESS_MASK GrantedAccess
;
386 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
388 // SystemObjectInformation (17)
390 struct _SYSTEM_OBJECT_TYPE_INFORMATION
392 ULONG NextEntryOffset
;
396 ULONG InvalidAttributes
;
397 GENERIC_MAPPING GenericMapping
;
398 ACCESS_MASK ValidAccessMask
;
403 } SYSTEM_OBJECT_TYPE_INFORMATION
, *PSYSTEM_OBJECT_TYPE_INFORMATION
;
406 struct _SYSTEM_OBJECT_INFORMATION
408 ULONG NextEntryOffset
;
410 ULONG CreatorProcessId
;
415 ULONG PagedPoolUsage
;
416 ULONG NonPagedPoolUsage
;
417 ULONG ExclusiveProcessId
;
418 PSECURITY_DESCRIPTOR SecurityDescriptor
;
421 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
423 // SystemPageFileInformation (18)
425 struct _SYSTEM_PAGEFILE_INFORMATION
427 ULONG RelativeOffset
;
428 ULONG CurrentSizePages
;
429 ULONG TotalUsedPages
;
431 UNICODE_STRING PagefileFileName
;
433 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
435 // SystemCacheInformation (21)
437 struct _SYSTEM_CACHE_INFORMATION
441 ULONG PageFaultCount
;
442 ULONG MinimumWorkingSet
;
443 ULONG MaximumWorkingSet
;
446 } SYSTEM_CACHE_INFORMATION
;
448 // SystemDpcInformation (24)
450 struct _SYSTEM_DPC_INFORMATION
453 ULONG KiMaximumDpcQueueDepth
;
454 ULONG KiMinimumDpcRate
;
455 ULONG KiAdjustDpcThreshold
;
456 ULONG KiIdealDpcRate
;
458 } SYSTEM_DPC_INFORMATION
, *PSYSTEM_DPC_INFORMATION
;
460 // SystemLoadImage (26)
461 typedef struct _SYSTEM_LOAD_IMAGE
463 UNICODE_STRING ModuleName
;
465 PVOID SectionPointer
;
467 PVOID ExportDirectory
;
468 } SYSTEM_LOAD_IMAGE
, *PSYSTEM_LOAD_IMAGE
;
470 // SystemUnloadImage (27)
471 typedef struct _SYSTEM_UNLOAD_IMAGE
474 } SYSTEM_UNLOAD_IMAGE
, *PSYSTEM_UNLOAD_IMAGE
;
476 // SystemTimeAdjustmentInformation (28)
478 struct _SYSTEM_QUERY_TIME_ADJUSTMENT
480 ULONG TimeAdjustment
;
481 ULONG MaximumIncrement
;
482 BOOLEAN TimeSynchronization
;
484 } SYSTEM_QUERY_TIME_ADJUSTMENT
, *PSYSTEM_QUERY_TIME_ADJUSTMENT
;
487 struct _SYSTEM_SET_TIME_ADJUSTMENT
489 ULONG TimeAdjustment
;
490 BOOLEAN TimeSynchronization
;
492 } SYSTEM_SET_TIME_ADJUSTMENT
, *PSYSTEM_SET_TIME_ADJUSTMENT
;
496 typedef enum _ATOM_INFORMATION_CLASS
498 AtomBasicInformation
= 0,
499 AtomTableInformation
= 1,
500 } ATOM_INFORMATION_CLASS
;
502 typedef struct _ATOM_BASIC_INFORMATION
508 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
510 // SystemLoadAndCallImage(38)
511 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE
513 UNICODE_STRING ModuleName
;
514 } SYSTEM_LOAD_AND_CALL_IMAGE
, *PSYSTEM_LOAD_AND_CALL_IMAGE
;
516 // SystemTimeZoneInformation (44)
518 struct _SYSTEM_TIME_ZONE_INFORMATION
521 WCHAR StandardName
[32];
524 WCHAR DaylightName
[32];
528 } SYSTEM_TIME_ZONE_INFORMATION
, * PSYSTEM_TIME_ZONE_INFORMATION
;
530 // SystemLookasideInformation (45)
532 struct _SYSTEM_LOOKASIDE_INFORMATION
536 ULONG TotalAllocates
;
537 ULONG AllocatesMisses
;
544 } SYSTEM_LOOKASIDE_INFORMATION
, * PSYSTEM_LOOKASIDE_INFORMATION
;
546 // SystemSetTimeSlipEvent (46)
548 struct _SYSTEM_SET_TIME_SLIP_EVENT
550 HANDLE TimeSlipEvent
; /* IN */
552 } SYSTEM_SET_TIME_SLIP_EVENT
, * PSYSTEM_SET_TIME_SLIP_EVENT
;
554 // SystemCreateSession (47)
555 // (available only on TSE/NT5+)
557 struct _SYSTEM_CREATE_SESSION
559 ULONG SessionId
; /* OUT */
561 } SYSTEM_CREATE_SESSION
, * PSYSTEM_CREATE_SESSION
;
563 // SystemDeleteSession (48)
564 // (available only on TSE/NT5+)
566 struct _SYSTEM_DELETE_SESSION
568 ULONG SessionId
; /* IN */
570 } SYSTEM_DELETE_SESSION
, * PSYSTEM_DELETE_SESSION
;
572 // SystemRangeStartInformation (50)
574 struct _SYSTEM_RANGE_START_INFORMATION
576 PVOID SystemRangeStart
;
578 } SYSTEM_RANGE_START_INFORMATION
, * PSYSTEM_RANGE_START_INFORMATION
;
580 // SystemSessionProcessesInformation (53)
581 // (available only on TSE/NT5+)
583 struct _SYSTEM_SESSION_PROCESSES_INFORMATION
587 PVOID Buffer
; /* same format as in SystemProcessInformation */
589 } SYSTEM_SESSION_PROCESSES_INFORMATION
, * PSYSTEM_SESSION_PROCESSES_INFORMATION
;
591 // memory information
593 typedef enum _MEMORY_INFORMATION_CLASS
{
594 MemoryBasicInformation
,
595 MemoryWorkingSetList
,
596 MemorySectionName
//,
597 //MemoryBasicVlmInformation //???
598 } MEMORY_INFORMATION_CLASS
;
600 typedef struct _MEMORY_BASIC_INFORMATION
{ // Information Class 0
602 PVOID AllocationBase
;
603 ULONG AllocationProtect
;
608 } MEMORY_BASIC_INFORMATION
, *PMEMORY_BASIC_INFORMATION
;
610 typedef struct _MEMORY_WORKING_SET_LIST
{ // Information Class 1
612 ULONG WorkingSetList
[1];
613 } MEMORY_WORKING_SET_LIST
, *PMEMORY_WORKING_SET_LIST
;
615 // Information Class 2
616 /*#define _MEMORY_SECTION_NAME_STATIC(__bufsize__) \
618 UNICODE_STRING SectionFileName; \
619 WCHAR NameBuffer[(__bufsize__)]; \
624 UNICODE_STRING SectionFileName
;
625 WCHAR NameBuffer
[ANYSIZE_ARRAY
];
626 } MEMORY_SECTION_NAME
, *PMEMORY_SECTION_NAME
;
628 // Information class 0
629 typedef struct _PROCESS_BASIC_INFORMATION
633 KAFFINITY AffinityMask
;
634 KPRIORITY BasePriority
;
635 ULONG UniqueProcessId
;
636 ULONG InheritedFromUniqueProcessId
;
637 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
639 // Information class 1
640 typedef struct _QUOTA_LIMITS
642 ULONG PagedPoolLimit
;
643 ULONG NonPagedPoolLimit
;
644 ULONG MinimumWorkingSetSize
;
645 ULONG MaximumWorkingSetSize
;
648 } QUOTA_LIMITS
, *PQUOTA_LIMITS
;
650 // Information class 2
651 typedef struct _IO_COUNTERS
653 LARGE_INTEGER ReadOperationCount
;
654 LARGE_INTEGER WriteOperationCount
;
655 LARGE_INTEGER OtherOperationCount
;
656 LARGE_INTEGER ReadTransferCount
;
657 LARGE_INTEGER WriteTransferCount
;
658 LARGE_INTEGER OtherTransferCount
;
659 } IO_COUNTERS
, *PIO_COUNTERS
;
661 // Information class 3
662 typedef struct _VM_COUNTERS_
664 ULONG PeakVirtualSize
;
666 ULONG PageFaultCount
;
667 ULONG PeakWorkingSetSize
;
668 ULONG WorkingSetSize
;
669 ULONG QuotaPeakPagedPoolUsage
;
670 ULONG QuotaPagedPoolUsage
;
671 ULONG QuotaPeakNonPagedPoolUsage
;
672 ULONG QuotaNonPagedPoolUsage
;
674 ULONG PeakPagefileUsage
;
675 } VM_COUNTERS
, *PVM_COUNTERS
;
677 // Information class 4
678 typedef struct _KERNEL_USER_TIMES
684 } KERNEL_USER_TIMES
, *PKERNEL_USER_TIMES
;
686 // Information class 9
687 typedef struct _PROCESS_ACCESS_TOKEN
691 } PROCESS_ACCESS_TOKEN
, *PPROCESS_ACCESS_TOKEN
;
693 // Information class 14
694 typedef struct _POOLED_USAGE_AND_LIMITS_
696 ULONG PeakPagedPoolUsage
;
697 ULONG PagedPoolUsage
;
698 ULONG PagedPoolLimit
;
699 ULONG PeakNonPagedPoolUsage
;
700 ULONG NonPagedPoolUsage
;
701 ULONG NonPagedPoolLimit
;
702 ULONG PeakPagefileUsage
;
705 } POOLED_USAGE_AND_LIMITS
, *PPOOLED_USAGE_AND_LIMITS
;
707 // Information class 15
708 typedef struct _PROCESS_WS_WATCH_INFORMATION
712 } PROCESS_WS_WATCH_INFORMATION
, *PPROCESS_WS_WATCH_INFORMATION
;
714 // Information class 18
715 typedef struct _PROCESS_PRIORITY_CLASS
719 } PROCESS_PRIORITY_CLASS
, *PPROCESS_PRIORITY_CLASS
;
721 // Information class 23
722 typedef struct _PROCESS_DEVICEMAP_INFORMATION
726 HANDLE DirectoryHandle
;
733 } PROCESS_DEVICEMAP_INFORMATION
, *pPROCESS_DEVICEMAP_INFORMATION
;
735 // Information class 24
736 typedef struct _PROCESS_SESSION_INFORMATION
739 } PROCESS_SESSION_INFORMATION
, *PPROCESS_SESSION_INFORMATION
;
741 // thread information
743 // incompatible with MS NT
745 typedef struct _THREAD_BASIC_INFORMATION
748 PVOID TebBaseAddress
; // PNT_TIB (GN)
750 KAFFINITY AffinityMask
;
752 KPRIORITY BasePriority
;
753 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
758 typedef struct _FILE_BASIC_INFORMATION
760 LARGE_INTEGER CreationTime
;
761 LARGE_INTEGER LastAccessTime
;
762 LARGE_INTEGER LastWriteTime
;
763 LARGE_INTEGER ChangeTime
;
764 ULONG FileAttributes
;
765 } FILE_BASIC_INFORMATION
, *PFILE_BASIC_INFORMATION
;
767 typedef struct _FILE_STANDARD_INFORMATION
769 LARGE_INTEGER AllocationSize
;
770 LARGE_INTEGER EndOfFile
;
772 BOOLEAN DeletePending
;
774 } FILE_STANDARD_INFORMATION
, *PFILE_STANDARD_INFORMATION
;
776 typedef struct _FILE_POSITION_INFORMATION
778 LARGE_INTEGER CurrentByteOffset
;
779 } FILE_POSITION_INFORMATION
, *PFILE_POSITION_INFORMATION
;
781 typedef struct _FILE_ALIGNMENT_INFORMATION
783 ULONG AlignmentRequirement
;
784 } FILE_ALIGNMENT_INFORMATION
, *PFILE_ALIGNMENT_INFORMATION
;
786 typedef struct _FILE_DISPOSITION_INFORMATION
788 BOOLEAN DoDeleteFile
;
789 } FILE_DISPOSITION_INFORMATION
, *PFILE_DISPOSITION_INFORMATION
;
791 typedef struct _FILE_END_OF_FILE_INFORMATION
793 LARGE_INTEGER EndOfFile
;
794 } FILE_END_OF_FILE_INFORMATION
, *PFILE_END_OF_FILE_INFORMATION
;
796 typedef struct _FILE_NETWORK_OPEN_INFORMATION
802 LARGE_INTEGER AllocationSize
;
803 LARGE_INTEGER EndOfFile
;
804 ULONG FileAttributes
;
805 } FILE_NETWORK_OPEN_INFORMATION
, *PFILE_NETWORK_OPEN_INFORMATION
;
807 typedef struct _FILE_FULL_EA_INFORMATION
809 ULONG NextEntryOffset
;
812 USHORT EaValueLength
;
814 } FILE_FULL_EA_INFORMATION
, *PFILE_FULL_EA_INFORMATION
;
817 typedef struct _FILE_EA_INFORMATION
{
819 } FILE_EA_INFORMATION
, *PFILE_EA_INFORMATION
;
822 typedef struct _FILE_GET_EA_INFORMATION
{
823 ULONG NextEntryOffset
;
826 } FILE_GET_EA_INFORMATION
, *PFILE_GET_EA_INFORMATION
;
828 typedef struct _FILE_STREAM_INFORMATION
{
829 ULONG NextEntryOffset
;
830 ULONG StreamNameLength
;
831 LARGE_INTEGER StreamSize
;
832 LARGE_INTEGER StreamAllocationSize
;
834 } FILE_STREAM_INFORMATION
, *PFILE_STREAM_INFORMATION
;
836 typedef struct _FILE_ALLOCATION_INFORMATION
{
837 LARGE_INTEGER AllocationSize
;
838 } FILE_ALLOCATION_INFORMATION
, *PFILE_ALLOCATION_INFORMATION
;
840 typedef struct _FILE_NAME_INFORMATION
{
841 ULONG FileNameLength
;
843 } FILE_NAME_INFORMATION
, *PFILE_NAME_INFORMATION
;
845 typedef struct _FILE_NAMES_INFORMATION
847 ULONG NextEntryOffset
;
849 ULONG FileNameLength
;
851 } FILE_NAMES_INFORMATION
, *PFILE_NAMES_INFORMATION
;
854 typedef struct _FILE_RENAME_INFORMATION
{
857 ULONG FileNameLength
;
859 } FILE_RENAME_INFORMATION
, *PFILE_RENAME_INFORMATION
;
862 typedef struct _FILE_INTERNAL_INFORMATION
{
863 LARGE_INTEGER IndexNumber
;
864 } FILE_INTERNAL_INFORMATION
, *PFILE_INTERNAL_INFORMATION
;
866 typedef struct _FILE_ACCESS_INFORMATION
{
867 ACCESS_MASK AccessFlags
;
868 } FILE_ACCESS_INFORMATION
, *PFILE_ACCESS_INFORMATION
;
871 typedef struct _FILE_MODE_INFORMATION
{
873 } FILE_MODE_INFORMATION
, *PFILE_MODE_INFORMATION
;
876 typedef struct _FILE_PIPE_INFORMATION
{
878 ULONG CompletionMode
;
879 } FILE_PIPE_INFORMATION
, *PFILE_PIPE_INFORMATION
;
881 typedef struct _FILE_PIPE_LOCAL_INFORMATION
{
883 ULONG NamedPipeConfiguration
;
884 ULONG MaximumInstances
;
885 ULONG CurrentInstances
;
887 ULONG ReadDataAvailable
;
889 ULONG WriteQuotaAvailable
;
890 ULONG NamedPipeState
;
892 } FILE_PIPE_LOCAL_INFORMATION
, *PFILE_PIPE_LOCAL_INFORMATION
;
894 typedef struct _FILE_PIPE_REMOTE_INFORMATION
{
895 LARGE_INTEGER CollectDataTime
;
896 ULONG MaximumCollectionCount
;
897 } FILE_PIPE_REMOTE_INFORMATION
, *PFILE_PIPE_REMOTE_INFORMATION
;
899 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
{
900 ULONG MaxMessageSize
;
901 ULONG Unknown
; /* ?? */
904 LARGE_INTEGER Timeout
;
905 } FILE_MAILSLOT_QUERY_INFORMATION
, *PFILE_MAILSLOT_QUERY_INFORMATION
;
907 typedef struct _FILE_MAILSLOT_SET_INFORMATION
{
908 LARGE_INTEGER Timeout
;
909 } FILE_MAILSLOT_SET_INFORMATION
, *PFILE_MAILSLOT_SET_INFORMATION
;
911 typedef struct _FILE_COMPRESSION_INFORMATION
{
912 LARGE_INTEGER CompressedFileSize
;
913 USHORT CompressionFormat
;
914 UCHAR CompressionUnitShift
;
918 } FILE_COMPRESSION_INFORMATION
, *PFILE_COMPRESSION_INFORMATION
;
920 typedef struct _FILE_COMPLETION_INFORMATION
{ // Information Class 30
921 HANDLE IoCompletionHandle
;
923 } FILE_COMPLETION_INFORMATION
, *PFILE_COMPLETION_INFORMATION
;
925 typedef struct _FILE_ALL_INFORMATION
{
926 FILE_BASIC_INFORMATION BasicInformation
;
927 FILE_STANDARD_INFORMATION StandardInformation
;
928 FILE_INTERNAL_INFORMATION InternalInformation
;
929 FILE_EA_INFORMATION EaInformation
;
930 FILE_ACCESS_INFORMATION AccessInformation
;
931 FILE_POSITION_INFORMATION PositionInformation
;
932 FILE_MODE_INFORMATION ModeInformation
;
933 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
934 FILE_NAME_INFORMATION NameInformation
;
935 } FILE_ALL_INFORMATION
, *PFILE_ALL_INFORMATION
;
938 // file system information structures
940 typedef struct _FILE_FS_DEVICE_INFORMATION
{
941 DEVICE_TYPE DeviceType
;
942 ULONG Characteristics
;
943 } FILE_FS_DEVICE_INFORMATION
, *PFILE_FS_DEVICE_INFORMATION
;
946 typedef struct _FILE_FS_VOLUME_INFORMATION
{
947 TIME VolumeCreationTime
;
948 ULONG VolumeSerialNumber
;
949 ULONG VolumeLabelLength
;
950 BOOLEAN SupportsObjects
;
951 WCHAR VolumeLabel
[0];
952 } FILE_FS_VOLUME_INFORMATION
, *PFILE_FS_VOLUME_INFORMATION
;
954 typedef struct _FILE_FS_SIZE_INFORMATION
{
955 LARGE_INTEGER TotalAllocationUnits
;
956 LARGE_INTEGER AvailableAllocationUnits
;
957 ULONG SectorsPerAllocationUnit
;
958 ULONG BytesPerSector
;
959 } FILE_FS_SIZE_INFORMATION
, *PFILE_FS_SIZE_INFORMATION
;
961 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
{
962 ULONG FileSystemAttributes
;
963 LONG MaximumComponentNameLength
;
964 ULONG FileSystemNameLength
;
965 WCHAR FileSystemName
[0];
966 } FILE_FS_ATTRIBUTE_INFORMATION
, *PFILE_FS_ATTRIBUTE_INFORMATION
;
969 FileSystemAttributes is one of the following values:
971 FILE_CASE_SENSITIVE_SEARCH 0x00000001
972 FILE_CASE_PRESERVED_NAMES 0x00000002
973 FILE_UNICODE_ON_DISK 0x00000004
974 FILE_PERSISTENT_ACLS 0x00000008
975 FILE_FILE_COMPRESSION 0x00000010
976 FILE_VOLUME_QUOTAS 0x00000020
977 FILE_VOLUME_IS_COMPRESSED 0x00008000
979 typedef struct _FILE_FS_LABEL_INFORMATION
{
980 ULONG VolumeLabelLength
;
981 WCHAR VolumeLabel
[0];
982 } FILE_FS_LABEL_INFORMATION
, *PFILE_FS_LABEL_INFORMATION
;
984 // read file scatter / write file scatter
985 //FIXME I am a win32 struct aswell
987 typedef union _FILE_SEGMENT_ELEMENT
{
990 }FILE_SEGMENT_ELEMENT
, *PFILE_SEGMENT_ELEMENT
;
992 typedef struct _FILE_DIRECTORY_INFORMATION
{
993 ULONG NextEntryOffset
;
999 LARGE_INTEGER EndOfFile
;
1000 LARGE_INTEGER AllocationSize
;
1001 ULONG FileAttributes
;
1002 ULONG FileNameLength
;
1004 } FILE_DIRECTORY_INFORMATION
, *PFILE_DIRECTORY_INFORMATION
;
1006 typedef struct _FILE_FULL_DIRECTORY_INFORMATION
{
1007 ULONG NextEntryOffset
;
1010 TIME LastAccessTime
;
1013 LARGE_INTEGER EndOfFile
;
1014 LARGE_INTEGER AllocationSize
;
1015 ULONG FileAttributes
;
1016 ULONG FileNameLength
;
1018 WCHAR FileName
[0]; // variable size
1019 } FILE_FULL_DIRECTORY_INFORMATION
, *PFILE_FULL_DIRECTORY_INFORMATION
,
1020 FILE_FULL_DIR_INFORMATION
, *PFILE_FULL_DIR_INFORMATION
;
1023 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION
{
1024 ULONG NextEntryOffset
;
1027 TIME LastAccessTime
;
1030 LARGE_INTEGER EndOfFile
;
1031 LARGE_INTEGER AllocationSize
;
1032 ULONG FileAttributes
;
1033 ULONG FileNameLength
;
1035 CHAR ShortNameLength
;
1036 WCHAR ShortName
[12]; // 8.3 name
1038 } FILE_BOTH_DIRECTORY_INFORMATION
, *PFILE_BOTH_DIRECTORY_INFORMATION
,
1039 FILE_BOTH_DIR_INFORMATION
, *PFILE_BOTH_DIR_INFORMATION
;
1042 NotifyFilter / CompletionFilter:
1044 FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
1045 FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
1046 FILE_NOTIFY_CHANGE_NAME 0x00000003
1047 FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
1048 FILE_NOTIFY_CHANGE_SIZE 0x00000008
1049 FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
1050 FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
1051 FILE_NOTIFY_CHANGE_CREATION 0x00000040
1052 FILE_NOTIFY_CHANGE_EA 0x00000080
1053 FILE_NOTIFY_CHANGE_SECURITY 0x00000100
1054 FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
1055 FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
1056 FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
1059 typedef struct _FILE_NOTIFY_INFORMATION
{
1061 ULONG FileNameLength
;
1063 } FILE_NOTIFY_INFORMATION
;
1065 #define FSCTL_GET_VOLUME_BITMAP 0x9006F
1066 #define FSCTL_GET_RETRIEVAL_POINTERS 0x90073
1067 #define FSCTL_MOVE_FILE 0x90074
1069 typedef struct _MAPPING_PAIR
1073 } MAPPING_PAIR
, *PMAPPING_PAIR
;
1075 typedef struct _GET_RETRIEVAL_DESCRIPTOR
1077 ULONG NumberOfPairs
;
1079 MAPPING_PAIR Pair
[0]; // variable size
1080 } GET_RETRIEVAL_DESCRIPTOR
, *PGET_RETRIEVAL_DESCRIPTOR
;
1082 typedef struct _MOVEFILE_DESCRIPTOR
1086 LARGE_INTEGER StartVcn
;
1087 LARGE_INTEGER TargetLcn
;
1090 } MOVEFILE_DESCRIPTOR
, *PMOVEFILE_DESCRIPTOR
;
1092 typedef struct _SECTION_BASIC_INFORMATION
1097 } SECTION_BASIC_INFORMATION
, *PSECTION_BASIC_INFORMATION
;
1099 typedef enum _SECTION_INFORMATION_CLASS
1101 SectionBasicInformation
,
1102 SectionImageInformation
,
1103 } SECTION_INFORMATION_CLASS
;
1107 typedef enum SHUTDOWN_ACTION_TAG
{
1113 typedef enum _IO_COMPLETION_INFORMATION_CLASS
{
1114 IoCompletionBasicInformation
1115 } IO_COMPLETION_INFORMATION_CLASS
;
1117 typedef struct _IO_COMPLETION_BASIC_INFORMATION
{
1119 } IO_COMPLETION_BASIC_INFORMATION
, *PIO_COMPLETION_BASIC_INFORMATION
;
1121 #else /* __USE_W32API */
1123 #define DebugDbgLoadSymbols ((DEBUG_CONTROL_CODE)0xffffffff)
1125 #endif /* __USE_W32API */
1128 #include <ddk/ntddk.h>
1129 #endif /* __USE_W32API */
1130 #ifndef NtCurrentProcess
1131 #define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
1132 #endif /* NtCurrentProcess */
1133 #ifndef NtCurrentThread
1134 #define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
1135 #endif /* NtCurrentThread */
1139 extern ULONG EXPORTED NtBuildNumber
;
1141 extern ULONG IMPORTED NtBuildNumber
;
1144 /* Microsoft-style declarations */
1146 extern EXPORTED ULONG NtBuildNumber
;
1148 extern IMPORTED ULONG NtBuildNumber
;
1150 #endif /* __GNUC__ */
1153 // event access mask
1155 #define EVENT_READ_ACCESS 1
1156 #define EVENT_WRITE_ACCESS 2
1158 //process query / set information class
1160 #define ProcessBasicInformation 0
1161 #define ProcessQuotaLimits 1
1162 #define ProcessIoCounters 2
1163 #define ProcessVmCounters 3
1164 #define ProcessTimes 4
1165 #define ProcessBasePriority 5
1166 #define ProcessRaisePriority 6
1167 #define ProcessDebugPort 7
1168 #define ProcessExceptionPort 8
1169 #define ProcessAccessToken 9
1170 #define ProcessLdtInformation 10
1171 #define ProcessLdtSize 11
1172 #define ProcessDefaultHardErrorMode 12
1173 #define ProcessIoPortHandlers 13
1174 #define ProcessPooledUsageAndLimits 14
1175 #define ProcessWorkingSetWatch 15
1176 #define ProcessUserModeIOPL 16
1177 #define ProcessEnableAlignmentFaultFixup 17
1178 #define ProcessPriorityClass 18
1179 #define ProcessWx86Information 19
1180 #define ProcessHandleCount 20
1181 #define ProcessAffinityMask 21
1182 #define ProcessPriorityBoost 22
1183 #define ProcessDeviceMap 23
1184 #define ProcessSessionInformation 24
1185 #define ProcessForegroundInformation 25
1186 #define ProcessWow64Information 26
1187 /* ReactOS private. */
1188 #define ProcessImageFileName 27
1189 #define ProcessDesktop 28
1190 #define MaxProcessInfoClass 29
1193 * thread query / set information class
1195 #define ThreadBasicInformation 0
1196 #define ThreadTimes 1
1197 #define ThreadPriority 2
1198 #define ThreadBasePriority 3
1199 #define ThreadAffinityMask 4
1200 #define ThreadImpersonationToken 5
1201 #define ThreadDescriptorTableEntry 6
1202 #define ThreadEnableAlignmentFaultFixup 7
1203 #define ThreadEventPair 8
1204 #define ThreadQuerySetWin32StartAddress 9
1205 #define ThreadZeroTlsCell 10
1206 #define ThreadPerformanceCount 11
1207 #define ThreadAmILastThread 12
1208 #define ThreadIdealProcessor 13
1209 #define ThreadPriorityBoost 14
1210 #define ThreadSetTlsArrayAddress 15
1211 #define ThreadIsIoPending 16
1212 #define ThreadHideFromDebugger 17
1213 #define MaxThreadInfoClass 17
1216 typedef struct _ATOM_TABLE_INFORMATION
1218 ULONG NumberOfAtoms
;
1220 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
1223 // mutant information
1225 typedef enum _MUTANT_INFORMATION_CLASS
1227 MutantBasicInformation
= 0
1228 } MUTANT_INFORMATION_CLASS
;
1230 typedef struct _MUTANT_BASIC_INFORMATION
1235 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
1238 // SystemTimeOfDayInformation (3)
1240 struct _SYSTEM_TIMEOFDAY_INFORMATION
1242 LARGE_INTEGER BootTime
;
1243 LARGE_INTEGER CurrentTime
;
1244 LARGE_INTEGER TimeZoneBias
;
1247 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
1249 // SystemPathInformation (4)
1252 struct _SYSTEM_PATH_INFORMATION
1256 } SYSTEM_PATH_INFORMATION
, * PSYSTEM_PATH_INFORMATION
;
1258 // SystemProcessInformation (5)
1260 #ifndef __USE_W32API
1262 typedef struct _SYSTEM_THREADS
{
1263 LARGE_INTEGER KernelTime
;
1264 LARGE_INTEGER UserTime
;
1265 LARGE_INTEGER CreateTime
;
1270 KPRIORITY BasePriority
;
1271 ULONG ContextSwitchCount
;
1273 KWAIT_REASON WaitReason
;
1274 } SYSTEM_THREADS
, *PSYSTEM_THREADS
;
1276 #endif /* __USE_W32API */
1278 typedef struct _SYSTEM_PROCESSES_NT4
1280 SIZE_T NextEntryDelta
;
1286 UNICODE_STRING ProcessName
;
1287 KPRIORITY BasePriority
;
1289 ULONG InheritedFromProcessId
;
1292 VM_COUNTERS VmCounters
;
1293 SYSTEM_THREADS Threads
[ANYSIZE_ARRAY
];
1294 } SYSTEM_PROCESSES_NT4
, *PSYSTEM_PROCESSES_NT4
;
1296 typedef struct _SYSTEM_PROCESSES_NT5
1298 SIZE_T NextEntryDelta
;
1304 UNICODE_STRING ProcessName
;
1305 KPRIORITY BasePriority
;
1307 ULONG InheritedFromProcessId
;
1310 VM_COUNTERS VmCounters
;
1311 IO_COUNTERS IoCounters
;
1312 SYSTEM_THREADS Threads
[ANYSIZE_ARRAY
];
1313 } SYSTEM_PROCESSES_NT5
, *PSYSTEM_PROCESSES_NT5
;
1315 #ifndef __USE_W32API
1317 /* Not sure. What version are we emulating? */
1318 typedef SYSTEM_PROCESSES_NT5 SYSTEM_PROCESSES
, *PSYSTEM_PROCESSES
;
1320 #endif /* __USE_W32API */
1322 // SystemCallCountInformation (6)
1324 struct _SYSTEM_SDT_INFORMATION
1327 ULONG NumberOfSystemServiceTables
;
1328 ULONG NumberOfServices
[1];
1329 ULONG ServiceCounters
[1];
1331 } SYSTEM_SDT_INFORMATION
, *PSYSTEM_SDT_INFORMATION
;
1333 // SystemDeviceInformation (7)
1335 struct _SYSTEM_DEVICE_INFORMATION
1337 ULONG NumberOfDisks
;
1338 ULONG NumberOfFloppies
;
1339 ULONG NumberOfCdRoms
;
1340 ULONG NumberOfTapes
;
1341 ULONG NumberOfSerialPorts
;
1342 ULONG NumberOfParallelPorts
;
1343 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
1345 // SystemProcessorPerformanceInformation (8)
1346 // (one per processor in the system)
1348 struct _SYSTEM_PROCESSORTIME_INFO
1350 TIME TotalProcessorRunTime
;
1351 TIME TotalProcessorTime
;
1352 TIME TotalProcessorUserTime
;
1354 TIME TotalInterruptTime
;
1355 ULONG TotalInterrupts
;
1358 } SYSTEM_PROCESSORTIME_INFO
, *PSYSTEM_PROCESSORTIME_INFO
;
1360 // SystemFlagsInformation (9)
1362 struct _SYSTEM_FLAGS_INFORMATION
1366 } SYSTEM_FLAGS_INFORMATION
, * PSYSTEM_FLAGS_INFORMATION
;
1368 #define FLG_STOP_ON_EXCEPTION 0x00000001
1369 #define FLG_SHOW_LDR_SNAPS 0x00000002
1370 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
1371 #define FLG_STOP_ON_HANG_GUI 0x00000008
1372 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
1373 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
1374 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
1375 #define FLG_HEAP_VALIDATE_ALL 0x00000080
1376 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
1377 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
1378 #define FLG_POOL_ENABLE_TAGGING 0x00000400
1379 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
1380 #define FLG_USER_STACK_TRACE_DB 0x00001000
1381 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
1382 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
1383 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
1384 #define FLG_IGNORE_DEBUG_PRIV 0x00010000
1385 #define FLG_ENABLE_CSRDEBUG 0x00020000
1386 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
1387 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
1388 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
1389 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
1390 #define FLG_ENABLE_CLOSE_EXCEPTION 0x00400000
1391 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
1392 #define FLG_UNKNOWN_01000000 0x01000000
1393 #define FLG_UNKNOWN_02000000 0x02000000
1394 #define FLG_UNKNOWN_04000000 0x04000000
1395 #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000
1396 #define FLG_UNKNOWN_10000000 0x10000000
1397 #define FLG_UNKNOWN_20000000 0x20000000
1398 #define FLG_UNKNOWN_40000000 0x40000000
1399 #define FLG_UNKNOWN_80000000 0x80000000
1401 // SystemCallTimeInformation (10)
1404 // SystemLocksInformation (12)
1406 struct _SYSTEM_RESOURCE_LOCK_ENTRY
1408 ULONG ResourceAddress
;
1412 ULONG ContentionCount
;
1414 ULONG NumberOfSharedWaiters
;
1415 ULONG NumberOfExclusiveWaiters
;
1417 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
1420 struct _SYSTEM_RESOURCE_LOCK_INFO
1423 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
1425 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
1427 // SystemInformation13 (13)
1430 // SystemInformation14 (14)
1433 // SystemInformation15 (15)
1436 // SystemInstructionEmulationInfo (19)
1438 struct _SYSTEM_VDM_INFORMATION
1440 ULONG VdmSegmentNotPresentCount
;
1442 ULONG VdmESPREFIXCount
;
1443 ULONG VdmCSPREFIXCount
;
1444 ULONG VdmSSPREFIXCount
;
1445 ULONG VdmDSPREFIXCount
;
1446 ULONG VdmFSPREFIXCount
;
1447 ULONG VdmGSPREFIXCount
;
1448 ULONG VdmOPER32PREFIXCount
;
1449 ULONG VdmADDR32PREFIXCount
;
1451 ULONG VdmINSWV86Count
;
1452 ULONG VdmOUTSBCount
;
1453 ULONG VdmOUTSWCount
;
1454 ULONG VdmPUSHFCount
;
1456 ULONG VdmINTNNCount
;
1459 ULONG VdmINBIMMCount
;
1460 ULONG VdmINWIMMCount
;
1461 ULONG VdmOUTBIMMCount
;
1462 ULONG VdmOUTWIMMCount
;
1467 ULONG VdmLOCKPREFIXCount
;
1468 ULONG VdmREPNEPREFIXCount
;
1469 ULONG VdmREPPREFIXCount
;
1475 } SYSTEM_VDM_INFORMATION
, *PSYSTEM_VDM_INFORMATION
;
1477 // SystemInformation20 (20)
1480 // SystemPoolTagInformation (22)
1481 // found by Klaus P. Gerlicher
1482 // (implemented only in checked builds)
1484 struct _POOL_TAG_STATS
1486 ULONG AllocationCount
;
1493 struct _SYSTEM_POOL_TAG_ENTRY
1496 POOL_TAG_STATS Paged
;
1497 POOL_TAG_STATS NonPaged
;
1499 } SYSTEM_POOL_TAG_ENTRY
, * PSYSTEM_POOL_TAG_ENTRY
;
1502 struct _SYSTEM_POOL_TAG_INFO
1505 SYSTEM_POOL_TAG_ENTRY PoolEntry
[1];
1507 } SYSTEM_POOL_TAG_INFO
, *PSYSTEM_POOL_TAG_INFO
;
1509 // SystemProcessorScheduleInfo (23)
1511 struct _SYSTEM_PROCESSOR_SCHEDULE_INFO
1513 ULONG nContextSwitches
;
1516 ULONG TimerResolution
;
1520 } SYSTEM_PROCESSOR_SCHEDULE_INFO
, *PSYSTEM_PROCESSOR_SCHEDULE_INFO
;
1522 // SystemInformation25 (25)
1525 // SystemProcessorFaultCountInfo (33)
1527 struct _SYSTEM_PROCESSOR_FAULT_INFO
1529 ULONG nAlignmentFixup
;
1530 ULONG nExceptionDispatches
;
1531 ULONG nFloatingEmulation
;
1534 } SYSTEM_PROCESSOR_FAULT_INFO
, *PSYSTEM_PROCESSOR_FAULT_INFO
;
1536 // SystemCrashDumpStateInfo (34)
1539 // SystemDebuggerInformation (35)
1541 struct _SYSTEM_DEBUGGER_INFO
1543 BOOLEAN KdDebuggerEnabled
;
1544 BOOLEAN KdDebuggerPresent
;
1546 } SYSTEM_DEBUGGER_INFO
, *PSYSTEM_DEBUGGER_INFO
;
1548 // SystemInformation36 (36)
1551 // SystemQuotaInformation (37)
1553 struct _SYSTEM_QUOTA_INFORMATION
1555 ULONG CmpGlobalQuota
;
1556 ULONG CmpGlobalQuotaUsed
;
1557 ULONG MmSizeofPagedPoolInBytes
;
1559 } SYSTEM_QUOTA_INFORMATION
, *PSYSTEM_QUOTA_INFORMATION
;
1564 // SystemVerifierInformation (51)
1567 // SystemAddVerifier (52)
1575 // number of wait objects
1577 #define THREAD_WAIT_OBJECTS 3
1578 //#define MAXIMUM_WAIT_OBJECTS 64
1580 // object type access rights
1582 #define OBJECT_TYPE_CREATE 0x0001
1583 #define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1585 // directory access rights
1587 #ifndef __USE_W32API
1588 #define DIRECTORY_QUERY 0x0001
1589 #define DIRECTORY_TRAVERSE 0x0002
1590 #define DIRECTORY_CREATE_OBJECT 0x0004
1591 #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
1594 #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
1596 // symbolic link access rights
1598 #define SYMBOLIC_LINK_QUERY 0x0001
1599 #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1602 /* object information class */
1604 #ifndef __USE_W32API
1606 typedef enum _OBJECT_INFORMATION_CLASS
1608 ObjectBasicInformation
,
1609 ObjectNameInformation
,
1610 ObjectTypeInformation
,
1611 ObjectAllTypesInformation
,
1612 ObjectHandleInformation
1613 } OBJECT_INFORMATION_CLASS
;
1616 // directory information
1618 typedef struct _DIRECTORY_BASIC_INFORMATION
1620 UNICODE_STRING ObjectName
;
1621 UNICODE_STRING ObjectTypeName
; // Directory, Device ...
1622 } DIRECTORY_BASIC_INFORMATION
, *PDIRECTORY_BASIC_INFORMATION
;
1624 #endif /* __USE_W32API */
1627 Action is one of the following values:
1629 FILE_ACTION_ADDED 0x00000001
1630 FILE_ACTION_REMOVED 0x00000002
1631 FILE_ACTION_MODIFIED 0x00000003
1632 FILE_ACTION_RENAMED_OLD_NAME 0x00000004
1633 FILE_ACTION_RENAMED_NEW_NAME 0x00000005
1634 FILE_ACTION_ADDED_STREAM 0x00000006
1635 FILE_ACTION_REMOVED_STREAM 0x00000007
1636 FILE_ACTION_MODIFIED_STREAM 0x00000008
1641 // File System Control commands ( related to defragging )
1643 #define FSCTL_READ_MFT_RECORD 0x90068 // NTFS only
1645 typedef struct _BITMAP_DESCRIPTOR
1648 ULONGLONG ClustersToEndOfVol
;
1649 BYTE Map
[0]; // variable size
1650 } BITMAP_DESCRIPTOR
, *PBITMAP_DESCRIPTOR
;
1653 //typedef enum _TIMER_TYPE
1655 // NotificationTimer,
1656 // SynchronizationTimer
1659 typedef struct _TIMER_BASIC_INFORMATION
1661 LARGE_INTEGER TimeRemaining
;
1662 BOOLEAN SignalState
;
1663 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
1665 typedef enum _TIMER_INFORMATION_CLASS
1667 TimerBasicInformation
1668 } TIMER_INFORMATION_CLASS
;
1670 #ifndef __USE_W32API
1674 UNUSED_MSG_TYPE
= 0x0, /* ReactOS */
1675 LPC_NEW_MESSAGE
= 0x0, /* NT */
1679 LPC_LOST_REPLY
= 0x4,
1680 LPC_PORT_CLOSED
= 0x5,
1681 LPC_CLIENT_DIED
= 0x6,
1682 LPC_EXCEPTION
= 0x7,
1683 LPC_DEBUG_EVENT
= 0x8,
1684 LPC_ERROR_EVENT
= 0x9,
1685 LPC_CONNECTION_REQUEST
= 0xa,
1686 LPC_CONNECTION_REFUSED
= 0xb
1688 } LPC_TYPE
, *PLPC_TYPE
;
1690 typedef struct _LPC_SECTION_WRITE
1693 HANDLE SectionHandle
;
1694 ULONG SectionOffset
;
1697 PVOID TargetViewBase
;
1698 } LPC_SECTION_WRITE
, *PLPC_SECTION_WRITE
;
1700 typedef struct _LPC_SECTION_READ
1705 } LPC_SECTION_READ
, *PLPC_SECTION_READ
;
1707 typedef struct _LPC_MESSAGE
1712 USHORT VirtualRangesOffset
;
1715 ULONG SectionSize
; /* CallbackID */
1716 } LPC_MESSAGE
, *PLPC_MESSAGE
;
1718 #define LPC_MESSAGE_BASE_SIZE sizeof(LPC_MESSAGE)
1720 #define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
1722 #define PORT_MAX_DATA_LENGTH 0x104
1723 #define PORT_MAX_MESSAGE_LENGTH 0x148
1725 #endif /* __USE_W32API */
1727 #define MAX_MESSAGE_DATA (0x130)
1729 typedef struct _LPC_MAX_MESSAGE
1732 BYTE Data
[MAX_MESSAGE_DATA
];
1733 } LPC_MAX_MESSAGE
, *PLPC_MAX_MESSAGE
;
1735 typedef struct _LPC_PORT_BASIC_INFORMATION
1752 } LPC_PORT_BASIC_INFORMATION
, * PLPC_PORT_BASIC_INFORMATION
;
1755 typedef struct _KINTERRUPT
1758 KAFFINITY ProcessorEnableMask
;
1759 PKSPIN_LOCK IrqLock
;
1761 BOOLEAN FloatingSave
;
1762 PKSERVICE_ROUTINE ServiceRoutine
;
1763 PVOID ServiceContext
;
1768 #ifndef __USE_W32API
1770 typedef struct _KINTERRUPT
*PKINTERRUPT
;
1772 #endif /* __USE_W32API */
1774 /* BEGIN REACTOS ONLY */
1776 typedef enum _TRAVERSE_METHOD
{
1777 TraverseMethodPreorder
,
1778 TraverseMethodInorder
,
1779 TraverseMethodPostorder
1782 typedef LONG STDCALL_FUNC
1783 (*PKEY_COMPARATOR
)(IN PVOID Key1
,
1786 typedef BOOLEAN STDCALL_FUNC
1787 (*PTRAVERSE_ROUTINE
)(IN PVOID Context
,
1791 struct _BINARY_TREE_NODE
;
1793 typedef struct _BINARY_TREE
1795 struct _BINARY_TREE_NODE
* RootNode
;
1796 PKEY_COMPARATOR Compare
;
1797 BOOLEAN UseNonPagedPool
;
1799 NPAGED_LOOKASIDE_LIST NonPaged
;
1800 PAGED_LOOKASIDE_LIST Paged
;
1803 KSPIN_LOCK NonPaged
;
1806 } BINARY_TREE
, *PBINARY_TREE
;
1809 struct _SPLAY_TREE_NODE
;
1811 typedef struct _SPLAY_TREE
1813 struct _SPLAY_TREE_NODE
* RootNode
;
1814 PKEY_COMPARATOR Compare
;
1816 BOOLEAN UseNonPagedPool
;
1818 NPAGED_LOOKASIDE_LIST NonPaged
;
1819 PAGED_LOOKASIDE_LIST Paged
;
1822 KSPIN_LOCK NonPaged
;
1826 } SPLAY_TREE
, *PSPLAY_TREE
;
1829 typedef struct _HASH_TABLE
1831 // Size of hash table in number of bits
1832 ULONG HashTableSize
;
1834 // Use non-paged pool memory?
1835 BOOLEAN UseNonPagedPool
;
1837 // Lock for this structure
1839 KSPIN_LOCK NonPaged
;
1843 // Pointer to array of hash buckets with splay trees
1844 PSPLAY_TREE HashTrees
;
1845 } HASH_TABLE
, *PHASH_TABLE
;
1847 /* END REACTOS ONLY */