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 // SystemProcessThreadInfo (5)
340 typedef struct _SYSTEM_THREAD_INFORMATION
350 ULONG ContextSwitches
;
352 KWAIT_REASON WaitReason
;
353 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
355 typedef struct SYSTEM_PROCESS_INFORMATION
357 ULONG NextEntryOffset
;
358 ULONG NumberOfThreads
;
359 LARGE_INTEGER SpareLi1
;
360 LARGE_INTEGER SpareLi2
;
361 LARGE_INTEGER SpareLi3
;
365 UNICODE_STRING ImageName
;
367 HANDLE UniqueProcessId
;
368 HANDLE InheritedFromUniqueProcessId
;
372 ULONG PeakVirtualSize
;
374 ULONG PageFaultCount
;
375 ULONG PeakWorkingSetSize
;
376 ULONG WorkingSetSize
;
377 ULONG QuotaPeakPagedPoolUsage
;
378 ULONG QuotaPagedPoolUsage
;
379 ULONG QuotaPeakNonPagedPoolUsage
;
380 ULONG QuotaNonPagedPoolUsage
;
382 ULONG PeakPagefileUsage
;
383 ULONG PrivatePageCount
;
384 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
386 // SystemModuleInformation (11)
387 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
{
394 /* Length of module name not including the path, this
395 field contains valid value only for NTOSKRNL module */
400 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
402 typedef struct _SYSTEM_MODULE_INFORMATION
{
404 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
405 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
407 // SystemHandleInformation (16)
410 struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
412 USHORT UniqueProcessId
;
413 USHORT CreatorBackTraceIndex
;
414 UCHAR ObjectTypeIndex
;
415 UCHAR HandleAttributes
;
420 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
423 struct _SYSTEM_HANDLE_INFORMATION
425 ULONG NumberOfHandles
;
426 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
428 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
430 // SystemObjectInformation (17)
432 struct _SYSTEM_OBJECT_TYPE_INFORMATION
434 ULONG NextEntryOffset
;
438 ULONG InvalidAttributes
;
439 GENERIC_MAPPING GenericMapping
;
440 ACCESS_MASK ValidAccessMask
;
445 } SYSTEM_OBJECT_TYPE_INFORMATION
, *PSYSTEM_OBJECT_TYPE_INFORMATION
;
448 struct _SYSTEM_OBJECT_INFORMATION
450 ULONG NextEntryOffset
;
452 ULONG CreatorProcessId
;
457 ULONG PagedPoolUsage
;
458 ULONG NonPagedPoolUsage
;
459 ULONG ExclusiveProcessId
;
460 PSECURITY_DESCRIPTOR SecurityDescriptor
;
463 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
465 // SystemPageFileInformation (18)
467 struct _SYSTEM_PAGEFILE_INFORMATION
469 ULONG NextEntryOffset
;
473 UNICODE_STRING PageFileName
;
475 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
477 // SystemCacheInformation (21)
479 struct _SYSTEM_CACHE_INFORMATION
483 ULONG PageFaultCount
;
484 ULONG MinimumWorkingSet
;
485 ULONG MaximumWorkingSet
;
486 ULONG TransitionSharedPages
;
487 ULONG TransitionSharedPagesPeak
;
490 } SYSTEM_CACHE_INFORMATION
;
492 // SystemDpcInformation (24)
494 struct _SYSTEM_DPC_INFORMATION
497 ULONG KiMaximumDpcQueueDepth
;
498 ULONG KiMinimumDpcRate
;
499 ULONG KiAdjustDpcThreshold
;
500 ULONG KiIdealDpcRate
;
502 } SYSTEM_DPC_INFORMATION
, *PSYSTEM_DPC_INFORMATION
;
504 // SystemLoadImage (26)
505 typedef struct _SYSTEM_LOAD_IMAGE
507 UNICODE_STRING ModuleName
;
509 PVOID SectionPointer
;
511 PVOID ExportDirectory
;
512 } SYSTEM_LOAD_IMAGE
, *PSYSTEM_LOAD_IMAGE
;
514 // SystemUnloadImage (27)
515 typedef struct _SYSTEM_UNLOAD_IMAGE
518 } SYSTEM_UNLOAD_IMAGE
, *PSYSTEM_UNLOAD_IMAGE
;
520 // SystemTimeAdjustmentInformation (28)
522 struct _SYSTEM_QUERY_TIME_ADJUSTMENT
524 ULONG TimeAdjustment
;
525 ULONG MaximumIncrement
;
526 BOOLEAN TimeSynchronization
;
528 } SYSTEM_QUERY_TIME_ADJUSTMENT
, *PSYSTEM_QUERY_TIME_ADJUSTMENT
;
531 struct _SYSTEM_SET_TIME_ADJUSTMENT
533 ULONG TimeAdjustment
;
534 BOOLEAN TimeSynchronization
;
536 } SYSTEM_SET_TIME_ADJUSTMENT
, *PSYSTEM_SET_TIME_ADJUSTMENT
;
540 typedef enum _ATOM_INFORMATION_CLASS
542 AtomBasicInformation
= 0,
543 AtomTableInformation
= 1,
544 } ATOM_INFORMATION_CLASS
;
546 typedef struct _ATOM_BASIC_INFORMATION
552 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
554 // SystemLoadAndCallImage(38)
555 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE
557 UNICODE_STRING ModuleName
;
558 } SYSTEM_LOAD_AND_CALL_IMAGE
, *PSYSTEM_LOAD_AND_CALL_IMAGE
;
560 // SystemRegistryQuotaInformation (37)
561 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
{
562 ULONG RegistryQuotaAllowed
;
563 ULONG RegistryQuotaUsed
;
565 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
568 // SystemTimeZoneInformation (44)
570 struct _SYSTEM_TIME_ZONE_INFORMATION
573 WCHAR StandardName
[32];
576 WCHAR DaylightName
[32];
580 } SYSTEM_TIME_ZONE_INFORMATION
, * PSYSTEM_TIME_ZONE_INFORMATION
;
582 // SystemLookasideInformation (45)
584 struct _SYSTEM_LOOKASIDE_INFORMATION
588 ULONG TotalAllocates
;
589 ULONG AllocatesMisses
;
596 } SYSTEM_LOOKASIDE_INFORMATION
, * PSYSTEM_LOOKASIDE_INFORMATION
;
598 // SystemSetTimeSlipEvent (46)
600 struct _SYSTEM_SET_TIME_SLIP_EVENT
602 HANDLE TimeSlipEvent
; /* IN */
604 } SYSTEM_SET_TIME_SLIP_EVENT
, * PSYSTEM_SET_TIME_SLIP_EVENT
;
606 // SystemCreateSession (47)
607 // (available only on TSE/NT5+)
609 struct _SYSTEM_CREATE_SESSION
611 ULONG SessionId
; /* OUT */
613 } SYSTEM_CREATE_SESSION
, * PSYSTEM_CREATE_SESSION
;
615 // SystemDeleteSession (48)
616 // (available only on TSE/NT5+)
618 struct _SYSTEM_DELETE_SESSION
620 ULONG SessionId
; /* IN */
622 } SYSTEM_DELETE_SESSION
, * PSYSTEM_DELETE_SESSION
;
624 // SystemRangeStartInformation (50)
626 struct _SYSTEM_RANGE_START_INFORMATION
628 PVOID SystemRangeStart
;
630 } SYSTEM_RANGE_START_INFORMATION
, * PSYSTEM_RANGE_START_INFORMATION
;
632 // SystemSessionProcessesInformation (53)
633 // (available only on TSE/NT5+)
635 struct _SYSTEM_SESSION_PROCESSES_INFORMATION
639 PVOID Buffer
; /* same format as in SystemProcessInformation */
641 } SYSTEM_SESSION_PROCESSES_INFORMATION
, * PSYSTEM_SESSION_PROCESSES_INFORMATION
;
643 // memory information
645 typedef enum _MEMORY_INFORMATION_CLASS
{
646 MemoryBasicInformation
,
647 MemoryWorkingSetList
,
648 MemorySectionName
//,
649 //MemoryBasicVlmInformation //???
650 } MEMORY_INFORMATION_CLASS
;
652 typedef struct _MEMORY_BASIC_INFORMATION
{ // Information Class 0
654 PVOID AllocationBase
;
655 ULONG AllocationProtect
;
660 } MEMORY_BASIC_INFORMATION
, *PMEMORY_BASIC_INFORMATION
;
662 typedef struct _MEMORY_WORKING_SET_LIST
{ // Information Class 1
664 ULONG WorkingSetList
[1];
665 } MEMORY_WORKING_SET_LIST
, *PMEMORY_WORKING_SET_LIST
;
667 // Information Class 2
668 /*#define _MEMORY_SECTION_NAME_STATIC(__bufsize__) \
670 UNICODE_STRING SectionFileName; \
671 WCHAR NameBuffer[(__bufsize__)]; \
676 UNICODE_STRING SectionFileName
;
677 WCHAR NameBuffer
[ANYSIZE_ARRAY
];
678 } MEMORY_SECTION_NAME
, *PMEMORY_SECTION_NAME
;
680 // Information class 0
681 typedef struct _PROCESS_BASIC_INFORMATION
685 KAFFINITY AffinityMask
;
686 KPRIORITY BasePriority
;
687 ULONG UniqueProcessId
;
688 ULONG InheritedFromUniqueProcessId
;
689 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
691 // Information class 1
692 typedef struct _QUOTA_LIMITS
694 ULONG PagedPoolLimit
;
695 ULONG NonPagedPoolLimit
;
696 SIZE_T MinimumWorkingSetSize
;
697 SIZE_T MaximumWorkingSetSize
;
700 } QUOTA_LIMITS
, *PQUOTA_LIMITS
;
702 // Information class 2
703 typedef struct _IO_COUNTERS
705 LARGE_INTEGER ReadOperationCount
;
706 LARGE_INTEGER WriteOperationCount
;
707 LARGE_INTEGER OtherOperationCount
;
708 LARGE_INTEGER ReadTransferCount
;
709 LARGE_INTEGER WriteTransferCount
;
710 LARGE_INTEGER OtherTransferCount
;
711 } IO_COUNTERS
, *PIO_COUNTERS
;
713 // Information class 3
714 typedef struct _VM_COUNTERS_
716 ULONG PeakVirtualSize
;
718 ULONG PageFaultCount
;
719 ULONG PeakWorkingSetSize
;
720 ULONG WorkingSetSize
;
721 ULONG QuotaPeakPagedPoolUsage
;
722 ULONG QuotaPagedPoolUsage
;
723 ULONG QuotaPeakNonPagedPoolUsage
;
724 ULONG QuotaNonPagedPoolUsage
;
726 ULONG PeakPagefileUsage
;
727 } VM_COUNTERS
, *PVM_COUNTERS
;
729 // Information class 4
730 typedef struct _KERNEL_USER_TIMES
736 } KERNEL_USER_TIMES
, *PKERNEL_USER_TIMES
;
738 // Information class 9
739 typedef struct _PROCESS_ACCESS_TOKEN
743 } PROCESS_ACCESS_TOKEN
, *PPROCESS_ACCESS_TOKEN
;
745 // Information class 14
746 typedef struct _POOLED_USAGE_AND_LIMITS_
748 ULONG PeakPagedPoolUsage
;
749 ULONG PagedPoolUsage
;
750 ULONG PagedPoolLimit
;
751 ULONG PeakNonPagedPoolUsage
;
752 ULONG NonPagedPoolUsage
;
753 ULONG NonPagedPoolLimit
;
754 ULONG PeakPagefileUsage
;
757 } POOLED_USAGE_AND_LIMITS
, *PPOOLED_USAGE_AND_LIMITS
;
759 // Information class 15
760 typedef struct _PROCESS_WS_WATCH_INFORMATION
764 } PROCESS_WS_WATCH_INFORMATION
, *PPROCESS_WS_WATCH_INFORMATION
;
766 // Information class 18
767 typedef struct _PROCESS_PRIORITY_CLASS
771 } PROCESS_PRIORITY_CLASS
, *PPROCESS_PRIORITY_CLASS
;
773 // Information class 23
774 typedef struct _PROCESS_DEVICEMAP_INFORMATION
778 HANDLE DirectoryHandle
;
785 } PROCESS_DEVICEMAP_INFORMATION
, *PPROCESS_DEVICEMAP_INFORMATION
;
787 // Information class 24
788 typedef struct _PROCESS_SESSION_INFORMATION
791 } PROCESS_SESSION_INFORMATION
, *PPROCESS_SESSION_INFORMATION
;
793 // thread information
795 // incompatible with MS NT
797 typedef struct _THREAD_BASIC_INFORMATION
800 PVOID TebBaseAddress
; // PNT_TIB (GN)
802 KAFFINITY AffinityMask
;
804 KPRIORITY BasePriority
;
805 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
810 typedef struct _FILE_BASIC_INFORMATION
812 LARGE_INTEGER CreationTime
;
813 LARGE_INTEGER LastAccessTime
;
814 LARGE_INTEGER LastWriteTime
;
815 LARGE_INTEGER ChangeTime
;
816 ULONG FileAttributes
;
817 } FILE_BASIC_INFORMATION
, *PFILE_BASIC_INFORMATION
;
819 typedef struct _FILE_STANDARD_INFORMATION
821 LARGE_INTEGER AllocationSize
;
822 LARGE_INTEGER EndOfFile
;
824 BOOLEAN DeletePending
;
826 } FILE_STANDARD_INFORMATION
, *PFILE_STANDARD_INFORMATION
;
828 typedef struct _FILE_POSITION_INFORMATION
830 LARGE_INTEGER CurrentByteOffset
;
831 } FILE_POSITION_INFORMATION
, *PFILE_POSITION_INFORMATION
;
833 typedef struct _FILE_ALIGNMENT_INFORMATION
835 ULONG AlignmentRequirement
;
836 } FILE_ALIGNMENT_INFORMATION
, *PFILE_ALIGNMENT_INFORMATION
;
838 typedef struct _FILE_DISPOSITION_INFORMATION
840 BOOLEAN DoDeleteFile
;
841 } FILE_DISPOSITION_INFORMATION
, *PFILE_DISPOSITION_INFORMATION
;
843 typedef struct _FILE_END_OF_FILE_INFORMATION
845 LARGE_INTEGER EndOfFile
;
846 } FILE_END_OF_FILE_INFORMATION
, *PFILE_END_OF_FILE_INFORMATION
;
848 typedef struct _FILE_NETWORK_OPEN_INFORMATION
850 LARGE_INTEGER CreationTime
;
851 LARGE_INTEGER LastAccessTime
;
852 LARGE_INTEGER LastWriteTime
;
853 LARGE_INTEGER ChangeTime
;
854 LARGE_INTEGER AllocationSize
;
855 LARGE_INTEGER EndOfFile
;
856 ULONG FileAttributes
;
857 } FILE_NETWORK_OPEN_INFORMATION
, *PFILE_NETWORK_OPEN_INFORMATION
;
859 typedef struct _FILE_FULL_EA_INFORMATION
861 ULONG NextEntryOffset
;
864 USHORT EaValueLength
;
866 } FILE_FULL_EA_INFORMATION
, *PFILE_FULL_EA_INFORMATION
;
869 typedef struct _FILE_EA_INFORMATION
{
871 } FILE_EA_INFORMATION
, *PFILE_EA_INFORMATION
;
874 typedef struct _FILE_GET_EA_INFORMATION
{
875 ULONG NextEntryOffset
;
878 } FILE_GET_EA_INFORMATION
, *PFILE_GET_EA_INFORMATION
;
880 typedef struct _FILE_STREAM_INFORMATION
{
881 ULONG NextEntryOffset
;
882 ULONG StreamNameLength
;
883 LARGE_INTEGER StreamSize
;
884 LARGE_INTEGER StreamAllocationSize
;
886 } FILE_STREAM_INFORMATION
, *PFILE_STREAM_INFORMATION
;
888 typedef struct _FILE_ALLOCATION_INFORMATION
{
889 LARGE_INTEGER AllocationSize
;
890 } FILE_ALLOCATION_INFORMATION
, *PFILE_ALLOCATION_INFORMATION
;
892 typedef struct _FILE_NAME_INFORMATION
{
893 ULONG FileNameLength
;
895 } FILE_NAME_INFORMATION
, *PFILE_NAME_INFORMATION
;
897 typedef struct _FILE_NAMES_INFORMATION
899 ULONG NextEntryOffset
;
901 ULONG FileNameLength
;
903 } FILE_NAMES_INFORMATION
, *PFILE_NAMES_INFORMATION
;
906 typedef struct _FILE_RENAME_INFORMATION
{
909 ULONG FileNameLength
;
911 } FILE_RENAME_INFORMATION
, *PFILE_RENAME_INFORMATION
;
914 typedef struct _FILE_INTERNAL_INFORMATION
{
915 LARGE_INTEGER IndexNumber
;
916 } FILE_INTERNAL_INFORMATION
, *PFILE_INTERNAL_INFORMATION
;
918 typedef struct _FILE_ACCESS_INFORMATION
{
919 ACCESS_MASK AccessFlags
;
920 } FILE_ACCESS_INFORMATION
, *PFILE_ACCESS_INFORMATION
;
923 typedef struct _FILE_MODE_INFORMATION
{
925 } FILE_MODE_INFORMATION
, *PFILE_MODE_INFORMATION
;
928 typedef struct _FILE_PIPE_INFORMATION
{
930 ULONG CompletionMode
;
931 } FILE_PIPE_INFORMATION
, *PFILE_PIPE_INFORMATION
;
933 typedef struct _FILE_PIPE_LOCAL_INFORMATION
{
935 ULONG NamedPipeConfiguration
;
936 ULONG MaximumInstances
;
937 ULONG CurrentInstances
;
939 ULONG ReadDataAvailable
;
941 ULONG WriteQuotaAvailable
;
942 ULONG NamedPipeState
;
944 } FILE_PIPE_LOCAL_INFORMATION
, *PFILE_PIPE_LOCAL_INFORMATION
;
946 typedef struct _FILE_PIPE_REMOTE_INFORMATION
{
947 LARGE_INTEGER CollectDataTime
;
948 ULONG MaximumCollectionCount
;
949 } FILE_PIPE_REMOTE_INFORMATION
, *PFILE_PIPE_REMOTE_INFORMATION
;
951 typedef struct _FILE_MAILSLOT_QUERY_INFORMATION
{
952 ULONG MaxMessageSize
;
953 ULONG Unknown
; /* ?? */
956 LARGE_INTEGER Timeout
;
957 } FILE_MAILSLOT_QUERY_INFORMATION
, *PFILE_MAILSLOT_QUERY_INFORMATION
;
959 typedef struct _FILE_MAILSLOT_SET_INFORMATION
{
960 LARGE_INTEGER Timeout
;
961 } FILE_MAILSLOT_SET_INFORMATION
, *PFILE_MAILSLOT_SET_INFORMATION
;
963 typedef struct _FILE_COMPRESSION_INFORMATION
{
964 LARGE_INTEGER CompressedFileSize
;
965 USHORT CompressionFormat
;
966 UCHAR CompressionUnitShift
;
970 } FILE_COMPRESSION_INFORMATION
, *PFILE_COMPRESSION_INFORMATION
;
972 typedef struct _FILE_COMPLETION_INFORMATION
{ // Information Class 30
973 HANDLE IoCompletionHandle
;
975 } FILE_COMPLETION_INFORMATION
, *PFILE_COMPLETION_INFORMATION
;
977 typedef struct _FILE_ALL_INFORMATION
{
978 FILE_BASIC_INFORMATION BasicInformation
;
979 FILE_STANDARD_INFORMATION StandardInformation
;
980 FILE_INTERNAL_INFORMATION InternalInformation
;
981 FILE_EA_INFORMATION EaInformation
;
982 FILE_ACCESS_INFORMATION AccessInformation
;
983 FILE_POSITION_INFORMATION PositionInformation
;
984 FILE_MODE_INFORMATION ModeInformation
;
985 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
986 FILE_NAME_INFORMATION NameInformation
;
987 } FILE_ALL_INFORMATION
, *PFILE_ALL_INFORMATION
;
990 // file system information structures
992 typedef struct _FILE_FS_DEVICE_INFORMATION
{
993 DEVICE_TYPE DeviceType
;
994 ULONG Characteristics
;
995 } FILE_FS_DEVICE_INFORMATION
, *PFILE_FS_DEVICE_INFORMATION
;
998 typedef struct _FILE_FS_VOLUME_INFORMATION
{
999 TIME VolumeCreationTime
;
1000 ULONG VolumeSerialNumber
;
1001 ULONG VolumeLabelLength
;
1002 BOOLEAN SupportsObjects
;
1003 WCHAR VolumeLabel
[0];
1004 } FILE_FS_VOLUME_INFORMATION
, *PFILE_FS_VOLUME_INFORMATION
;
1006 typedef struct _FILE_FS_SIZE_INFORMATION
{
1007 LARGE_INTEGER TotalAllocationUnits
;
1008 LARGE_INTEGER AvailableAllocationUnits
;
1009 ULONG SectorsPerAllocationUnit
;
1010 ULONG BytesPerSector
;
1011 } FILE_FS_SIZE_INFORMATION
, *PFILE_FS_SIZE_INFORMATION
;
1013 typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
{
1014 ULONG FileSystemAttributes
;
1015 LONG MaximumComponentNameLength
;
1016 ULONG FileSystemNameLength
;
1017 WCHAR FileSystemName
[0];
1018 } FILE_FS_ATTRIBUTE_INFORMATION
, *PFILE_FS_ATTRIBUTE_INFORMATION
;
1021 FileSystemAttributes is one of the following values:
1023 FILE_CASE_SENSITIVE_SEARCH 0x00000001
1024 FILE_CASE_PRESERVED_NAMES 0x00000002
1025 FILE_UNICODE_ON_DISK 0x00000004
1026 FILE_PERSISTENT_ACLS 0x00000008
1027 FILE_FILE_COMPRESSION 0x00000010
1028 FILE_VOLUME_QUOTAS 0x00000020
1029 FILE_VOLUME_IS_COMPRESSED 0x00008000
1031 typedef struct _FILE_FS_LABEL_INFORMATION
{
1032 ULONG VolumeLabelLength
;
1033 WCHAR VolumeLabel
[0];
1034 } FILE_FS_LABEL_INFORMATION
, *PFILE_FS_LABEL_INFORMATION
;
1037 typedef struct _FILE_DIRECTORY_INFORMATION
{
1038 ULONG NextEntryOffset
;
1040 LARGE_INTEGER CreationTime
;
1041 LARGE_INTEGER LastAccessTime
;
1042 LARGE_INTEGER LastWriteTime
;
1043 LARGE_INTEGER ChangeTime
;
1044 LARGE_INTEGER EndOfFile
;
1045 LARGE_INTEGER AllocationSize
;
1046 ULONG FileAttributes
;
1047 ULONG FileNameLength
;
1049 } FILE_DIRECTORY_INFORMATION
, *PFILE_DIRECTORY_INFORMATION
;
1051 typedef struct _FILE_FULL_DIRECTORY_INFORMATION
{
1052 ULONG NextEntryOffset
;
1054 LARGE_INTEGER CreationTime
;
1055 LARGE_INTEGER LastAccessTime
;
1056 LARGE_INTEGER LastWriteTime
;
1057 LARGE_INTEGER ChangeTime
;
1058 LARGE_INTEGER EndOfFile
;
1059 LARGE_INTEGER AllocationSize
;
1060 ULONG FileAttributes
;
1061 ULONG FileNameLength
;
1063 WCHAR FileName
[0]; // variable size
1064 } FILE_FULL_DIRECTORY_INFORMATION
, *PFILE_FULL_DIRECTORY_INFORMATION
,
1065 FILE_FULL_DIR_INFORMATION
, *PFILE_FULL_DIR_INFORMATION
;
1068 typedef struct _FILE_BOTH_DIRECTORY_INFORMATION
{
1069 ULONG NextEntryOffset
;
1071 LARGE_INTEGER CreationTime
;
1072 LARGE_INTEGER LastAccessTime
;
1073 LARGE_INTEGER LastWriteTime
;
1074 LARGE_INTEGER ChangeTime
;
1075 LARGE_INTEGER EndOfFile
;
1076 LARGE_INTEGER AllocationSize
;
1077 ULONG FileAttributes
;
1078 ULONG FileNameLength
;
1080 CHAR ShortNameLength
;
1081 WCHAR ShortName
[12]; // 8.3 name
1083 } FILE_BOTH_DIRECTORY_INFORMATION
, *PFILE_BOTH_DIRECTORY_INFORMATION
,
1084 FILE_BOTH_DIR_INFORMATION
, *PFILE_BOTH_DIR_INFORMATION
;
1087 NotifyFilter / CompletionFilter:
1089 FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
1090 FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
1091 FILE_NOTIFY_CHANGE_NAME 0x00000003
1092 FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
1093 FILE_NOTIFY_CHANGE_SIZE 0x00000008
1094 FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
1095 FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
1096 FILE_NOTIFY_CHANGE_CREATION 0x00000040
1097 FILE_NOTIFY_CHANGE_EA 0x00000080
1098 FILE_NOTIFY_CHANGE_SECURITY 0x00000100
1099 FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
1100 FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
1101 FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
1104 typedef struct _FILE_NOTIFY_INFORMATION
{
1106 ULONG FileNameLength
;
1108 } FILE_NOTIFY_INFORMATION
;
1110 #define FSCTL_GET_VOLUME_BITMAP 0x9006F
1111 #define FSCTL_GET_RETRIEVAL_POINTERS 0x90073
1112 #define FSCTL_MOVE_FILE 0x90074
1114 typedef struct _MAPPING_PAIR
1118 } MAPPING_PAIR
, *PMAPPING_PAIR
;
1120 typedef struct _GET_RETRIEVAL_DESCRIPTOR
1122 ULONG NumberOfPairs
;
1124 MAPPING_PAIR Pair
[0]; // variable size
1125 } GET_RETRIEVAL_DESCRIPTOR
, *PGET_RETRIEVAL_DESCRIPTOR
;
1127 typedef struct _MOVEFILE_DESCRIPTOR
1131 LARGE_INTEGER StartVcn
;
1132 LARGE_INTEGER TargetLcn
;
1135 } MOVEFILE_DESCRIPTOR
, *PMOVEFILE_DESCRIPTOR
;
1137 typedef struct _SECTION_BASIC_INFORMATION
1142 } SECTION_BASIC_INFORMATION
, *PSECTION_BASIC_INFORMATION
;
1144 typedef enum _SECTION_INFORMATION_CLASS
1146 SectionBasicInformation
,
1147 SectionImageInformation
,
1148 } SECTION_INFORMATION_CLASS
;
1152 typedef enum SHUTDOWN_ACTION_TAG
{
1158 typedef enum _IO_COMPLETION_INFORMATION_CLASS
{
1159 IoCompletionBasicInformation
1160 } IO_COMPLETION_INFORMATION_CLASS
;
1162 typedef struct _IO_COMPLETION_BASIC_INFORMATION
{
1164 } IO_COMPLETION_BASIC_INFORMATION
, *PIO_COMPLETION_BASIC_INFORMATION
;
1166 #else /* __USE_W32API */
1168 #define DebugDbgLoadSymbols ((DEBUG_CONTROL_CODE)0xffffffff)
1170 #endif /* __USE_W32API */
1173 #include <ddk/ntddk.h>
1174 #endif /* __USE_W32API */
1175 #ifndef NtCurrentProcess
1176 #define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
1177 #endif /* NtCurrentProcess */
1178 #ifndef NtCurrentThread
1179 #define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
1180 #endif /* NtCurrentThread */
1184 extern ULONG EXPORTED NtBuildNumber
;
1186 extern ULONG IMPORTED NtBuildNumber
;
1189 /* Microsoft-style declarations */
1191 extern EXPORTED ULONG NtBuildNumber
;
1193 extern IMPORTED ULONG NtBuildNumber
;
1195 #endif /* __GNUC__ */
1198 // event access mask
1200 #define EVENT_READ_ACCESS 1
1201 #define EVENT_WRITE_ACCESS 2
1203 //process query / set information class
1205 #define ProcessBasicInformation 0
1206 #define ProcessQuotaLimits 1
1207 #define ProcessIoCounters 2
1208 #define ProcessVmCounters 3
1209 #define ProcessTimes 4
1210 #define ProcessBasePriority 5
1211 #define ProcessRaisePriority 6
1212 #define ProcessDebugPort 7
1213 #define ProcessExceptionPort 8
1214 #define ProcessAccessToken 9
1215 #define ProcessLdtInformation 10
1216 #define ProcessLdtSize 11
1217 #define ProcessDefaultHardErrorMode 12
1218 #define ProcessIoPortHandlers 13
1219 #define ProcessPooledUsageAndLimits 14
1220 #define ProcessWorkingSetWatch 15
1221 #define ProcessUserModeIOPL 16
1222 #define ProcessEnableAlignmentFaultFixup 17
1223 #define ProcessPriorityClass 18
1224 #define ProcessWx86Information 19
1225 #define ProcessHandleCount 20
1226 #define ProcessAffinityMask 21
1227 #define ProcessPriorityBoost 22
1228 #define ProcessDeviceMap 23
1229 #define ProcessSessionInformation 24
1230 #define ProcessForegroundInformation 25
1231 #define ProcessWow64Information 26
1232 /* ReactOS private. */
1233 #define ProcessImageFileName 27
1234 #define MaxProcessInfoClass 28
1237 * thread query / set information class
1239 #define ThreadBasicInformation 0
1240 #define ThreadTimes 1
1241 #define ThreadPriority 2
1242 #define ThreadBasePriority 3
1243 #define ThreadAffinityMask 4
1244 #define ThreadImpersonationToken 5
1245 #define ThreadDescriptorTableEntry 6
1246 #define ThreadEnableAlignmentFaultFixup 7
1247 #define ThreadEventPair 8
1248 #define ThreadQuerySetWin32StartAddress 9
1249 #define ThreadZeroTlsCell 10
1250 #define ThreadPerformanceCount 11
1251 #define ThreadAmILastThread 12
1252 #define ThreadIdealProcessor 13
1253 #define ThreadPriorityBoost 14
1254 #define ThreadSetTlsArrayAddress 15
1255 #define ThreadIsIoPending 16
1256 #define ThreadHideFromDebugger 17
1257 #define MaxThreadInfoClass 17
1260 typedef struct _ATOM_TABLE_INFORMATION
1262 ULONG NumberOfAtoms
;
1264 } ATOM_TABLE_INFORMATION
, *PATOM_TABLE_INFORMATION
;
1267 // mutant information
1269 typedef enum _MUTANT_INFORMATION_CLASS
1271 MutantBasicInformation
= 0
1272 } MUTANT_INFORMATION_CLASS
;
1274 typedef struct _MUTANT_BASIC_INFORMATION
1279 } MUTANT_BASIC_INFORMATION
, *PMUTANT_BASIC_INFORMATION
;
1282 // SystemTimeOfDayInformation (3)
1284 struct _SYSTEM_TIMEOFDAY_INFORMATION
1286 LARGE_INTEGER BootTime
;
1287 LARGE_INTEGER CurrentTime
;
1288 LARGE_INTEGER TimeZoneBias
;
1291 } SYSTEM_TIMEOFDAY_INFORMATION
, *PSYSTEM_TIMEOFDAY_INFORMATION
;
1293 // SystemPathInformation (4)
1296 struct _SYSTEM_PATH_INFORMATION
1300 } SYSTEM_PATH_INFORMATION
, * PSYSTEM_PATH_INFORMATION
;
1302 // SystemProcessInformation (5)
1304 #ifndef __USE_W32API
1306 typedef struct _SYSTEM_THREADS
{
1307 LARGE_INTEGER KernelTime
;
1308 LARGE_INTEGER UserTime
;
1309 LARGE_INTEGER CreateTime
;
1314 KPRIORITY BasePriority
;
1315 ULONG ContextSwitchCount
;
1317 KWAIT_REASON WaitReason
;
1318 } SYSTEM_THREADS
, *PSYSTEM_THREADS
;
1320 #endif /* __USE_W32API */
1322 typedef struct _SYSTEM_PROCESSES_NT4
1324 SIZE_T NextEntryDelta
;
1330 UNICODE_STRING ProcessName
;
1331 KPRIORITY BasePriority
;
1333 ULONG InheritedFromProcessId
;
1336 VM_COUNTERS VmCounters
;
1337 SYSTEM_THREADS Threads
[ANYSIZE_ARRAY
];
1338 } SYSTEM_PROCESSES_NT4
, *PSYSTEM_PROCESSES_NT4
;
1340 typedef struct _SYSTEM_PROCESSES_NT5
1342 SIZE_T NextEntryDelta
;
1348 UNICODE_STRING ProcessName
;
1349 KPRIORITY BasePriority
;
1351 ULONG InheritedFromProcessId
;
1354 VM_COUNTERS VmCounters
;
1355 IO_COUNTERS IoCounters
;
1356 SYSTEM_THREADS Threads
[ANYSIZE_ARRAY
];
1357 } SYSTEM_PROCESSES_NT5
, *PSYSTEM_PROCESSES_NT5
;
1359 #ifndef __USE_W32API
1361 /* Not sure. What version are we emulating? */
1362 typedef SYSTEM_PROCESSES_NT5 SYSTEM_PROCESSES
, *PSYSTEM_PROCESSES
;
1364 #endif /* __USE_W32API */
1366 // SystemCallCountInformation (6)
1368 struct _SYSTEM_SDT_INFORMATION
1371 ULONG NumberOfSystemServiceTables
;
1372 ULONG NumberOfServices
[1];
1373 ULONG ServiceCounters
[1];
1375 } SYSTEM_SDT_INFORMATION
, *PSYSTEM_SDT_INFORMATION
;
1377 // SystemDeviceInformation (7)
1379 struct _SYSTEM_DEVICE_INFORMATION
1381 ULONG NumberOfDisks
;
1382 ULONG NumberOfFloppies
;
1383 ULONG NumberOfCdRoms
;
1384 ULONG NumberOfTapes
;
1385 ULONG NumberOfSerialPorts
;
1386 ULONG NumberOfParallelPorts
;
1387 } SYSTEM_DEVICE_INFORMATION
, *PSYSTEM_DEVICE_INFORMATION
;
1389 // SystemProcessorPerformanceInformation (8)
1390 // (one per processor in the system)
1392 struct _SYSTEM_PROCESSORTIME_INFO
1394 TIME TotalProcessorRunTime
;
1395 TIME TotalProcessorTime
;
1396 TIME TotalProcessorUserTime
;
1398 TIME TotalInterruptTime
;
1399 ULONG TotalInterrupts
;
1402 } SYSTEM_PROCESSORTIME_INFO
, *PSYSTEM_PROCESSORTIME_INFO
;
1404 // SystemFlagsInformation (9)
1406 struct _SYSTEM_FLAGS_INFORMATION
1410 } SYSTEM_FLAGS_INFORMATION
, * PSYSTEM_FLAGS_INFORMATION
;
1412 #define FLG_STOP_ON_EXCEPTION 0x00000001
1413 #define FLG_SHOW_LDR_SNAPS 0x00000002
1414 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
1415 #define FLG_STOP_ON_HANG_GUI 0x00000008
1416 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
1417 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
1418 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
1419 #define FLG_HEAP_VALIDATE_ALL 0x00000080
1420 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
1421 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
1422 #define FLG_POOL_ENABLE_TAGGING 0x00000400
1423 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
1424 #define FLG_USER_STACK_TRACE_DB 0x00001000
1425 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
1426 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
1427 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
1428 #define FLG_IGNORE_DEBUG_PRIV 0x00010000
1429 #define FLG_ENABLE_CSRDEBUG 0x00020000
1430 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
1431 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
1432 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
1433 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
1434 #define FLG_ENABLE_CLOSE_EXCEPTION 0x00400000
1435 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
1436 #define FLG_UNKNOWN_01000000 0x01000000
1437 #define FLG_UNKNOWN_02000000 0x02000000
1438 #define FLG_UNKNOWN_04000000 0x04000000
1439 #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000
1440 #define FLG_UNKNOWN_10000000 0x10000000
1441 #define FLG_UNKNOWN_20000000 0x20000000
1442 #define FLG_UNKNOWN_40000000 0x40000000
1443 #define FLG_UNKNOWN_80000000 0x80000000
1445 // SystemCallTimeInformation (10)
1448 // SystemLocksInformation (12)
1450 struct _SYSTEM_RESOURCE_LOCK_ENTRY
1452 ULONG ResourceAddress
;
1456 ULONG ContentionCount
;
1458 ULONG NumberOfSharedWaiters
;
1459 ULONG NumberOfExclusiveWaiters
;
1461 } SYSTEM_RESOURCE_LOCK_ENTRY
, *PSYSTEM_RESOURCE_LOCK_ENTRY
;
1464 struct _SYSTEM_RESOURCE_LOCK_INFO
1467 SYSTEM_RESOURCE_LOCK_ENTRY Lock
[1];
1469 } SYSTEM_RESOURCE_LOCK_INFO
, *PSYSTEM_RESOURCE_LOCK_INFO
;
1471 // SystemInformation13 (13)
1474 // SystemInformation14 (14)
1477 // SystemInformation15 (15)
1480 // SystemInstructionEmulationInfo (19)
1482 struct _SYSTEM_VDM_INFORMATION
1484 ULONG VdmSegmentNotPresentCount
;
1486 ULONG VdmESPREFIXCount
;
1487 ULONG VdmCSPREFIXCount
;
1488 ULONG VdmSSPREFIXCount
;
1489 ULONG VdmDSPREFIXCount
;
1490 ULONG VdmFSPREFIXCount
;
1491 ULONG VdmGSPREFIXCount
;
1492 ULONG VdmOPER32PREFIXCount
;
1493 ULONG VdmADDR32PREFIXCount
;
1495 ULONG VdmINSWV86Count
;
1496 ULONG VdmOUTSBCount
;
1497 ULONG VdmOUTSWCount
;
1498 ULONG VdmPUSHFCount
;
1500 ULONG VdmINTNNCount
;
1503 ULONG VdmINBIMMCount
;
1504 ULONG VdmINWIMMCount
;
1505 ULONG VdmOUTBIMMCount
;
1506 ULONG VdmOUTWIMMCount
;
1511 ULONG VdmLOCKPREFIXCount
;
1512 ULONG VdmREPNEPREFIXCount
;
1513 ULONG VdmREPPREFIXCount
;
1519 } SYSTEM_VDM_INFORMATION
, *PSYSTEM_VDM_INFORMATION
;
1521 // SystemInformation20 (20)
1524 // SystemPoolTagInformation (22)
1525 // found by Klaus P. Gerlicher
1526 // (implemented only in checked builds)
1528 struct _POOL_TAG_STATS
1530 ULONG AllocationCount
;
1537 struct _SYSTEM_POOL_TAG_ENTRY
1540 POOL_TAG_STATS Paged
;
1541 POOL_TAG_STATS NonPaged
;
1543 } SYSTEM_POOL_TAG_ENTRY
, * PSYSTEM_POOL_TAG_ENTRY
;
1546 struct _SYSTEM_POOL_TAG_INFO
1549 SYSTEM_POOL_TAG_ENTRY PoolEntry
[1];
1551 } SYSTEM_POOL_TAG_INFO
, *PSYSTEM_POOL_TAG_INFO
;
1553 // SystemProcessorScheduleInfo (23)
1555 struct _SYSTEM_PROCESSOR_SCHEDULE_INFO
1557 ULONG nContextSwitches
;
1560 ULONG TimerResolution
;
1564 } SYSTEM_PROCESSOR_SCHEDULE_INFO
, *PSYSTEM_PROCESSOR_SCHEDULE_INFO
;
1566 // SystemInformation25 (25)
1569 // SystemProcessorFaultCountInfo (33)
1571 struct _SYSTEM_PROCESSOR_FAULT_INFO
1573 ULONG nAlignmentFixup
;
1574 ULONG nExceptionDispatches
;
1575 ULONG nFloatingEmulation
;
1578 } SYSTEM_PROCESSOR_FAULT_INFO
, *PSYSTEM_PROCESSOR_FAULT_INFO
;
1580 // SystemCrashDumpStateInfo (34)
1583 // SystemDebuggerInformation (35)
1585 struct _SYSTEM_DEBUGGER_INFO
1587 BOOLEAN KdDebuggerEnabled
;
1588 BOOLEAN KdDebuggerPresent
;
1590 } SYSTEM_DEBUGGER_INFO
, *PSYSTEM_DEBUGGER_INFO
;
1592 // SystemInformation36 (36)
1595 // SystemQuotaInformation (37)
1597 struct _SYSTEM_QUOTA_INFORMATION
1599 ULONG CmpGlobalQuota
;
1600 ULONG CmpGlobalQuotaUsed
;
1601 ULONG MmSizeofPagedPoolInBytes
;
1603 } SYSTEM_QUOTA_INFORMATION
, *PSYSTEM_QUOTA_INFORMATION
;
1608 // SystemVerifierInformation (51)
1611 // SystemAddVerifier (52)
1619 // number of wait objects
1621 #define THREAD_WAIT_OBJECTS 3
1622 //#define MAXIMUM_WAIT_OBJECTS 64
1624 // object type access rights
1626 #define OBJECT_TYPE_CREATE 0x0001
1627 #define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1629 // directory access rights
1631 #ifndef __USE_W32API
1632 #define DIRECTORY_QUERY 0x0001
1633 #define DIRECTORY_TRAVERSE 0x0002
1634 #define DIRECTORY_CREATE_OBJECT 0x0004
1635 #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
1638 #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
1640 // symbolic link access rights
1642 #define SYMBOLIC_LINK_QUERY 0x0001
1643 #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1646 /* object information class */
1648 #ifndef __USE_W32API
1650 typedef enum _OBJECT_INFORMATION_CLASS
1652 ObjectBasicInformation
,
1653 ObjectNameInformation
,
1654 ObjectTypeInformation
,
1655 ObjectAllTypesInformation
,
1656 ObjectHandleInformation
1657 } OBJECT_INFORMATION_CLASS
;
1660 // directory information
1662 typedef struct _DIRECTORY_BASIC_INFORMATION
1664 UNICODE_STRING ObjectName
;
1665 UNICODE_STRING ObjectTypeName
; // Directory, Device ...
1666 } DIRECTORY_BASIC_INFORMATION
, *PDIRECTORY_BASIC_INFORMATION
;
1669 // power information levels
1670 typedef enum _POWER_INFORMATION_LEVEL
{
1671 SystemPowerPolicyAc
,
1672 SystemPowerPolicyDc
,
1673 VerifySystemPolicyAc
,
1674 VerifySystemPolicyDc
,
1675 SystemPowerCapabilities
,
1677 SystemPowerStateHandler
,
1678 ProcessorStateHandler
,
1679 SystemPowerPolicyCurrent
,
1680 AdministratorPowerPolicy
,
1681 SystemReserveHiberFile
,
1682 ProcessorInformation
,
1683 SystemPowerInformationData
1684 } POWER_INFORMATION_LEVEL
;
1686 #endif /* __USE_W32API */
1689 Action is one of the following values:
1691 FILE_ACTION_ADDED 0x00000001
1692 FILE_ACTION_REMOVED 0x00000002
1693 FILE_ACTION_MODIFIED 0x00000003
1694 FILE_ACTION_RENAMED_OLD_NAME 0x00000004
1695 FILE_ACTION_RENAMED_NEW_NAME 0x00000005
1696 FILE_ACTION_ADDED_STREAM 0x00000006
1697 FILE_ACTION_REMOVED_STREAM 0x00000007
1698 FILE_ACTION_MODIFIED_STREAM 0x00000008
1703 // File System Control commands ( related to defragging )
1705 #define FSCTL_READ_MFT_RECORD 0x90068 // NTFS only
1707 typedef struct _BITMAP_DESCRIPTOR
1710 ULONGLONG ClustersToEndOfVol
;
1711 BYTE Map
[0]; // variable size
1712 } BITMAP_DESCRIPTOR
, *PBITMAP_DESCRIPTOR
;
1715 //typedef enum _TIMER_TYPE
1717 // NotificationTimer,
1718 // SynchronizationTimer
1721 typedef struct _TIMER_BASIC_INFORMATION
1723 LARGE_INTEGER TimeRemaining
;
1724 BOOLEAN SignalState
;
1725 } TIMER_BASIC_INFORMATION
, *PTIMER_BASIC_INFORMATION
;
1727 typedef enum _TIMER_INFORMATION_CLASS
1729 TimerBasicInformation
1730 } TIMER_INFORMATION_CLASS
;
1732 #ifndef __USE_W32API
1736 UNUSED_MSG_TYPE
= 0x0, /* ReactOS */
1737 LPC_NEW_MESSAGE
= 0x0, /* NT */
1741 LPC_LOST_REPLY
= 0x4,
1742 LPC_PORT_CLOSED
= 0x5,
1743 LPC_CLIENT_DIED
= 0x6,
1744 LPC_EXCEPTION
= 0x7,
1745 LPC_DEBUG_EVENT
= 0x8,
1746 LPC_ERROR_EVENT
= 0x9,
1747 LPC_CONNECTION_REQUEST
= 0xa,
1748 LPC_CONNECTION_REFUSED
= 0xb
1750 } LPC_TYPE
, *PLPC_TYPE
;
1752 typedef struct _LPC_SECTION_WRITE
1755 HANDLE SectionHandle
;
1756 ULONG SectionOffset
;
1759 PVOID TargetViewBase
;
1760 } LPC_SECTION_WRITE
, *PLPC_SECTION_WRITE
;
1762 typedef struct _LPC_SECTION_READ
1767 } LPC_SECTION_READ
, *PLPC_SECTION_READ
;
1769 typedef struct _LPC_MESSAGE
1774 USHORT VirtualRangesOffset
;
1777 ULONG SectionSize
; /* CallbackID */
1778 } LPC_MESSAGE
, *PLPC_MESSAGE
;
1780 #define LPC_MESSAGE_BASE_SIZE sizeof(LPC_MESSAGE)
1782 #define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
1784 #define PORT_MAX_DATA_LENGTH 0x104
1785 #define PORT_MAX_MESSAGE_LENGTH 0x148
1787 #endif /* __USE_W32API */
1789 #define MAX_MESSAGE_DATA (0x130)
1791 typedef struct _LPC_MAX_MESSAGE
1794 BYTE Data
[MAX_MESSAGE_DATA
];
1795 } LPC_MAX_MESSAGE
, *PLPC_MAX_MESSAGE
;
1797 typedef struct _LPC_PORT_BASIC_INFORMATION
1814 } LPC_PORT_BASIC_INFORMATION
, * PLPC_PORT_BASIC_INFORMATION
;
1817 typedef struct _KINTERRUPT
1820 KAFFINITY ProcessorEnableMask
;
1821 PKSPIN_LOCK IrqLock
;
1823 BOOLEAN FloatingSave
;
1824 PKSERVICE_ROUTINE ServiceRoutine
;
1825 PVOID ServiceContext
;
1830 #ifndef __USE_W32API
1832 typedef struct _KINTERRUPT
*PKINTERRUPT
;
1834 typedef VOID STDCALL_FUNC
1835 (*PTIMER_APC_ROUTINE
)(
1836 IN PVOID TimerContext
,
1837 IN ULONG TimerLowValue
,
1838 IN LONG TimerHighValue
);
1840 #endif /* __USE_W32API */
1842 /* BEGIN REACTOS ONLY */
1844 typedef enum _TRAVERSE_METHOD
{
1845 TraverseMethodPreorder
,
1846 TraverseMethodInorder
,
1847 TraverseMethodPostorder
1850 typedef LONG STDCALL_FUNC
1851 (*PKEY_COMPARATOR
)(IN PVOID Key1
,
1854 typedef BOOLEAN STDCALL_FUNC
1855 (*PTRAVERSE_ROUTINE
)(IN PVOID Context
,
1859 struct _BINARY_TREE_NODE
;
1861 typedef struct _BINARY_TREE
1863 struct _BINARY_TREE_NODE
* RootNode
;
1864 PKEY_COMPARATOR Compare
;
1865 BOOLEAN UseNonPagedPool
;
1867 NPAGED_LOOKASIDE_LIST NonPaged
;
1868 PAGED_LOOKASIDE_LIST Paged
;
1871 KSPIN_LOCK NonPaged
;
1874 } BINARY_TREE
, *PBINARY_TREE
;
1877 struct _SPLAY_TREE_NODE
;
1879 typedef struct _SPLAY_TREE
1881 struct _SPLAY_TREE_NODE
* RootNode
;
1882 PKEY_COMPARATOR Compare
;
1884 BOOLEAN UseNonPagedPool
;
1886 NPAGED_LOOKASIDE_LIST NonPaged
;
1887 PAGED_LOOKASIDE_LIST Paged
;
1890 KSPIN_LOCK NonPaged
;
1894 } SPLAY_TREE
, *PSPLAY_TREE
;
1897 typedef struct _HASH_TABLE
1899 // Size of hash table in number of bits
1900 ULONG HashTableSize
;
1902 // Use non-paged pool memory?
1903 BOOLEAN UseNonPagedPool
;
1905 // Lock for this structure
1907 KSPIN_LOCK NonPaged
;
1911 // Pointer to array of hash buckets with splay trees
1912 PSPLAY_TREE HashTrees
;
1913 } HASH_TABLE
, *PHASH_TABLE
;
1916 /* END REACTOS ONLY */