4 * Windows NT Native API
6 * Most structures in this file is obtained from Windows NT/2000 Native API
7 * Reference by Gary Nebbett, ISBN 1578701996.
9 * This file is part of the w32api package.
12 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
14 * THIS SOFTWARE IS NOT COPYRIGHTED
16 * This source code is offered for use in the public domain. You may
17 * use, modify or distribute it freely.
19 * This code is distributed in the hope that it will be useful but
20 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
21 * DISCLAIMED. This includes but is not limited to warranties of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
30 #pragma GCC system_header
42 typedef struct _PEB
*PPEB
;
44 /* FIXME: Unknown definitions */
45 typedef PVOID POBJECT_TYPE_LIST
;
46 typedef PVOID PEXECUTION_STATE
;
48 typedef unsigned short LANGID
, *PLANGID
;
50 #ifndef NtCurrentProcess
51 #define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
52 #endif /* NtCurrentProcess */
53 #ifndef NtCurrentThread
54 #define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
55 #endif /* NtCurrentThread */
57 /* System information and control */
59 typedef enum _SYSTEM_INFORMATION_CLASS
{
60 SystemInformationClassMin
= 0,
61 SystemBasicInformation
= 0,
62 SystemProcessorInformation
= 1,
63 SystemPerformanceInformation
= 2,
64 SystemTimeOfDayInformation
= 3,
65 SystemPathInformation
= 4,
66 SystemNotImplemented1
= 4,
67 SystemProcessInformation
= 5,
68 SystemProcessesAndThreadsInformation
= 5,
69 SystemCallCountInfoInformation
= 6,
71 SystemDeviceInformation
= 7,
72 SystemConfigurationInformation
= 7,
73 SystemProcessorPerformanceInformation
= 8,
74 SystemProcessorTimes
= 8,
75 SystemFlagsInformation
= 9,
77 SystemCallTimeInformation
= 10,
78 SystemNotImplemented2
= 10,
79 SystemModuleInformation
= 11,
80 SystemLocksInformation
= 12,
81 SystemLockInformation
= 12,
82 SystemStackTraceInformation
= 13,
83 SystemNotImplemented3
= 13,
84 SystemPagedPoolInformation
= 14,
85 SystemNotImplemented4
= 14,
86 SystemNonPagedPoolInformation
= 15,
87 SystemNotImplemented5
= 15,
88 SystemHandleInformation
= 16,
89 SystemObjectInformation
= 17,
90 SystemPageFileInformation
= 18,
91 SystemPagefileInformation
= 18,
92 SystemVdmInstemulInformation
= 19,
93 SystemInstructionEmulationCounts
= 19,
94 SystemVdmBopInformation
= 20,
95 SystemInvalidInfoClass1
= 20,
96 SystemFileCacheInformation
= 21,
97 SystemCacheInformation
= 21,
98 SystemPoolTagInformation
= 22,
99 SystemInterruptInformation
= 23,
100 SystemProcessorStatistics
= 23,
101 SystemDpcBehaviourInformation
= 24,
102 SystemDpcInformation
= 24,
103 SystemFullMemoryInformation
= 25,
104 SystemNotImplemented6
= 25,
105 SystemLoadImage
= 26,
106 SystemUnloadImage
= 27,
107 SystemTimeAdjustmentInformation
= 28,
108 SystemTimeAdjustment
= 28,
109 SystemSummaryMemoryInformation
= 29,
110 SystemNotImplemented7
= 29,
111 SystemNextEventIdInformation
= 30,
112 SystemNotImplemented8
= 30,
113 SystemEventIdsInformation
= 31,
114 SystemNotImplemented9
= 31,
115 SystemCrashDumpInformation
= 32,
116 SystemExceptionInformation
= 33,
117 SystemCrashDumpStateInformation
= 34,
118 SystemKernelDebuggerInformation
= 35,
119 SystemContextSwitchInformation
= 36,
120 SystemRegistryQuotaInformation
= 37,
121 SystemLoadAndCallImage
= 38,
122 SystemPrioritySeparation
= 39,
123 SystemPlugPlayBusInformation
= 40,
124 SystemNotImplemented10
= 40,
125 SystemDockInformation
= 41,
126 SystemNotImplemented11
= 41,
127 /* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */
128 SystemInvalidInfoClass2
= 42,
129 SystemProcessorSpeedInformation
= 43,
130 SystemInvalidInfoClass3
= 43,
131 SystemCurrentTimeZoneInformation
= 44,
132 SystemTimeZoneInformation
= 44,
133 SystemLookasideInformation
= 45,
134 SystemSetTimeSlipEvent
= 46,
135 SystemCreateSession
= 47,
136 SystemDeleteSession
= 48,
137 SystemInvalidInfoClass4
= 49,
138 SystemRangeStartInformation
= 50,
139 SystemVerifierInformation
= 51,
140 SystemAddVerifier
= 52,
141 SystemSessionProcessesInformation
= 53,
142 SystemInformationClassMax
143 } SYSTEM_INFORMATION_CLASS
;
145 typedef struct _SYSTEM_BASIC_INFORMATION
{
147 ULONG MaximumIncrement
;
148 ULONG PhysicalPageSize
;
149 ULONG NumberOfPhysicalPages
;
150 ULONG LowestPhysicalPage
;
151 ULONG HighestPhysicalPage
;
152 ULONG AllocationGranularity
;
153 ULONG LowestUserAddress
;
154 ULONG HighestUserAddress
;
155 ULONG ActiveProcessors
;
156 UCHAR NumberProcessors
;
157 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
159 typedef struct _SYSTEM_PROCESSOR_INFORMATION
{
160 USHORT ProcessorArchitecture
;
161 USHORT ProcessorLevel
;
162 USHORT ProcessorRevision
;
165 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
167 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
168 LARGE_INTEGER IdleTime
;
169 LARGE_INTEGER ReadTransferCount
;
170 LARGE_INTEGER WriteTransferCount
;
171 LARGE_INTEGER OtherTransferCount
;
172 ULONG ReadOperationCount
;
173 ULONG WriteOperationCount
;
174 ULONG OtherOperationCount
;
175 ULONG AvailablePages
;
176 ULONG TotalCommittedPages
;
177 ULONG TotalCommitLimit
;
178 ULONG PeakCommitment
;
180 ULONG WriteCopyFaults
;
181 ULONG TransitionFaults
;
182 ULONG CacheTransitionFaults
;
183 ULONG DemandZeroFaults
;
188 ULONG PagefilePagesWritten
;
189 ULONG PagefilePageWriteIos
;
190 ULONG MappedFilePagesWritten
;
191 ULONG MappedFilePageWriteIos
;
192 ULONG PagedPoolUsage
;
193 ULONG NonPagedPoolUsage
;
194 ULONG PagedPoolAllocs
;
195 ULONG PagedPoolFrees
;
196 ULONG NonPagedPoolAllocs
;
197 ULONG NonPagedPoolFrees
;
198 ULONG TotalFreeSystemPtes
;
199 ULONG SystemCodePage
;
200 ULONG TotalSystemDriverPages
;
201 ULONG TotalSystemCodePages
;
202 ULONG SmallNonPagedLookasideListAllocateHits
;
203 ULONG SmallPagedLookasideListAllocateHits
;
205 ULONG MmSystemCachePage
;
207 ULONG SystemDriverPage
;
208 ULONG FastReadNoWait
;
210 ULONG FastReadResourceMiss
;
211 ULONG FastReadNotPossible
;
212 ULONG FastMdlReadNoWait
;
213 ULONG FastMdlReadWait
;
214 ULONG FastMdlReadResourceMiss
;
215 ULONG FastMdlReadNotPossible
;
218 ULONG MapDataNoWaitMiss
;
219 ULONG MapDataWaitMiss
;
220 ULONG PinMappedDataCount
;
223 ULONG PinReadNoWaitMiss
;
224 ULONG PinReadWaitMiss
;
225 ULONG CopyReadNoWait
;
227 ULONG CopyReadNoWaitMiss
;
228 ULONG CopyReadWaitMiss
;
231 ULONG MdlReadNoWaitMiss
;
232 ULONG MdlReadWaitMiss
;
235 ULONG LazyWritePages
;
238 ULONG ContextSwitches
;
239 ULONG FirstLevelTbFills
;
240 ULONG SecondLevelTbFills
;
242 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
244 typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION
{
245 LARGE_INTEGER BootTime
;
246 LARGE_INTEGER CurrentTime
;
247 LARGE_INTEGER TimeZoneBias
;
248 ULONG CurrentTimeZoneId
;
249 } SYSTEM_TIME_OF_DAY_INFORMATION
, *PSYSTEM_TIME_OF_DAY_INFORMATION
;
251 typedef enum _THREAD_STATE
{
262 typedef struct _SYSTEM_CALLS_INFORMATION
{
264 ULONG NumberOfDescriptorTables
;
265 ULONG NumberOfRoutinesInTable
[1];
266 ULONG CallCounts
[ANYSIZE_ARRAY
];
267 } SYSTEM_CALLS_INFORMATION
, *PSYSTEM_CALLS_INFORMATION
;
269 typedef struct _SYSTEM_CONFIGURATION_INFORMATION
{
276 } SYSTEM_CONFIGURATION_INFORMATION
, *PSYSTEM_CONFIGURATION_INFORMATION
;
278 typedef struct _SYSTEM_PROCESSOR_TIMES
{
279 LARGE_INTEGER IdleTime
;
280 LARGE_INTEGER KernelTime
;
281 LARGE_INTEGER UserTime
;
282 LARGE_INTEGER DpcTime
;
283 LARGE_INTEGER InterruptTime
;
284 ULONG InterruptCount
;
285 } SYSTEM_PROCESSOR_TIMES
, *PSYSTEM_PROCESSOR_TIMES
;
287 /* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */
288 #define FLG_STOP_ON_EXCEPTION 0x00000001
289 #define FLG_SHOW_LDR_SNAPS 0x00000002
290 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
291 #define FLG_STOP_ON_HUNG_GUI 0x00000008
292 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
293 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
294 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
295 #define FLG_HEAP_VALIDATE_ALL 0x00000080
296 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
297 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
298 #define FLG_POOL_ENABLE_TAGGING 0x00000400
299 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
300 #define FLG_USER_STACK_TRACE_DB 0x00001000
301 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
302 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
303 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
304 #define FLG_IGNORE_DEBUG_PRIV 0x00010000
305 #define FLG_ENABLE_CSRDEBUG 0x00020000
306 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
307 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
308 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
309 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
310 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
311 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
312 #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000
314 typedef struct _SYSTEM_GLOBAL_FLAG
{
316 } SYSTEM_GLOBAL_FLAG
, *PSYSTEM_GLOBAL_FLAG
;
318 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
{
325 /* Length of module name not including the path, this
326 field contains valid value only for NTOSKRNL module */
331 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
333 typedef struct _SYSTEM_MODULE_INFORMATION
{
335 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
336 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
338 typedef struct _SYSTEM_LOCK_INFORMATION
{
342 ULONG ExclusiveOwnerThreadId
;
344 ULONG ContentionCount
;
346 ULONG NumberOfSharedWaiters
;
347 ULONG NumberOfExclusiveWaiters
;
348 } SYSTEM_LOCK_INFORMATION
, *PSYSTEM_LOCK_INFORMATION
;
350 /*SYSTEM_HANDLE_INFORMATION.Flags cosntants */
351 #define PROTECT_FROM_CLOSE 0x01
354 typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO
{
355 USHORT UniqueProcessId
;
356 USHORT CreatorBackTraceIndex
;
357 UCHAR ObjectTypeIndex
;
358 UCHAR HandleAttributes
;
362 } SYSTEM_HANDLE_TABLE_ENTRY_INFO
, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO
;
364 typedef struct _SYSTEM_HANDLE_INFORMATION
{
365 ULONG NumberOfHandles
;
366 SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles
[1];
368 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
370 typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION
{
371 ULONG NextEntryOffset
;
375 ULONG InvalidAttributes
;
376 GENERIC_MAPPING GenericMapping
;
377 ACCESS_MASK ValidAccessMask
;
381 } SYSTEM_OBJECT_TYPE_INFORMATION
, *PSYSTEM_OBJECT_TYPE_INFORMATION
;
383 /* SYSTEM_OBJECT_INFORMATION.Flags constants */
384 #define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY 0x40
385 #define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20
386 #define FLG_SYSOBJINFO_PERMANENT 0x10
387 #define FLG_SYSOBJINFO_EXCLUSIVE 0x08
388 #define FLG_SYSOBJINFO_CREATOR_INFO 0x04
389 #define FLG_SYSOBJINFO_KERNEL_MODE 0x02
391 typedef struct _SYSTEM_OBJECT_INFORMATION
{
392 ULONG NextEntryOffset
;
394 ULONG CreatorProcessId
;
399 ULONG PagedPoolUsage
;
400 ULONG NonPagedPoolUsage
;
401 ULONG ExclusiveProcessId
;
402 PSECURITY_DESCRIPTOR SecurityDescriptor
;
404 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
406 typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
407 ULONG NextEntryOffset
;
411 UNICODE_STRING PageFileName
;
412 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
414 typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION
{
415 ULONG SegmentNotPresent
;
448 ULONG GenericInvalidOpcode
;
449 } SYSTEM_INSTRUCTION_EMULATION_INFORMATION
, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION
;
451 typedef struct _SYSTEM_CACHE_INFORMATION
{
454 ULONG PageFaultCount
;
455 ULONG MinimumWorkingSet
;
456 ULONG MaximumWorkingSet
;
458 } SYSTEM_CACHE_INFORMATION
, *PSYSTEM_CACHE_INFORMATION
;
460 typedef struct _SYSTEM_POOL_TAG_INFORMATION
{
462 ULONG PagedPoolAllocs
;
463 ULONG PagedPoolFrees
;
464 ULONG PagedPoolUsage
;
465 ULONG NonPagedPoolAllocs
;
466 ULONG NonPagedPoolFrees
;
467 ULONG NonPagedPoolUsage
;
468 } SYSTEM_POOL_TAG_INFORMATION
, *PSYSTEM_POOL_TAG_INFORMATION
;
470 typedef struct _SYSTEM_INTERRUPT_INFORMATION
{
471 ULONG ContextSwitches
;
475 ULONG DpcBypassCount
;
476 ULONG ApcBypassCount
;
477 } SYSTEM_INTERRUPT_INFORMATION
, *PSYSTEM_INTERRUPT_INFORMATION
;
479 typedef struct _SYSTEM_PROCESSOR_STATISTICS
{
480 ULONG ContextSwitches
;
482 ULONG DpcRequestRate
;
484 ULONG DpcBypassCount
;
485 ULONG ApcBypassCount
;
486 } SYSTEM_PROCESSOR_STATISTICS
, *PSYSTEM_PROCESSOR_STATISTICS
;
488 typedef struct _SYSTEM_DPC_INFORMATION
{
490 ULONG MaximumDpcQueueDepth
;
491 ULONG MinimumDpcRate
;
492 ULONG AdjustDpcThreshold
;
494 } SYSTEM_DPC_INFORMATION
, *PSYSTEM_DPC_INFORMATION
;
496 typedef struct _SYSTEM_LOAD_IMAGE
{
497 UNICODE_STRING ModuleName
;
499 PVOID SectionPointer
;
501 PVOID ExportDirectory
;
502 } SYSTEM_LOAD_IMAGE
, *PSYSTEM_LOAD_IMAGE
;
504 typedef struct _SYSTEM_UNLOAD_IMAGE
{
506 } SYSTEM_UNLOAD_IMAGE
, *PSYSTEM_UNLOAD_IMAGE
;
508 typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT
{
509 ULONG TimeAdjustment
;
510 ULONG MaximumIncrement
;
511 BOOLEAN TimeSynchronization
;
512 } SYSTEM_QUERY_TIME_ADJUSTMENT
, *PSYSTEM_QUERY_TIME_ADJUSTMENT
;
514 typedef struct _SYSTEM_SET_TIME_ADJUSTMENT
{
515 ULONG TimeAdjustment
;
516 BOOLEAN TimeSynchronization
;
517 } SYSTEM_SET_TIME_ADJUSTMENT
, *PSYSTEM_SET_TIME_ADJUSTMENT
;
519 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
{
520 HANDLE CrashDumpSectionHandle
;
522 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
524 typedef struct _SYSTEM_EXCEPTION_INFORMATION
{
525 ULONG AlignmentFixupCount
;
526 ULONG ExceptionDispatchCount
;
527 ULONG FloatingEmulationCount
;
529 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
531 typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION
{
532 ULONG CrashDumpSectionExists
;
534 } SYSTEM_CRASH_DUMP_STATE_INFORMATION
, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION
;
536 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
{
537 BOOLEAN DebuggerEnabled
;
538 BOOLEAN DebuggerNotPresent
;
539 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
541 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
{
542 ULONG ContextSwitches
;
543 ULONG ContextSwitchCounters
[11];
544 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
546 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
{
547 ULONG RegistryQuotaAllowed
;
548 ULONG RegistryQuotaUsed
;
550 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
552 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE
{
553 UNICODE_STRING ModuleName
;
554 } SYSTEM_LOAD_AND_CALL_IMAGE
, *PSYSTEM_LOAD_AND_CALL_IMAGE
;
556 typedef struct _SYSTEM_PRIORITY_SEPARATION
{
557 ULONG PrioritySeparation
;
558 } SYSTEM_PRIORITY_SEPARATION
, *PSYSTEM_PRIORITY_SEPARATION
;
560 typedef struct _SYSTEM_TIME_ZONE_INFORMATION
{
562 WCHAR StandardName
[32];
563 LARGE_INTEGER StandardDate
;
565 WCHAR DaylightName
[32];
566 LARGE_INTEGER DaylightDate
;
568 } SYSTEM_TIME_ZONE_INFORMATION
, *PSYSTEM_TIME_ZONE_INFORMATION
;
570 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
{
573 ULONG TotalAllocates
;
574 ULONG AllocateMisses
;
580 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
582 typedef struct _SYSTEM_SET_TIME_SLIP_EVENT
{
583 HANDLE TimeSlipEvent
;
584 } SYSTEM_SET_TIME_SLIP_EVENT
, *PSYSTEM_SET_TIME_SLIP_EVENT
;
586 typedef struct _SYSTEM_CREATE_SESSION
{
588 } SYSTEM_CREATE_SESSION
, *PSYSTEM_CREATE_SESSION
;
590 typedef struct _SYSTEM_DELETE_SESSION
{
592 } SYSTEM_DELETE_SESSION
, *PSYSTEM_DELETE_SESSION
;
594 typedef struct _SYSTEM_RANGE_START_INFORMATION
{
595 PVOID SystemRangeStart
;
596 } SYSTEM_RANGE_START_INFORMATION
, *PSYSTEM_RANGE_START_INFORMATION
;
598 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
{
602 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;
604 typedef struct _SYSTEM_POOL_BLOCK
{
609 } SYSTEM_POOL_BLOCK
, *PSYSTEM_POOL_BLOCK
;
611 typedef struct _SYSTEM_POOL_BLOCKS_INFORMATION
{
615 ULONG NumberOfBlocks
;
616 SYSTEM_POOL_BLOCK PoolBlocks
[1];
617 } SYSTEM_POOL_BLOCKS_INFORMATION
, *PSYSTEM_POOL_BLOCKS_INFORMATION
;
619 typedef struct _SYSTEM_MEMORY_USAGE
{
625 } SYSTEM_MEMORY_USAGE
, *PSYSTEM_MEMORY_USAGE
;
627 typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION
{
630 SYSTEM_MEMORY_USAGE MemoryUsage
[1];
631 } SYSTEM_MEMORY_USAGE_INFORMATION
, *PSYSTEM_MEMORY_USAGE_INFORMATION
;
633 // SystemProcessThreadInfo (5)
634 typedef struct _SYSTEM_THREAD_INFORMATION
636 LARGE_INTEGER KernelTime
;
637 LARGE_INTEGER UserTime
;
638 LARGE_INTEGER CreateTime
;
644 ULONG ContextSwitches
;
647 } SYSTEM_THREAD_INFORMATION
, *PSYSTEM_THREAD_INFORMATION
;
649 typedef struct _SYSTEM_PROCESS_INFORMATION
651 ULONG NextEntryOffset
;
652 ULONG NumberOfThreads
;
653 LARGE_INTEGER SpareLi1
;
654 LARGE_INTEGER SpareLi2
;
655 LARGE_INTEGER SpareLi3
;
656 LARGE_INTEGER CreateTime
;
657 LARGE_INTEGER UserTime
;
658 LARGE_INTEGER KernelTime
;
659 UNICODE_STRING ImageName
;
660 KPRIORITY BasePriority
;
661 HANDLE UniqueProcessId
;
662 HANDLE InheritedFromUniqueProcessId
;
665 ULONG PageDirectoryFrame
;
668 * This part corresponds to VM_COUNTERS_EX.
669 * NOTE: *NOT* THE SAME AS VM_COUNTERS!
671 ULONG PeakVirtualSize
;
673 ULONG PageFaultCount
;
674 ULONG PeakWorkingSetSize
;
675 ULONG WorkingSetSize
;
676 ULONG QuotaPeakPagedPoolUsage
;
677 ULONG QuotaPagedPoolUsage
;
678 ULONG QuotaPeakNonPagedPoolUsage
;
679 ULONG QuotaNonPagedPoolUsage
;
681 ULONG PeakPagefileUsage
;
684 /* This part corresponds to IO_COUNTERS */
685 LARGE_INTEGER ReadOperationCount
;
686 LARGE_INTEGER WriteOperationCount
;
687 LARGE_INTEGER OtherOperationCount
;
688 LARGE_INTEGER ReadTransferCount
;
689 LARGE_INTEGER WriteTransferCount
;
690 LARGE_INTEGER OtherTransferCount
;
692 /* Finally, the array of Threads */
693 SYSTEM_THREAD_INFORMATION TH
[1];
694 } SYSTEM_PROCESS_INFORMATION
, *PSYSTEM_PROCESS_INFORMATION
;
699 NtQuerySystemInformation(
700 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
701 IN OUT PVOID SystemInformation
,
702 IN ULONG SystemInformationLength
,
703 OUT PULONG ReturnLength OPTIONAL
);
708 ZwQuerySystemInformation(
709 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
710 IN OUT PVOID SystemInformation
,
711 IN ULONG SystemInformationLength
,
712 OUT PULONG ReturnLength OPTIONAL
);
717 ZwSetSystemInformation(
718 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
719 IN OUT PVOID SystemInformation
,
720 IN ULONG SystemInformationLength
);
725 ZwQuerySystemEnvironmentValue(
726 IN PUNICODE_STRING VariableName
,
727 OUT PWSTR ValueBuffer
,
728 IN ULONG ValueBufferLength
,
729 OUT PULONG ReturnLength OPTIONAL
);
734 ZwSetSystemEnvironmentValue(
735 IN PUNICODE_STRING VariableName
,
736 IN PUNICODE_STRING Value
);
738 typedef enum _SHUTDOWN_ACTION
{
748 IN SHUTDOWN_ACTION Action
);
750 typedef enum _DEBUG_CONTROL_CODE
{
751 DebugGetTraceInformation
= 1,
752 DebugSetInternalBreakpoint
,
754 DebugClearSpecialCalls
,
755 DebugQuerySpecialCalls
,
758 } DEBUG_CONTROL_CODE
;
764 ZwSystemDebugControl(
765 IN DEBUG_CONTROL_CODE ControlCode
,
766 IN PVOID InputBuffer OPTIONAL
,
767 IN ULONG InputBufferLength
,
768 OUT PVOID OutputBuffer OPTIONAL
,
769 IN ULONG OutputBufferLength
,
770 OUT PULONG ReturnLength OPTIONAL
);
774 /* Objects, Object directories, and symbolic links */
776 typedef enum _OBJECT_INFORMATION_CLASS
{
777 ObjectBasicInformation
,
778 ObjectNameInformation
,
779 ObjectTypeInformation
,
780 ObjectAllTypesInformation
,
781 ObjectHandleInformation
782 } OBJECT_INFORMATION_CLASS
;
788 IN HANDLE ObjectHandle
,
789 IN OBJECT_INFORMATION_CLASS ObjectInformationClass
,
790 OUT PVOID ObjectInformation
,
791 IN ULONG ObjectInformationLength
,
792 OUT PULONG ReturnLength OPTIONAL
);
797 ZwSetInformationObject(
798 IN HANDLE ObjectHandle
,
799 IN OBJECT_INFORMATION_CLASS ObjectInformationClass
,
800 IN PVOID ObjectInformation
,
801 IN ULONG ObjectInformationLength
);
803 /* OBJECT_BASIC_INFORMATION.Attributes constants */
804 /* also in winbase.h */
805 #define HANDLE_FLAG_INHERIT 0x01
806 #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02
808 #define PERMANENT 0x10
809 #define EXCLUSIVE 0x20
811 typedef struct _OBJECT_BASIC_INFORMATION
{
813 ACCESS_MASK GrantedAccess
;
816 ULONG PagedPoolUsage
;
817 ULONG NonPagedPoolUsage
;
819 ULONG NameInformationLength
;
820 ULONG TypeInformationLength
;
821 ULONG SecurityDescriptorLength
;
822 LARGE_INTEGER CreateTime
;
823 } OBJECT_BASIC_INFORMATION
, *POBJECT_BASIC_INFORMATION
;
825 /* FIXME: Enable later */
826 typedef struct _OBJECT_TYPE_INFORMATION
{
831 ULONG PeakObjectCount
;
832 ULONG PeakHandleCount
;
834 ULONG InvalidAttributes
;
835 GENERIC_MAPPING GenericMapping
;
838 BOOLEAN MaintainHandleDatabase
;
840 ULONG PagedPoolUsage
;
841 ULONG NonPagedPoolUsage
;
842 } OBJECT_TYPE_INFORMATION
, *POBJECT_TYPE_INFORMATION
;
844 typedef struct _OBJECT_ALL_TYPES_INFORMATION
{
846 OBJECT_TYPE_INFORMATION TypeInformation
;
847 } OBJECT_ALL_TYPES_INFORMATION
, *POBJECT_ALL_TYPES_INFORMATION
;
849 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION
{
851 BOOLEAN ProtectFromClose
;
852 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION
, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION
;
858 IN HANDLE SourceProcessHandle
,
859 IN HANDLE SourceHandle
,
860 IN HANDLE TargetProcessHandle
,
861 OUT PHANDLE TargetHandle OPTIONAL
,
862 IN ACCESS_MASK DesiredAccess
,
870 IN HANDLE SourceProcessHandle
,
871 IN HANDLE SourceHandle
,
872 IN HANDLE TargetProcessHandle
,
873 OUT PHANDLE TargetHandle OPTIONAL
,
874 IN ACCESS_MASK DesiredAccess
,
881 NtQuerySecurityObject(
883 IN SECURITY_INFORMATION SecurityInformation
,
884 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
885 IN ULONG SecurityDescriptorLength
,
886 OUT PULONG ReturnLength
);
891 ZwQuerySecurityObject(
893 IN SECURITY_INFORMATION SecurityInformation
,
894 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
895 IN ULONG SecurityDescriptorLength
,
896 OUT PULONG ReturnLength
);
903 IN SECURITY_INFORMATION SecurityInformation
,
904 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
911 IN SECURITY_INFORMATION SecurityInformation
,
912 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
917 ZwOpenDirectoryObject(
918 OUT PHANDLE DirectoryHandle
,
919 IN ACCESS_MASK DesiredAccess
,
920 IN POBJECT_ATTRIBUTES ObjectAttributes
);
925 ZwQueryDirectoryObject(
926 IN HANDLE DirectoryHandle
,
928 IN ULONG BufferLength
,
929 IN BOOLEAN ReturnSingleEntry
,
930 IN BOOLEAN RestartScan
,
931 IN OUT PULONG Context
,
932 OUT PULONG ReturnLength OPTIONAL
);
934 typedef struct _OBJECT_DIRECTORY_INFORMATION
{
935 UNICODE_STRING ObjectName
;
936 UNICODE_STRING ObjectTypeName
;
937 } OBJECT_DIRECTORY_INFORMATION
, *POBJECT_DIRECTORY_INFORMATION
;
942 ZwCreateSymbolicLinkObject(
943 OUT PHANDLE SymbolicLinkHandle
,
944 IN ACCESS_MASK DesiredAccess
,
945 IN POBJECT_ATTRIBUTES ObjectAttributes
,
946 IN PUNICODE_STRING TargetName
);
953 typedef enum _MEMORY_INFORMATION_CLASS
{
954 MemoryBasicInformation
,
955 MemoryWorkingSetList
,
957 MemoryBasicVlmInformation
958 } MEMORY_INFORMATION_CLASS
;
963 NtAllocateVirtualMemory(
964 IN HANDLE ProcessHandle
,
965 IN OUT PVOID
*BaseAddress
,
967 IN OUT PULONG AllocationSize
,
968 IN ULONG AllocationType
,
974 ZwAllocateVirtualMemory(
975 IN HANDLE ProcessHandle
,
976 IN OUT PVOID
*BaseAddress
,
978 IN OUT PULONG AllocationSize
,
979 IN ULONG AllocationType
,
986 IN HANDLE ProcessHandle
,
987 IN OUT PVOID
*BaseAddress
,
988 IN OUT PULONG FreeSize
,
995 IN HANDLE ProcessHandle
,
996 IN OUT PVOID
*BaseAddress
,
997 IN OUT PULONG FreeSize
,
1003 ZwQueryVirtualMemory(
1004 IN HANDLE ProcessHandle
,
1005 IN PVOID BaseAddress
,
1006 IN MEMORY_INFORMATION_CLASS MemoryInformationClass
,
1007 OUT PVOID MemoryInformation
,
1008 IN ULONG MemoryInformationLength
,
1009 OUT PULONG ReturnLength OPTIONAL
);
1011 /* MEMORY_WORKING_SET_LIST.WorkingSetList constants */
1012 #define WSLE_PAGE_READONLY 0x001
1013 #define WSLE_PAGE_EXECUTE 0x002
1014 #define WSLE_PAGE_READWRITE 0x004
1015 #define WSLE_PAGE_EXECUTE_READ 0x003
1016 #define WSLE_PAGE_WRITECOPY 0x005
1017 #define WSLE_PAGE_EXECUTE_READWRITE 0x006
1018 #define WSLE_PAGE_EXECUTE_WRITECOPY 0x007
1019 #define WSLE_PAGE_SHARE_COUNT_MASK 0x0E0
1020 #define WSLE_PAGE_SHAREABLE 0x100
1022 typedef struct _MEMORY_WORKING_SET_LIST
{
1023 ULONG NumberOfPages
;
1024 ULONG WorkingSetList
[1];
1025 } MEMORY_WORKING_SET_LIST
, *PMEMORY_WORKING_SET_LIST
;
1027 typedef struct _MEMORY_SECTION_NAME
{
1028 UNICODE_STRING SectionFileName
;
1029 } MEMORY_SECTION_NAME
, *PMEMORY_SECTION_NAME
;
1031 /* Zw[Lock|Unlock]VirtualMemory.LockType constants */
1032 #define LOCK_VM_IN_WSL 0x01
1033 #define LOCK_VM_IN_RAM 0x02
1038 ZwLockVirtualMemory(
1039 IN HANDLE ProcessHandle
,
1040 IN OUT PVOID
*BaseAddress
,
1041 IN OUT PULONG LockSize
,
1047 ZwUnlockVirtualMemory(
1048 IN HANDLE ProcessHandle
,
1049 IN OUT PVOID
*BaseAddress
,
1050 IN OUT PULONG LockSize
,
1056 ZwReadVirtualMemory(
1057 IN HANDLE ProcessHandle
,
1058 IN PVOID BaseAddress
,
1060 IN ULONG BufferLength
,
1061 OUT PULONG ReturnLength OPTIONAL
);
1066 ZwWriteVirtualMemory(
1067 IN HANDLE ProcessHandle
,
1068 IN PVOID BaseAddress
,
1070 IN ULONG BufferLength
,
1071 OUT PULONG ReturnLength OPTIONAL
);
1076 ZwProtectVirtualMemory(
1077 IN HANDLE ProcessHandle
,
1078 IN OUT PVOID
*BaseAddress
,
1079 IN OUT PULONG ProtectSize
,
1080 IN ULONG NewProtect
,
1081 OUT PULONG OldProtect
);
1086 ZwFlushVirtualMemory(
1087 IN HANDLE ProcessHandle
,
1088 IN OUT PVOID
*BaseAddress
,
1089 IN OUT PULONG FlushSize
,
1090 OUT PIO_STATUS_BLOCK IoStatusBlock
);
1095 ZwAllocateUserPhysicalPages(
1096 IN HANDLE ProcessHandle
,
1097 IN OUT PULONG_PTR NumberOfPages
,
1098 OUT PULONG_PTR UserPfnArray
);
1103 ZwFreeUserPhysicalPages(
1104 IN HANDLE ProcessHandle
,
1105 IN OUT PULONG_PTR NumberOfPages
,
1106 IN PULONG_PTR UserPfnArray
);
1111 ZwMapUserPhysicalPages(
1112 IN PVOID VirtualAddress
,
1113 IN ULONG_PTR NumberOfPages
,
1114 IN PULONG_PTR PageArray OPTIONAL
);
1119 ZwMapUserPhysicalPagesScatter(
1120 IN PVOID
*VirtualAddresses
,
1121 IN ULONG_PTR NumberOfPages
,
1122 IN PULONG_PTR PageArray OPTIONAL
);
1128 IN HANDLE ProcessHandle
,
1130 IN PVOID BaseAddress
,
1131 IN ULONG RegionSize
,
1133 IN OUT PULONG BufferEntries
,
1134 OUT PULONG Granularity
);
1140 IN HANDLE ProcessHandle
,
1141 IN PVOID BaseAddress
,
1142 IN ULONG RegionSize
);
1149 typedef enum _SECTION_INFORMATION_CLASS
{
1150 SectionBasicInformation
,
1151 SectionImageInformation
1152 } SECTION_INFORMATION_CLASS
;
1158 OUT PHANDLE SectionHandle
,
1159 IN ACCESS_MASK DesiredAccess
,
1160 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1161 IN PLARGE_INTEGER SectionSize OPTIONAL
,
1163 IN ULONG Attributes
,
1164 IN HANDLE FileHandle
);
1170 OUT PHANDLE SectionHandle
,
1171 IN ACCESS_MASK DesiredAccess
,
1172 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1173 IN PLARGE_INTEGER SectionSize OPTIONAL
,
1175 IN ULONG Attributes
,
1176 IN HANDLE FileHandle
);
1182 IN HANDLE SectionHandle
,
1183 IN SECTION_INFORMATION_CLASS SectionInformationClass
,
1184 OUT PVOID SectionInformation
,
1185 IN ULONG SectionInformationLength
,
1186 OUT PULONG ResultLength OPTIONAL
);
1192 IN HANDLE SectionHandle
,
1193 IN PLARGE_INTEGER SectionSize
);
1198 ZwAreMappedFilesTheSame(
1207 typedef struct _INITIAL_TEB
1212 PVOID StackCommitMax
;
1213 PVOID StackReserved
;
1214 } INITIAL_TEB
, *PINITIAL_TEB
;
1220 OUT PHANDLE ThreadHandle
,
1221 IN ACCESS_MASK DesiredAccess
,
1222 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
1223 IN HANDLE ProcessHandle
,
1224 OUT PCLIENT_ID ClientId
,
1225 IN PCONTEXT ThreadContext
,
1226 IN PINITIAL_TEB InitialTeb
,
1227 IN BOOLEAN CreateSuspended
);
1233 OUT PHANDLE ThreadHandle
,
1234 IN ACCESS_MASK DesiredAccess
,
1235 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1236 IN PCLIENT_ID ClientId
);
1242 OUT PHANDLE ThreadHandle
,
1243 IN ACCESS_MASK DesiredAccess
,
1244 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1245 IN PCLIENT_ID ClientId
);
1251 IN HANDLE ThreadHandle OPTIONAL
,
1252 IN NTSTATUS ExitStatus
);
1258 IN HANDLE ThreadHandle OPTIONAL
,
1259 IN NTSTATUS ExitStatus
);
1264 NtQueryInformationThread(
1265 IN HANDLE ThreadHandle
,
1266 IN THREADINFOCLASS ThreadInformationClass
,
1267 OUT PVOID ThreadInformation
,
1268 IN ULONG ThreadInformationLength
,
1269 OUT PULONG ReturnLength OPTIONAL
);
1274 ZwQueryInformationThread(
1275 IN HANDLE ThreadHandle
,
1276 IN THREADINFOCLASS ThreadInformationClass
,
1277 OUT PVOID ThreadInformation
,
1278 IN ULONG ThreadInformationLength
,
1279 OUT PULONG ReturnLength OPTIONAL
);
1284 NtSetInformationThread(
1285 IN HANDLE ThreadHandle
,
1286 IN THREADINFOCLASS ThreadInformationClass
,
1287 IN PVOID ThreadInformation
,
1288 IN ULONG ThreadInformationLength
);
1290 typedef struct _THREAD_BASIC_INFORMATION
{
1291 NTSTATUS ExitStatus
;
1292 PNT_TIB TebBaseAddress
;
1294 KAFFINITY AffinityMask
;
1296 KPRIORITY BasePriority
;
1297 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
1299 typedef struct _KERNEL_USER_TIMES
{
1300 LARGE_INTEGER CreateTime
;
1301 LARGE_INTEGER ExitTime
;
1302 LARGE_INTEGER KernelTime
;
1303 LARGE_INTEGER UserTime
;
1304 } KERNEL_USER_TIMES
, *PKERNEL_USER_TIMES
;
1306 typedef struct _DESCRIPTOR_TABLE_ENTRY
{
1308 LDT_ENTRY Descriptor
;
1309 } DESCRIPTOR_TABLE_ENTRY
, *PDESCRIPTOR_TABLE_ENTRY
;
1315 IN HANDLE ThreadHandle
,
1316 OUT PULONG PreviousSuspendCount OPTIONAL
);
1322 IN HANDLE ThreadHandle
,
1323 OUT PULONG PreviousSuspendCount OPTIONAL
);
1329 IN HANDLE ThreadHandle
,
1330 OUT PCONTEXT Context
);
1336 IN HANDLE ThreadHandle
,
1337 IN PCONTEXT Context
);
1343 IN HANDLE ThreadHandle
,
1344 IN PKNORMAL_ROUTINE ApcRoutine
,
1345 IN PVOID ApcContext OPTIONAL
,
1346 IN PVOID Argument1 OPTIONAL
,
1347 IN PVOID Argument2 OPTIONAL
);
1359 IN HANDLE ThreadHandle
);
1364 ZwAlertResumeThread(
1365 IN HANDLE ThreadHandle
,
1366 OUT PULONG PreviousSuspendCount OPTIONAL
);
1371 ZwRegisterThreadTerminatePort(
1372 IN HANDLE PortHandle
);
1377 ZwImpersonateThread(
1378 IN HANDLE ThreadHandle
,
1379 IN HANDLE TargetThreadHandle
,
1380 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
);
1385 ZwImpersonateAnonymousToken(
1386 IN HANDLE ThreadHandle
);
1397 OUT PHANDLE ProcessHandle
,
1398 IN ACCESS_MASK DesiredAccess
,
1399 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1400 IN HANDLE InheritFromProcessHandle
,
1401 IN BOOLEAN InheritHandles
,
1402 IN HANDLE SectionHandle OPTIONAL
,
1403 IN HANDLE DebugPort OPTIONAL
,
1404 IN HANDLE ExceptionPort OPTIONAL
);
1410 OUT PHANDLE ProcessHandle
,
1411 IN ACCESS_MASK DesiredAccess
,
1412 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1413 IN HANDLE InheritFromProcessHandle
,
1414 IN BOOLEAN InheritHandles
,
1415 IN HANDLE SectionHandle OPTIONAL
,
1416 IN HANDLE DebugPort OPTIONAL
,
1417 IN HANDLE ExceptionPort OPTIONAL
);
1423 IN HANDLE ProcessHandle OPTIONAL
,
1424 IN NTSTATUS ExitStatus
);
1429 ZwQueryInformationProcess(
1430 IN HANDLE ProcessHandle
,
1431 IN PROCESSINFOCLASS ProcessInformationClass
,
1432 OUT PVOID ProcessInformation
,
1433 IN ULONG ProcessInformationLength
,
1434 OUT PULONG ReturnLength OPTIONAL
);
1439 NtSetInformationProcess(
1440 IN HANDLE ProcessHandle
,
1441 IN PROCESSINFOCLASS ProcessInformationClass
,
1442 IN PVOID ProcessInformation
,
1443 IN ULONG ProcessInformationLength
);
1448 ZwSetInformationProcess(
1449 IN HANDLE ProcessHandle
,
1450 IN PROCESSINFOCLASS ProcessInformationClass
,
1451 IN PVOID ProcessInformation
,
1452 IN ULONG ProcessInformationLength
);
1454 typedef struct _PROCESS_BASIC_INFORMATION
{
1455 NTSTATUS ExitStatus
;
1456 PPEB PebBaseAddress
;
1457 KAFFINITY AffinityMask
;
1458 KPRIORITY BasePriority
;
1459 HANDLE UniqueProcessId
;
1460 HANDLE InheritedFromUniqueProcessId
;
1461 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
1463 typedef struct _PROCESS_ACCESS_TOKEN
{
1466 } PROCESS_ACCESS_TOKEN
, *PPROCESS_ACCESS_TOKEN
;
1468 /* DefaultHardErrorMode constants */
1469 /* also in winbase.h */
1470 #define SEM_FAILCRITICALERRORS 0x0001
1471 #define SEM_NOGPFAULTERRORBOX 0x0002
1472 #define SEM_NOALIGNMENTFAULTEXCEPT 0x0004
1473 #define SEM_NOOPENFILEERRORBOX 0x8000
1476 /* PROCESS_PRIORITY_CLASS.PriorityClass constants */
1480 #define PC_REALTIME 4
1481 #define PC_BELOW_NORMAL 5
1482 #define PC_ABOVE_NORMAL 6
1484 typedef struct _PROCESS_PRIORITY_CLASS
{
1486 UCHAR PriorityClass
;
1487 } PROCESS_PRIORITY_CLASS
, *PPROCESS_PRIORITY_CLASS
;
1489 /* PROCESS_DEVICEMAP_INFORMATION.DriveType constants */
1490 #define DRIVE_UNKNOWN 0
1491 #define DRIVE_NO_ROOT_DIR 1
1492 #define DRIVE_REMOVABLE 2
1493 #define DRIVE_FIXED 3
1494 #define DRIVE_REMOTE 4
1495 #define DRIVE_CDROM 5
1496 #define DRIVE_RAMDISK 6
1498 typedef struct _PROCESS_DEVICEMAP_INFORMATION
{
1499 _ANONYMOUS_UNION
union {
1501 HANDLE DirectoryHandle
;
1505 UCHAR DriveType
[32];
1508 } PROCESS_DEVICEMAP_INFORMATION
, *PPROCESS_DEVICEMAP_INFORMATION
;
1510 typedef struct _PROCESS_SESSION_INFORMATION
{
1512 } PROCESS_SESSION_INFORMATION
, *PPROCESS_SESSION_INFORMATION
;
1514 typedef struct _RTL_USER_PROCESS_PARAMETERS
{
1515 ULONG AllocationSize
;
1524 UNICODE_STRING CurrentDirectoryName
;
1525 HANDLE CurrentDirectoryHandle
;
1526 UNICODE_STRING DllPath
;
1527 UNICODE_STRING ImagePathName
;
1528 UNICODE_STRING CommandLine
;
1534 ULONG dwXCountChars
;
1535 ULONG dwYCountChars
;
1536 ULONG dwFillAttribute
;
1539 UNICODE_STRING WindowTitle
;
1540 UNICODE_STRING DesktopInfo
;
1541 UNICODE_STRING ShellInfo
;
1542 UNICODE_STRING RuntimeInfo
;
1543 } RTL_USER_PROCESS_PARAMETERS
, *PRTL_USER_PROCESS_PARAMETERS
;
1547 RtlCreateProcessParameters(
1548 OUT PRTL_USER_PROCESS_PARAMETERS
*ProcessParameters
,
1549 IN PUNICODE_STRING ImageFile
,
1550 IN PUNICODE_STRING DllPath OPTIONAL
,
1551 IN PUNICODE_STRING CurrentDirectory OPTIONAL
,
1552 IN PUNICODE_STRING CommandLine OPTIONAL
,
1553 IN PWSTR Environment OPTIONAL
,
1554 IN PUNICODE_STRING WindowTitle OPTIONAL
,
1555 IN PUNICODE_STRING DesktopInfo OPTIONAL
,
1556 IN PUNICODE_STRING ShellInfo OPTIONAL
,
1557 IN PUNICODE_STRING RuntimeInfo OPTIONAL
);
1561 RtlDestroyProcessParameters(
1562 IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters
);
1564 typedef struct _DEBUG_BUFFER
{
1565 HANDLE SectionHandle
;
1567 PVOID RemoteSectionBase
;
1568 ULONG SectionBaseDelta
;
1569 HANDLE EventPairHandle
;
1571 HANDLE RemoteThreadHandle
;
1572 ULONG InfoClassMask
;
1574 ULONG AllocatedSize
;
1576 PVOID ModuleInformation
;
1577 PVOID BackTraceInformation
;
1578 PVOID HeapInformation
;
1579 PVOID LockInformation
;
1581 } DEBUG_BUFFER
, *PDEBUG_BUFFER
;
1585 RtlCreateQueryDebugBuffer(
1587 IN BOOLEAN EventPair
);
1589 /* RtlQueryProcessDebugInformation.DebugInfoClassMask constants */
1590 #define PDI_MODULES 0x01
1591 #define PDI_BACKTRACE 0x02
1592 #define PDI_HEAPS 0x04
1593 #define PDI_HEAP_TAGS 0x08
1594 #define PDI_HEAP_BLOCKS 0x10
1595 #define PDI_LOCKS 0x20
1599 RtlQueryProcessDebugInformation(
1601 IN ULONG DebugInfoClassMask
,
1602 IN OUT PDEBUG_BUFFER DebugBuffer
);
1606 RtlDestroyQueryDebugBuffer(
1607 IN PDEBUG_BUFFER DebugBuffer
);
1609 /* DEBUG_MODULE_INFORMATION.Flags constants */
1610 #define LDRP_STATIC_LINK 0x00000002
1611 #define LDRP_IMAGE_DLL 0x00000004
1612 #define LDRP_LOAD_IN_PROGRESS 0x00001000
1613 #define LDRP_UNLOAD_IN_PROGRESS 0x00002000
1614 #define LDRP_ENTRY_PROCESSED 0x00004000
1615 #define LDRP_ENTRY_INSERTED 0x00008000
1616 #define LDRP_CURRENT_LOAD 0x00010000
1617 #define LDRP_FAILED_BUILTIN_LOAD 0x00020000
1618 #define LDRP_DONT_CALL_FOR_THREADS 0x00040000
1619 #define LDRP_PROCESS_ATTACH_CALLED 0x00080000
1620 #define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000
1621 #define LDRP_IMAGE_NOT_AT_BASE 0x00200000
1622 #define LDRP_WX86_IGNORE_MACHINETYPE 0x00400000
1624 typedef struct _DEBUG_MODULE_INFORMATION
{
1632 USHORT ModuleNameOffset
;
1633 CHAR ImageName
[256];
1634 } DEBUG_MODULE_INFORMATION
, *PDEBUG_MODULE_INFORMATION
;
1636 typedef struct _DEBUG_HEAP_INFORMATION
{
1648 } DEBUG_HEAP_INFORMATION
, *PDEBUG_HEAP_INFORMATION
;
1650 typedef struct _DEBUG_LOCK_INFORMATION
{
1653 USHORT CreatorBackTraceIndex
;
1654 ULONG OwnerThreadId
;
1656 ULONG ContentionCount
;
1658 ULONG RecursionCount
;
1659 ULONG NumberOfSharedWaiters
;
1660 ULONG NumberOfExclusiveWaiters
;
1661 } DEBUG_LOCK_INFORMATION
, *PDEBUG_LOCK_INFORMATION
;
1671 OUT PHANDLE JobHandle
,
1672 IN ACCESS_MASK DesiredAccess
,
1673 IN POBJECT_ATTRIBUTES ObjectAttributes
);
1679 OUT PHANDLE JobHandle
,
1680 IN ACCESS_MASK DesiredAccess
,
1681 IN POBJECT_ATTRIBUTES ObjectAttributes
);
1686 ZwTerminateJobObject(
1687 IN HANDLE JobHandle
,
1688 IN NTSTATUS ExitStatus
);
1693 ZwAssignProcessToJobObject(
1694 IN HANDLE JobHandle
,
1695 IN HANDLE ProcessHandle
);
1700 ZwQueryInformationJobObject(
1701 IN HANDLE JobHandle
,
1702 IN JOBOBJECTINFOCLASS JobInformationClass
,
1703 OUT PVOID JobInformation
,
1704 IN ULONG JobInformationLength
,
1705 OUT PULONG ReturnLength OPTIONAL
);
1710 ZwSetInformationJobObject(
1711 IN HANDLE JobHandle
,
1712 IN JOBOBJECTINFOCLASS JobInformationClass
,
1713 IN PVOID JobInformation
,
1714 IN ULONG JobInformationLength
);
1723 OUT PHANDLE TokenHandle
,
1724 IN ACCESS_MASK DesiredAccess
,
1725 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1727 IN PLUID AuthenticationId
,
1728 IN PLARGE_INTEGER ExpirationTime
,
1729 IN PTOKEN_USER User
,
1730 IN PTOKEN_GROUPS Groups
,
1731 IN PTOKEN_PRIVILEGES Privileges
,
1732 IN PTOKEN_OWNER Owner
,
1733 IN PTOKEN_PRIMARY_GROUP PrimaryGroup
,
1734 IN PTOKEN_DEFAULT_DACL DefaultDacl
,
1735 IN PTOKEN_SOURCE Source
1742 IN HANDLE ProcessHandle
,
1743 IN ACCESS_MASK DesiredAccess
,
1744 OUT PHANDLE TokenHandle
);
1750 IN HANDLE ProcessHandle
,
1751 IN ACCESS_MASK DesiredAccess
,
1752 OUT PHANDLE TokenHandle
);
1758 IN HANDLE ThreadHandle
,
1759 IN ACCESS_MASK DesiredAccess
,
1760 IN BOOLEAN OpenAsSelf
,
1761 OUT PHANDLE TokenHandle
);
1767 IN HANDLE ThreadHandle
,
1768 IN ACCESS_MASK DesiredAccess
,
1769 IN BOOLEAN OpenAsSelf
,
1770 OUT PHANDLE TokenHandle
);
1776 IN HANDLE ExistingTokenHandle
,
1777 IN ACCESS_MASK DesiredAccess
,
1778 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1779 IN BOOLEAN EffectiveOnly
,
1780 IN TOKEN_TYPE TokenType
,
1781 OUT PHANDLE NewTokenHandle
);
1787 IN HANDLE ExistingTokenHandle
,
1788 IN ACCESS_MASK DesiredAccess
,
1789 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1790 IN BOOLEAN EffectiveOnly
,
1791 IN TOKEN_TYPE TokenType
,
1792 OUT PHANDLE NewTokenHandle
);
1798 IN HANDLE ExistingTokenHandle
,
1800 IN PTOKEN_GROUPS SidsToDisable
,
1801 IN PTOKEN_PRIVILEGES PrivilegesToDelete
,
1802 IN PTOKEN_GROUPS SidsToRestricted
,
1803 OUT PHANDLE NewTokenHandle
);
1808 NtAdjustPrivilegesToken(
1809 IN HANDLE TokenHandle
,
1810 IN BOOLEAN DisableAllPrivileges
,
1811 IN PTOKEN_PRIVILEGES NewState
,
1812 IN ULONG BufferLength
,
1813 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL
,
1814 OUT PULONG ReturnLength
);
1819 ZwAdjustPrivilegesToken(
1820 IN HANDLE TokenHandle
,
1821 IN BOOLEAN DisableAllPrivileges
,
1822 IN PTOKEN_PRIVILEGES NewState
,
1823 IN ULONG BufferLength
,
1824 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL
,
1825 OUT PULONG ReturnLength
);
1830 ZwAdjustGroupsToken(
1831 IN HANDLE TokenHandle
,
1832 IN BOOLEAN ResetToDefault
,
1833 IN PTOKEN_GROUPS NewState
,
1834 IN ULONG BufferLength
,
1835 OUT PTOKEN_GROUPS PreviousState OPTIONAL
,
1836 OUT PULONG ReturnLength
);
1841 NtQueryInformationToken(
1842 IN HANDLE TokenHandle
,
1843 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
1844 OUT PVOID TokenInformation
,
1845 IN ULONG TokenInformationLength
,
1846 OUT PULONG ReturnLength
);
1851 ZwQueryInformationToken(
1852 IN HANDLE TokenHandle
,
1853 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
1854 OUT PVOID TokenInformation
,
1855 IN ULONG TokenInformationLength
,
1856 OUT PULONG ReturnLength
);
1861 ZwSetInformationToken(
1862 IN HANDLE TokenHandle
,
1863 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
1864 IN PVOID TokenInformation
,
1865 IN ULONG TokenInformationLength
);
1876 OUT PLARGE_INTEGER CurrentTime
);
1882 IN PLARGE_INTEGER NewTime
,
1883 OUT PLARGE_INTEGER OldTime OPTIONAL
);
1888 ZwQueryPerformanceCounter(
1889 OUT PLARGE_INTEGER PerformanceCount
,
1890 OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL
);
1895 ZwQueryPerformanceCounter(
1896 OUT PLARGE_INTEGER PerformanceCount
,
1897 OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL
);
1902 ZwQueryTimerResolution(
1903 OUT PULONG CoarsestResolution
,
1904 OUT PULONG FinestResolution
,
1905 OUT PULONG ActualResolution
);
1911 IN BOOLEAN Alertable
,
1912 IN PLARGE_INTEGER Interval
);
1929 /* Execution profiling */
1935 OUT PHANDLE ProfileHandle
,
1936 IN HANDLE ProcessHandle
,
1939 IN ULONG BucketShift
,
1941 IN ULONG BufferLength
,
1942 IN KPROFILE_SOURCE Source
,
1943 IN ULONG ProcessorMask
);
1948 ZwSetIntervalProfile(
1950 IN KPROFILE_SOURCE Source
);
1955 ZwQueryIntervalProfile(
1956 IN KPROFILE_SOURCE Source
,
1957 OUT PULONG Interval
);
1963 IN HANDLE ProfileHandle
);
1969 IN HANDLE ProfileHandle
);
1971 /* Local Procedure Call (LPC) */
1973 typedef struct _LPC_MESSAGE
{
1977 USHORT VirtualRangesOffset
;
1981 } LPC_MESSAGE
, *PLPC_MESSAGE
;
1983 #define LPC_MESSAGE_BASE_SIZE 24
1985 typedef enum _LPC_TYPE
{
1996 LPC_CONNECTION_REQUEST
,
1997 LPC_CONNECTION_REFUSED
,
2001 typedef struct _LPC_SECTION_WRITE
{
2003 HANDLE SectionHandle
;
2004 ULONG SectionOffset
;
2007 PVOID TargetViewBase
;
2008 } LPC_SECTION_WRITE
, *PLPC_SECTION_WRITE
;
2010 typedef struct _LPC_SECTION_READ
{
2014 } LPC_SECTION_READ
, *PLPC_SECTION_READ
;
2020 OUT PHANDLE PortHandle
,
2021 IN POBJECT_ATTRIBUTES ObjectAttributes
,
2022 IN ULONG MaxDataSize
,
2023 IN ULONG MaxMessageSize
,
2029 ZwCreateWaitablePort(
2030 OUT PHANDLE PortHandle
,
2031 IN POBJECT_ATTRIBUTES ObjectAttributes
,
2032 IN ULONG MaxDataSize
,
2033 IN ULONG MaxMessageSize
,
2040 OUT PHANDLE PortHandle
,
2041 IN PUNICODE_STRING PortName
,
2042 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
,
2043 IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL
,
2044 IN OUT PLPC_SECTION_READ ReadSection OPTIONAL
,
2045 OUT PULONG MaxMessageSize OPTIONAL
,
2046 IN OUT PVOID ConnectData OPTIONAL
,
2047 IN OUT PULONG ConnectDataLength OPTIONAL
);
2053 OUT PHANDLE PortHandle
,
2054 IN PUNICODE_STRING PortName
,
2055 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
,
2056 IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL
,
2057 IN OUT PLPC_SECTION_READ ReadSection OPTIONAL
,
2058 OUT PULONG MaxMessageSize OPTIONAL
,
2059 IN OUT PVOID ConnectData OPTIONAL
,
2060 IN OUT PULONG ConnectDataLength OPTIONAL
);
2066 OUT PHANDLE PortHandle
,
2067 IN PUNICODE_STRING PortName
,
2068 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
,
2069 IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL
,
2070 IN OUT PLPC_SECTION_READ ReadSection OPTIONAL
,
2071 OUT PULONG MaxMessageSize OPTIONAL
,
2072 IN OUT PVOID ConnectData OPTIONAL
,
2073 IN OUT PULONG ConnectDataLength OPTIONAL
);
2079 IN HANDLE PortHandle
,
2080 OUT PLPC_MESSAGE Message
);
2085 ZwAcceptConnectPort(
2086 OUT PHANDLE PortHandle
,
2087 IN ULONG PortIdentifier
,
2088 IN PLPC_MESSAGE Message
,
2090 IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL
,
2091 IN OUT PLPC_SECTION_READ ReadSection OPTIONAL
);
2096 ZwCompleteConnectPort(
2097 IN HANDLE PortHandle
);
2103 IN HANDLE PortHandle
,
2104 IN PLPC_MESSAGE RequestMessage
);
2109 NtRequestWaitReplyPort(
2110 IN HANDLE PortHandle
,
2111 IN PLPC_MESSAGE RequestMessage
,
2112 OUT PLPC_MESSAGE ReplyMessage
);
2117 ZwRequestWaitReplyPort(
2118 IN HANDLE PortHandle
,
2119 IN PLPC_MESSAGE RequestMessage
,
2120 OUT PLPC_MESSAGE ReplyMessage
);
2126 IN HANDLE PortHandle
,
2127 IN PLPC_MESSAGE ReplyMessage
);
2132 ZwReplyWaitReplyPort(
2133 IN HANDLE PortHandle
,
2134 IN OUT PLPC_MESSAGE ReplyMessage
);
2139 ZwReplyWaitReceivePort(
2140 IN HANDLE PortHandle
,
2141 OUT PULONG PortIdentifier OPTIONAL
,
2142 IN PLPC_MESSAGE ReplyMessage OPTIONAL
,
2143 OUT PLPC_MESSAGE Message
);
2148 ZwReplyWaitReceivePortEx(
2149 IN HANDLE PortHandle
,
2150 OUT PULONG PortIdentifier OPTIONAL
,
2151 IN PLPC_MESSAGE ReplyMessage OPTIONAL
,
2152 OUT PLPC_MESSAGE Message
,
2153 IN PLARGE_INTEGER Timeout
);
2159 IN HANDLE PortHandle
,
2160 IN PLPC_MESSAGE Message
,
2163 IN ULONG BufferLength
,
2164 OUT PULONG ReturnLength OPTIONAL
);
2170 IN HANDLE PortHandle
,
2171 IN PLPC_MESSAGE Message
,
2174 IN ULONG BufferLength
,
2175 OUT PULONG ReturnLength OPTIONAL
);
2177 typedef enum _PORT_INFORMATION_CLASS
{
2178 PortBasicInformation
2179 } PORT_INFORMATION_CLASS
;
2184 ZwQueryInformationPort(
2185 IN HANDLE PortHandle
,
2186 IN PORT_INFORMATION_CLASS PortInformationClass
,
2187 OUT PVOID PortInformation
,
2188 IN ULONG PortInformationLength
,
2189 OUT PULONG ReturnLength OPTIONAL
);
2194 ZwImpersonateClientOfPort(
2195 IN HANDLE PortHandle
,
2196 IN PLPC_MESSAGE Message
);
2207 IN POBJECT_ATTRIBUTES ObjectAttributes
);
2213 IN POBJECT_ATTRIBUTES ObjectAttributes
);
2219 IN HANDLE FileHandle
,
2220 OUT PIO_STATUS_BLOCK IoStatusBlock
);
2226 IN HANDLE FileHandle
,
2227 OUT PIO_STATUS_BLOCK IoStatusBlock
);
2233 IN HANDLE FileHandle
,
2234 IN HANDLE Event OPTIONAL
,
2235 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
2236 IN PVOID ApcContext OPTIONAL
,
2237 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2238 IN PFILE_SEGMENT_ELEMENT Buffer
,
2240 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
2241 IN PULONG Key OPTIONAL
);
2247 IN HANDLE FileHandle
,
2248 IN HANDLE Event OPTIONAL
,
2249 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
2250 IN PVOID ApcContext OPTIONAL
,
2251 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2252 IN PFILE_SEGMENT_ELEMENT Buffer
,
2254 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
2255 IN PULONG Key OPTIONAL
);
2266 IN HANDLE KeyHandle
,
2267 IN HANDLE FileHandle
);
2273 IN HANDLE KeyHandle1
,
2274 IN HANDLE KeyHandle2
,
2275 IN HANDLE FileHandle
);
2281 IN HANDLE KeyHandle
,
2282 IN HANDLE FileHandle
,
2289 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2290 IN POBJECT_ATTRIBUTES FileObjectAttributes
);
2296 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2297 IN POBJECT_ATTRIBUTES FileObjectAttributes
,
2304 IN POBJECT_ATTRIBUTES KeyObjectAttributes
);
2310 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2311 OUT PULONG NumberOfKeys
);
2317 IN POBJECT_ATTRIBUTES NewFileObjectAttributes
,
2318 IN HANDLE KeyHandle
,
2319 IN POBJECT_ATTRIBUTES OldFileObjectAttributes
);
2324 ZwSetInformationKey(
2325 IN HANDLE KeyHandle
,
2326 IN KEY_SET_INFORMATION_CLASS KeyInformationClass
,
2327 IN PVOID KeyInformation
,
2328 IN ULONG KeyInformationLength
);
2330 typedef struct _KEY_LAST_WRITE_TIME_INFORMATION
{
2331 LARGE_INTEGER LastWriteTime
;
2332 } KEY_LAST_WRITE_TIME_INFORMATION
, *PKEY_LAST_WRITE_TIME_INFORMATION
;
2334 typedef struct _KEY_NAME_INFORMATION
{
2337 } KEY_NAME_INFORMATION
, *PKEY_NAME_INFORMATION
;
2343 IN HANDLE KeyHandle
,
2344 IN HANDLE EventHandle OPTIONAL
,
2345 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
2346 IN PVOID ApcContext OPTIONAL
,
2347 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2348 IN ULONG NotifyFilter
,
2349 IN BOOLEAN WatchSubtree
,
2351 IN ULONG BufferLength
,
2352 IN BOOLEAN Asynchronous
);
2354 /* ZwNotifyChangeMultipleKeys.Flags constants */
2355 #define REG_MONITOR_SINGLE_KEY 0x00
2356 #define REG_MONITOR_SECOND_KEY 0x01
2361 ZwNotifyChangeMultipleKeys(
2362 IN HANDLE KeyHandle
,
2364 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2365 IN HANDLE EventHandle OPTIONAL
,
2366 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
2367 IN PVOID ApcContext OPTIONAL
,
2368 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2369 IN ULONG NotifyFilter
,
2370 IN BOOLEAN WatchSubtree
,
2372 IN ULONG BufferLength
,
2373 IN BOOLEAN Asynchronous
);
2378 ZwQueryMultipleValueKey(
2379 IN HANDLE KeyHandle
,
2380 IN OUT PKEY_VALUE_ENTRY ValueList
,
2381 IN ULONG NumberOfValues
,
2383 IN OUT PULONG Length
,
2384 OUT PULONG ReturnLength
);
2389 ZwInitializeRegistry(
2395 /* Security and auditing */
2401 IN HANDLE TokenHandle
,
2402 IN PPRIVILEGE_SET RequiredPrivileges
,
2403 OUT PBOOLEAN Result
);
2408 ZwPrivilegeObjectAuditAlarm(
2409 IN PUNICODE_STRING SubsystemName
,
2411 IN HANDLE TokenHandle
,
2412 IN ACCESS_MASK DesiredAccess
,
2413 IN PPRIVILEGE_SET Privileges
,
2414 IN BOOLEAN AccessGranted
);
2419 ZwPrivilegeObjectAuditAlarm(
2420 IN PUNICODE_STRING SubsystemName
,
2422 IN HANDLE TokenHandle
,
2423 IN ACCESS_MASK DesiredAccess
,
2424 IN PPRIVILEGE_SET Privileges
,
2425 IN BOOLEAN AccessGranted
);
2431 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2432 IN HANDLE TokenHandle
,
2433 IN ACCESS_MASK DesiredAccess
,
2434 IN PGENERIC_MAPPING GenericMapping
,
2435 IN PPRIVILEGE_SET PrivilegeSet
,
2436 IN PULONG PrivilegeSetLength
,
2437 OUT PACCESS_MASK GrantedAccess
,
2438 OUT PNTSTATUS AccessStatus
);
2443 ZwAccessCheckAndAuditAlarm(
2444 IN PUNICODE_STRING SubsystemName
,
2446 IN PUNICODE_STRING ObjectTypeName
,
2447 IN PUNICODE_STRING ObjectName
,
2448 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2449 IN ACCESS_MASK DesiredAccess
,
2450 IN PGENERIC_MAPPING GenericMapping
,
2451 IN BOOLEAN ObjectCreation
,
2452 OUT PACCESS_MASK GrantedAccess
,
2453 OUT PBOOLEAN AccessStatus
,
2454 OUT PBOOLEAN GenerateOnClose
);
2459 ZwAccessCheckByType(
2460 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2461 IN PSID PrincipalSelfSid
,
2462 IN HANDLE TokenHandle
,
2463 IN ULONG DesiredAccess
,
2464 IN POBJECT_TYPE_LIST ObjectTypeList
,
2465 IN ULONG ObjectTypeListLength
,
2466 IN PGENERIC_MAPPING GenericMapping
,
2467 IN PPRIVILEGE_SET PrivilegeSet
,
2468 IN PULONG PrivilegeSetLength
,
2469 OUT PACCESS_MASK GrantedAccess
,
2470 OUT PULONG AccessStatus
);
2472 typedef enum _AUDIT_EVENT_TYPE
{
2473 AuditEventObjectAccess
,
2474 AuditEventDirectoryServiceAccess
2475 } AUDIT_EVENT_TYPE
, *PAUDIT_EVENT_TYPE
;
2480 ZwAccessCheckByTypeAndAuditAlarm(
2481 IN PUNICODE_STRING SubsystemName
,
2483 IN PUNICODE_STRING ObjectTypeName
,
2484 IN PUNICODE_STRING ObjectName
,
2485 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2486 IN PSID PrincipalSelfSid
,
2487 IN ACCESS_MASK DesiredAccess
,
2488 IN AUDIT_EVENT_TYPE AuditType
,
2490 IN POBJECT_TYPE_LIST ObjectTypeList
,
2491 IN ULONG ObjectTypeListLength
,
2492 IN PGENERIC_MAPPING GenericMapping
,
2493 IN BOOLEAN ObjectCreation
,
2494 OUT PACCESS_MASK GrantedAccess
,
2495 OUT PULONG AccessStatus
,
2496 OUT PBOOLEAN GenerateOnClose
);
2501 ZwAccessCheckByTypeResultList(
2502 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2503 IN PSID PrincipalSelfSid
,
2504 IN HANDLE TokenHandle
,
2505 IN ACCESS_MASK DesiredAccess
,
2506 IN POBJECT_TYPE_LIST ObjectTypeList
,
2507 IN ULONG ObjectTypeListLength
,
2508 IN PGENERIC_MAPPING GenericMapping
,
2509 IN PPRIVILEGE_SET PrivilegeSet
,
2510 IN PULONG PrivilegeSetLength
,
2511 OUT PACCESS_MASK GrantedAccessList
,
2512 OUT PULONG AccessStatusList
);
2517 ZwAccessCheckByTypeResultListAndAuditAlarm(
2518 IN PUNICODE_STRING SubsystemName
,
2520 IN PUNICODE_STRING ObjectTypeName
,
2521 IN PUNICODE_STRING ObjectName
,
2522 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2523 IN PSID PrincipalSelfSid
,
2524 IN ACCESS_MASK DesiredAccess
,
2525 IN AUDIT_EVENT_TYPE AuditType
,
2527 IN POBJECT_TYPE_LIST ObjectTypeList
,
2528 IN ULONG ObjectTypeListLength
,
2529 IN PGENERIC_MAPPING GenericMapping
,
2530 IN BOOLEAN ObjectCreation
,
2531 OUT PACCESS_MASK GrantedAccessList
,
2532 OUT PULONG AccessStatusList
,
2533 OUT PULONG GenerateOnClose
);
2538 ZwAccessCheckByTypeResultListAndAuditAlarmByHandle(
2539 IN PUNICODE_STRING SubsystemName
,
2541 IN HANDLE TokenHandle
,
2542 IN PUNICODE_STRING ObjectTypeName
,
2543 IN PUNICODE_STRING ObjectName
,
2544 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2545 IN PSID PrincipalSelfSid
,
2546 IN ACCESS_MASK DesiredAccess
,
2547 IN AUDIT_EVENT_TYPE AuditType
,
2549 IN POBJECT_TYPE_LIST ObjectTypeList
,
2550 IN ULONG ObjectTypeListLength
,
2551 IN PGENERIC_MAPPING GenericMapping
,
2552 IN BOOLEAN ObjectCreation
,
2553 OUT PACCESS_MASK GrantedAccessList
,
2554 OUT PULONG AccessStatusList
,
2555 OUT PULONG GenerateOnClose
);
2560 ZwOpenObjectAuditAlarm(
2561 IN PUNICODE_STRING SubsystemName
,
2563 IN PUNICODE_STRING ObjectTypeName
,
2564 IN PUNICODE_STRING ObjectName
,
2565 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2566 IN HANDLE TokenHandle
,
2567 IN ACCESS_MASK DesiredAccess
,
2568 IN ACCESS_MASK GrantedAccess
,
2569 IN PPRIVILEGE_SET Privileges OPTIONAL
,
2570 IN BOOLEAN ObjectCreation
,
2571 IN BOOLEAN AccessGranted
,
2572 OUT PBOOLEAN GenerateOnClose
);
2577 ZwCloseObjectAuditAlarm(
2578 IN PUNICODE_STRING SubsystemName
,
2580 IN BOOLEAN GenerateOnClose
);
2585 ZwDeleteObjectAuditAlarm(
2586 IN PUNICODE_STRING SubsystemName
,
2588 IN BOOLEAN GenerateOnClose
);
2593 /* Plug and play and power management */
2598 ZwRequestWakeupLatency(
2599 IN LATENCY_TIME Latency
);
2604 ZwRequestDeviceWakeup(
2605 IN HANDLE DeviceHandle
);
2610 ZwCancelDeviceWakeupRequest(
2611 IN HANDLE DeviceHandle
);
2616 ZwIsSystemResumeAutomatic(
2622 ZwSetThreadExecutionState(
2623 IN EXECUTION_STATE ExecutionState
,
2624 OUT PEXECUTION_STATE PreviousExecutionState
);
2629 ZwGetDevicePowerState(
2630 IN HANDLE DeviceHandle
,
2631 OUT PDEVICE_POWER_STATE DevicePowerState
);
2636 ZwSetSystemPowerState(
2637 IN POWER_ACTION SystemAction
,
2638 IN SYSTEM_POWER_STATE MinSystemState
,
2644 ZwInitiatePowerAction(
2645 IN POWER_ACTION SystemAction
,
2646 IN SYSTEM_POWER_STATE MinSystemState
,
2648 IN BOOLEAN Asynchronous
);
2654 IN POWER_INFORMATION_LEVEL PowerInformationLevel
,
2655 IN PVOID InputBuffer OPTIONAL
,
2656 IN ULONG InputBufferLength
,
2657 OUT PVOID OutputBuffer OPTIONAL
,
2658 IN ULONG OutputBufferLength
);
2664 IN ULONG ControlCode
,
2665 IN OUT PVOID Buffer
,
2666 IN ULONG BufferLength
);
2675 IN ULONG BufferLength
);
2686 IN PEXCEPTION_RECORD ExceptionRecord
,
2687 IN PCONTEXT Context
,
2688 IN BOOLEAN SearchFrames
);
2694 IN PCONTEXT Context
,
2695 IN BOOLEAN TestAlert
);
2701 IN ULONG RoutineIndex
,
2703 IN ULONG ArgumentLength
,
2704 OUT PVOID
*Result OPTIONAL
,
2705 OUT PULONG ResultLength OPTIONAL
);
2710 ZwSetLowWaitHighThread(
2716 ZwSetHighWaitLowThread(
2723 IN PUNICODE_STRING DriverServiceName
);
2729 IN PUNICODE_STRING DriverServiceName
);
2734 ZwFlushInstructionCache(
2735 IN HANDLE ProcessHandle
,
2736 IN PVOID BaseAddress OPTIONAL
,
2737 IN ULONG FlushSize
);
2748 ZwQueryDefaultLocale(
2749 IN BOOLEAN ThreadOrSystem
,
2756 IN BOOLEAN ThreadOrSystem
,
2762 ZwQueryDefaultUILanguage(
2763 OUT PLANGID LanguageId
);
2768 ZwSetDefaultUILanguage(
2769 IN LANGID LanguageId
);
2774 ZwQueryInstallUILanguage(
2775 OUT PLANGID LanguageId
);
2780 NtAllocateLocallyUniqueId(
2787 OUT PULARGE_INTEGER UuidLastTimeAllocated
,
2788 OUT PULONG UuidDeltaTime
,
2789 OUT PULONG UuidSequenceNumber
,
2790 OUT PUCHAR UuidSeed
);
2796 IN PUCHAR UuidSeed
);
2802 IN PUCHAR UuidSeed
);
2804 typedef enum _HARDERROR_RESPONSE_OPTION
{
2805 OptionAbortRetryIgnore
,
2811 OptionShutdownSystem
2812 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
2814 typedef enum _HARDERROR_RESPONSE
{
2815 ResponseReturnToCaller
,
2824 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
2831 IN ULONG NumberOfArguments
,
2832 IN ULONG StringArgumentsMask
,
2833 IN PULONG Arguments
,
2834 IN HARDERROR_RESPONSE_OPTION ResponseOption
,
2835 OUT PHARDERROR_RESPONSE Response
);
2840 ZwSetDefaultHardErrorPort(
2841 IN HANDLE PortHandle
);
2847 IN PUNICODE_STRING String
);
2853 IN PUNICODE_STRING FileName
,
2854 IN PULARGE_INTEGER InitialSize
,
2855 IN PULARGE_INTEGER MaximumSize
,
2858 typedef USHORT RTL_ATOM
, *PRTL_ATOM
;
2865 IN ULONG AtomNameLength
,
2866 OUT PRTL_ATOM Atom
);
2873 IN ULONG AtomNameLength
,
2874 OUT PRTL_ATOM Atom
);
2882 typedef enum _ATOM_INFORMATION_CLASS
{
2883 AtomBasicInformation
,
2884 AtomTableInformation
2885 } ATOM_INFORMATION_CLASS
;
2890 NtQueryInformationAtom(
2892 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
2893 OUT PVOID AtomInformation
,
2894 IN ULONG AtomInformationLength
,
2895 OUT PULONG ReturnLength OPTIONAL
);
2897 typedef struct _ATOM_BASIC_INFORMATION
{
2902 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
2904 typedef struct _ATOM_LIST_INFORMATION
{
2905 ULONG NumberOfAtoms
;
2907 } ATOM_LIST_INFORMATION
, *PATOM_LIST_INFORMATION
;
2914 IN LDT_ENTRY LdtEntry1
,
2916 IN LDT_ENTRY LdtEntry2
);
2922 IN ULONG ControlCode
,
2923 IN PVOID ControlData
);
2929 #endif /* __NTAPI_H */