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
44 typedef struct _PEB
*PPEB
;
46 /* FIXME: Unknown definitions */
47 typedef PVOID POBJECT_TYPE_LIST
;
48 typedef PVOID PEXECUTION_STATE
;
49 typedef PVOID PLANGID
;
51 #ifndef NtCurrentProcess
52 #define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
53 #endif /* NtCurrentProcess */
54 #ifndef NtCurrentThread
55 #define NtCurrentThread() ( (HANDLE) 0xFFFFFFFE )
56 #endif /* NtCurrentThread */
58 /* System information and control */
60 typedef enum _SYSTEM_INFORMATION_CLASS
{
61 SystemInformationClassMin
= 0,
62 SystemBasicInformation
= 0,
63 SystemProcessorInformation
= 1,
64 SystemPerformanceInformation
= 2,
65 SystemTimeOfDayInformation
= 3,
66 SystemPathInformation
= 4,
67 SystemNotImplemented1
= 4,
68 SystemProcessInformation
= 5,
69 SystemProcessesAndThreadsInformation
= 5,
70 SystemCallCountInfoInformation
= 6,
72 SystemDeviceInformation
= 7,
73 SystemConfigurationInformation
= 7,
74 SystemProcessorPerformanceInformation
= 8,
75 SystemProcessorTimes
= 8,
76 SystemFlagsInformation
= 9,
78 SystemCallTimeInformation
= 10,
79 SystemNotImplemented2
= 10,
80 SystemModuleInformation
= 11,
81 SystemLocksInformation
= 12,
82 SystemLockInformation
= 12,
83 SystemStackTraceInformation
= 13,
84 SystemNotImplemented3
= 13,
85 SystemPagedPoolInformation
= 14,
86 SystemNotImplemented4
= 14,
87 SystemNonPagedPoolInformation
= 15,
88 SystemNotImplemented5
= 15,
89 SystemHandleInformation
= 16,
90 SystemObjectInformation
= 17,
91 SystemPageFileInformation
= 18,
92 SystemPagefileInformation
= 18,
93 SystemVdmInstemulInformation
= 19,
94 SystemInstructionEmulationCounts
= 19,
95 SystemVdmBopInformation
= 20,
96 SystemInvalidInfoClass1
= 20,
97 SystemFileCacheInformation
= 21,
98 SystemCacheInformation
= 21,
99 SystemPoolTagInformation
= 22,
100 SystemInterruptInformation
= 23,
101 SystemProcessorStatistics
= 23,
102 SystemDpcBehaviourInformation
= 24,
103 SystemDpcInformation
= 24,
104 SystemFullMemoryInformation
= 25,
105 SystemNotImplemented6
= 25,
106 SystemLoadImage
= 26,
107 SystemUnloadImage
= 27,
108 SystemTimeAdjustmentInformation
= 28,
109 SystemTimeAdjustment
= 28,
110 SystemSummaryMemoryInformation
= 29,
111 SystemNotImplemented7
= 29,
112 SystemNextEventIdInformation
= 30,
113 SystemNotImplemented8
= 30,
114 SystemEventIdsInformation
= 31,
115 SystemNotImplemented9
= 31,
116 SystemCrashDumpInformation
= 32,
117 SystemExceptionInformation
= 33,
118 SystemCrashDumpStateInformation
= 34,
119 SystemKernelDebuggerInformation
= 35,
120 SystemContextSwitchInformation
= 36,
121 SystemRegistryQuotaInformation
= 37,
122 SystemLoadAndCallImage
= 38,
123 SystemPrioritySeparation
= 39,
124 SystemPlugPlayBusInformation
= 40,
125 SystemNotImplemented10
= 40,
126 SystemDockInformation
= 41,
127 SystemNotImplemented11
= 41,
128 /* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */
129 SystemInvalidInfoClass2
= 42,
130 SystemProcessorSpeedInformation
= 43,
131 SystemInvalidInfoClass3
= 43,
132 SystemCurrentTimeZoneInformation
= 44,
133 SystemTimeZoneInformation
= 44,
134 SystemLookasideInformation
= 45,
135 SystemSetTimeSlipEvent
= 46,
136 SystemCreateSession
= 47,
137 SystemDeleteSession
= 48,
138 SystemInvalidInfoClass4
= 49,
139 SystemRangeStartInformation
= 50,
140 SystemVerifierInformation
= 51,
141 SystemAddVerifier
= 52,
142 SystemSessionProcessesInformation
= 53,
143 SystemInformationClassMax
144 } SYSTEM_INFORMATION_CLASS
;
146 typedef struct _SYSTEM_BASIC_INFORMATION
{
148 ULONG MaximumIncrement
;
149 ULONG PhysicalPageSize
;
150 ULONG NumberOfPhysicalPages
;
151 ULONG LowestPhysicalPage
;
152 ULONG HighestPhysicalPage
;
153 ULONG AllocationGranularity
;
154 ULONG LowestUserAddress
;
155 ULONG HighestUserAddress
;
156 ULONG ActiveProcessors
;
157 UCHAR NumberProcessors
;
158 } SYSTEM_BASIC_INFORMATION
, *PSYSTEM_BASIC_INFORMATION
;
160 typedef struct _SYSTEM_PROCESSOR_INFORMATION
{
161 USHORT ProcessorArchitecture
;
162 USHORT ProcessorLevel
;
163 USHORT ProcessorRevision
;
166 } SYSTEM_PROCESSOR_INFORMATION
, *PSYSTEM_PROCESSOR_INFORMATION
;
168 typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
169 LARGE_INTEGER IdleTime
;
170 LARGE_INTEGER ReadTransferCount
;
171 LARGE_INTEGER WriteTransferCount
;
172 LARGE_INTEGER OtherTransferCount
;
173 ULONG ReadOperationCount
;
174 ULONG WriteOperationCount
;
175 ULONG OtherOperationCount
;
176 ULONG AvailablePages
;
177 ULONG TotalCommittedPages
;
178 ULONG TotalCommitLimit
;
179 ULONG PeakCommitment
;
181 ULONG WriteCopyFaults
;
182 ULONG TransitionFaults
;
183 ULONG CacheTransitionFaults
;
184 ULONG DemandZeroFaults
;
189 ULONG PagefilePagesWritten
;
190 ULONG PagefilePageWriteIos
;
191 ULONG MappedFilePagesWritten
;
192 ULONG MappedFilePageWriteIos
;
193 ULONG PagedPoolUsage
;
194 ULONG NonPagedPoolUsage
;
195 ULONG PagedPoolAllocs
;
196 ULONG PagedPoolFrees
;
197 ULONG NonPagedPoolAllocs
;
198 ULONG NonPagedPoolFrees
;
199 ULONG TotalFreeSystemPtes
;
200 ULONG SystemCodePage
;
201 ULONG TotalSystemDriverPages
;
202 ULONG TotalSystemCodePages
;
203 ULONG SmallNonPagedLookasideListAllocateHits
;
204 ULONG SmallPagedLookasideListAllocateHits
;
206 ULONG MmSystemCachePage
;
208 ULONG SystemDriverPage
;
209 ULONG FastReadNoWait
;
211 ULONG FastReadResourceMiss
;
212 ULONG FastReadNotPossible
;
213 ULONG FastMdlReadNoWait
;
214 ULONG FastMdlReadWait
;
215 ULONG FastMdlReadResourceMiss
;
216 ULONG FastMdlReadNotPossible
;
219 ULONG MapDataNoWaitMiss
;
220 ULONG MapDataWaitMiss
;
221 ULONG PinMappedDataCount
;
224 ULONG PinReadNoWaitMiss
;
225 ULONG PinReadWaitMiss
;
226 ULONG CopyReadNoWait
;
228 ULONG CopyReadNoWaitMiss
;
229 ULONG CopyReadWaitMiss
;
232 ULONG MdlReadNoWaitMiss
;
233 ULONG MdlReadWaitMiss
;
236 ULONG LazyWritePages
;
239 ULONG ContextSwitches
;
240 ULONG FirstLevelTbFills
;
241 ULONG SecondLevelTbFills
;
243 } SYSTEM_PERFORMANCE_INFORMATION
, *PSYSTEM_PERFORMANCE_INFORMATION
;
245 typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION
{
246 LARGE_INTEGER BootTime
;
247 LARGE_INTEGER CurrentTime
;
248 LARGE_INTEGER TimeZoneBias
;
249 ULONG CurrentTimeZoneId
;
250 } SYSTEM_TIME_OF_DAY_INFORMATION
, *PSYSTEM_TIME_OF_DAY_INFORMATION
;
252 typedef struct _VM_COUNTERS
{
253 ULONG PeakVirtualSize
;
255 ULONG PageFaultCount
;
256 ULONG PeakWorkingSetSize
;
257 ULONG WorkingSetSize
;
258 ULONG QuotaPeakPagedPoolUsage
;
259 ULONG QuotaPagedPoolUsage
;
260 ULONG QuotaPeakNonPagedPoolUsage
;
261 ULONG QuotaNonPagedPoolUsage
;
263 ULONG PeakPagefileUsage
;
266 typedef enum _THREAD_STATE
{
277 typedef struct _SYSTEM_THREADS
{
278 LARGE_INTEGER KernelTime
;
279 LARGE_INTEGER UserTime
;
280 LARGE_INTEGER CreateTime
;
285 KPRIORITY BasePriority
;
286 ULONG ContextSwitchCount
;
288 KWAIT_REASON WaitReason
;
289 } SYSTEM_THREADS
, *PSYSTEM_THREADS
;
291 typedef struct _SYSTEM_PROCESSES
{
292 ULONG NextEntryDelta
;
295 LARGE_INTEGER CreateTime
;
296 LARGE_INTEGER UserTime
;
297 LARGE_INTEGER KernelTime
;
298 UNICODE_STRING ProcessName
;
299 KPRIORITY BasePriority
;
301 ULONG InheritedFromProcessId
;
304 VM_COUNTERS VmCounters
;
305 IO_COUNTERS IoCounters
;
306 SYSTEM_THREADS Threads
[1];
307 } SYSTEM_PROCESSES
, *PSYSTEM_PROCESSES
;
309 typedef struct _SYSTEM_CALLS_INFORMATION
{
311 ULONG NumberOfDescriptorTables
;
312 ULONG NumberOfRoutinesInTable
[1];
313 ULONG CallCounts
[ANYSIZE_ARRAY
];
314 } SYSTEM_CALLS_INFORMATION
, *PSYSTEM_CALLS_INFORMATION
;
316 typedef struct _SYSTEM_CONFIGURATION_INFORMATION
{
323 } SYSTEM_CONFIGURATION_INFORMATION
, *PSYSTEM_CONFIGURATION_INFORMATION
;
325 typedef struct _SYSTEM_PROCESSOR_TIMES
{
326 LARGE_INTEGER IdleTime
;
327 LARGE_INTEGER KernelTime
;
328 LARGE_INTEGER UserTime
;
329 LARGE_INTEGER DpcTime
;
330 LARGE_INTEGER InterruptTime
;
331 ULONG InterruptCount
;
332 } SYSTEM_PROCESSOR_TIMES
, *PSYSTEM_PROCESSOR_TIMES
;
334 /* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */
335 #define FLG_STOP_ON_EXCEPTION 0x00000001
336 #define FLG_SHOW_LDR_SNAPS 0x00000002
337 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
338 #define FLG_STOP_ON_HUNG_GUI 0x00000008
339 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
340 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
341 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
342 #define FLG_HEAP_VALIDATE_ALL 0x00000080
343 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
344 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
345 #define FLG_POOL_ENABLE_TAGGING 0x00000400
346 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
347 #define FLG_USER_STACK_TRACE_DB 0x00001000
348 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
349 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
350 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
351 #define FLG_IGNORE_DEBUG_PRIV 0x00010000
352 #define FLG_ENABLE_CSRDEBUG 0x00020000
353 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
354 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
355 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
356 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
357 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
358 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
359 #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000
361 typedef struct _SYSTEM_GLOBAL_FLAG
{
363 } SYSTEM_GLOBAL_FLAG
, *PSYSTEM_GLOBAL_FLAG
;
365 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY
{
372 /* Length of module name not including the path, this
373 field contains valid value only for NTOSKRNL module */
378 } SYSTEM_MODULE_INFORMATION_ENTRY
, *PSYSTEM_MODULE_INFORMATION_ENTRY
;
380 typedef struct _SYSTEM_MODULE_INFORMATION
{
382 SYSTEM_MODULE_INFORMATION_ENTRY Module
[1];
383 } SYSTEM_MODULE_INFORMATION
, *PSYSTEM_MODULE_INFORMATION
;
385 typedef struct _SYSTEM_LOCK_INFORMATION
{
389 ULONG ExclusiveOwnerThreadId
;
391 ULONG ContentionCount
;
393 ULONG NumberOfSharedWaiters
;
394 ULONG NumberOfExclusiveWaiters
;
395 } SYSTEM_LOCK_INFORMATION
, *PSYSTEM_LOCK_INFORMATION
;
397 /*SYSTEM_HANDLE_INFORMATION.Flags cosntants */
398 #define PROTECT_FROM_CLOSE 0x01
401 typedef struct _SYSTEM_HANDLE_INFORMATION
{
403 UCHAR ObjectTypeNumber
;
407 ACCESS_MASK GrantedAccess
;
408 } SYSTEM_HANDLE_INFORMATION
, *PSYSTEM_HANDLE_INFORMATION
;
410 typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION
{
411 ULONG NextEntryOffset
;
415 ULONG InvalidAttributes
;
416 GENERIC_MAPPING GenericMapping
;
417 ACCESS_MASK ValidAccessMask
;
421 } SYSTEM_OBJECT_TYPE_INFORMATION
, *PSYSTEM_OBJECT_TYPE_INFORMATION
;
423 /* SYSTEM_OBJECT_INFORMATION.Flags constants */
424 #define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY 0x40
425 #define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20
426 #define FLG_SYSOBJINFO_PERMANENT 0x10
427 #define FLG_SYSOBJINFO_EXCLUSIVE 0x08
428 #define FLG_SYSOBJINFO_CREATOR_INFO 0x04
429 #define FLG_SYSOBJINFO_KERNEL_MODE 0x02
431 typedef struct _SYSTEM_OBJECT_INFORMATION
{
432 ULONG NextEntryOffset
;
434 ULONG CreatorProcessId
;
439 ULONG PagedPoolUsage
;
440 ULONG NonPagedPoolUsage
;
441 ULONG ExclusiveProcessId
;
442 PSECURITY_DESCRIPTOR SecurityDescriptor
;
444 } SYSTEM_OBJECT_INFORMATION
, *PSYSTEM_OBJECT_INFORMATION
;
446 typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
447 ULONG NextEntryOffset
;
451 UNICODE_STRING FileName
;
452 } SYSTEM_PAGEFILE_INFORMATION
, *PSYSTEM_PAGEFILE_INFORMATION
;
454 typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION
{
455 ULONG SegmentNotPresent
;
488 ULONG GenericInvalidOpcode
;
489 } SYSTEM_INSTRUCTION_EMULATION_INFORMATION
, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION
;
491 typedef struct _SYSTEM_POOL_TAG_INFORMATION
{
493 ULONG PagedPoolAllocs
;
494 ULONG PagedPoolFrees
;
495 ULONG PagedPoolUsage
;
496 ULONG NonPagedPoolAllocs
;
497 ULONG NonPagedPoolFrees
;
498 ULONG NonPagedPoolUsage
;
499 } SYSTEM_POOL_TAG_INFORMATION
, *PSYSTEM_POOL_TAG_INFORMATION
;
501 typedef struct _SYSTEM_PROCESSOR_STATISTICS
{
502 ULONG ContextSwitches
;
504 ULONG DpcRequestRate
;
506 ULONG DpcBypassCount
;
507 ULONG ApcBypassCount
;
508 } SYSTEM_PROCESSOR_STATISTICS
, *PSYSTEM_PROCESSOR_STATISTICS
;
510 typedef struct _SYSTEM_DPC_INFORMATION
{
512 ULONG MaximumDpcQueueDepth
;
513 ULONG MinimumDpcRate
;
514 ULONG AdjustDpcThreshold
;
516 } SYSTEM_DPC_INFORMATION
, *PSYSTEM_DPC_INFORMATION
;
518 typedef struct _SYSTEM_LOAD_IMAGE
{
519 UNICODE_STRING ModuleName
;
521 PVOID SectionPointer
;
523 PVOID ExportDirectory
;
524 } SYSTEM_LOAD_IMAGE
, *PSYSTEM_LOAD_IMAGE
;
526 typedef struct _SYSTEM_UNLOAD_IMAGE
{
528 } SYSTEM_UNLOAD_IMAGE
, *PSYSTEM_UNLOAD_IMAGE
;
530 typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT
{
531 ULONG TimeAdjustment
;
532 ULONG MaximumIncrement
;
533 BOOLEAN TimeSynchronization
;
534 } SYSTEM_QUERY_TIME_ADJUSTMENT
, *PSYSTEM_QUERY_TIME_ADJUSTMENT
;
536 typedef struct _SYSTEM_SET_TIME_ADJUSTMENT
{
537 ULONG TimeAdjustment
;
538 BOOLEAN TimeSynchronization
;
539 } SYSTEM_SET_TIME_ADJUSTMENT
, *PSYSTEM_SET_TIME_ADJUSTMENT
;
541 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION
{
542 HANDLE CrashDumpSectionHandle
;
544 } SYSTEM_CRASH_DUMP_INFORMATION
, *PSYSTEM_CRASH_DUMP_INFORMATION
;
546 typedef struct _SYSTEM_EXCEPTION_INFORMATION
{
547 ULONG AlignmentFixupCount
;
548 ULONG ExceptionDispatchCount
;
549 ULONG FloatingEmulationCount
;
551 } SYSTEM_EXCEPTION_INFORMATION
, *PSYSTEM_EXCEPTION_INFORMATION
;
553 typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION
{
554 ULONG CrashDumpSectionExists
;
556 } SYSTEM_CRASH_DUMP_STATE_INFORMATION
, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION
;
558 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
{
559 BOOLEAN DebuggerEnabled
;
560 BOOLEAN DebuggerNotPresent
;
561 } SYSTEM_KERNEL_DEBUGGER_INFORMATION
, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION
;
563 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
{
564 ULONG ContextSwitches
;
565 ULONG ContextSwitchCounters
[11];
566 } SYSTEM_CONTEXT_SWITCH_INFORMATION
, *PSYSTEM_CONTEXT_SWITCH_INFORMATION
;
568 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
{
570 ULONG RegistryQuotaInUse
;
572 } SYSTEM_REGISTRY_QUOTA_INFORMATION
, *PSYSTEM_REGISTRY_QUOTA_INFORMATION
;
574 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE
{
575 UNICODE_STRING ModuleName
;
576 } SYSTEM_LOAD_AND_CALL_IMAGE
, *PSYSTEM_LOAD_AND_CALL_IMAGE
;
578 typedef struct _SYSTEM_PRIORITY_SEPARATION
{
579 ULONG PrioritySeparation
;
580 } SYSTEM_PRIORITY_SEPARATION
, *PSYSTEM_PRIORITY_SEPARATION
;
582 typedef struct _SYSTEM_TIME_ZONE_INFORMATION
{
584 WCHAR StandardName
[32];
585 LARGE_INTEGER StandardDate
;
587 WCHAR DaylightName
[32];
588 LARGE_INTEGER DaylightDate
;
590 } SYSTEM_TIME_ZONE_INFORMATION
, *PSYSTEM_TIME_ZONE_INFORMATION
;
592 typedef struct _SYSTEM_LOOKASIDE_INFORMATION
{
595 ULONG TotalAllocates
;
596 ULONG AllocateMisses
;
602 } SYSTEM_LOOKASIDE_INFORMATION
, *PSYSTEM_LOOKASIDE_INFORMATION
;
604 typedef struct _SYSTEM_SET_TIME_SLIP_EVENT
{
605 HANDLE TimeSlipEvent
;
606 } SYSTEM_SET_TIME_SLIP_EVENT
, *PSYSTEM_SET_TIME_SLIP_EVENT
;
608 typedef struct _SYSTEM_CREATE_SESSION
{
610 } SYSTEM_CREATE_SESSION
, *PSYSTEM_CREATE_SESSION
;
612 typedef struct _SYSTEM_DELETE_SESSION
{
614 } SYSTEM_DELETE_SESSION
, *PSYSTEM_DELETE_SESSION
;
616 typedef struct _SYSTEM_RANGE_START_INFORMATION
{
617 PVOID SystemRangeStart
;
618 } SYSTEM_RANGE_START_INFORMATION
, *PSYSTEM_RANGE_START_INFORMATION
;
620 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
{
624 } SYSTEM_SESSION_PROCESSES_INFORMATION
, *PSYSTEM_SESSION_PROCESSES_INFORMATION
;
626 typedef struct _SYSTEM_POOL_BLOCK
{
631 } SYSTEM_POOL_BLOCK
, *PSYSTEM_POOL_BLOCK
;
633 typedef struct _SYSTEM_POOL_BLOCKS_INFORMATION
{
637 ULONG NumberOfBlocks
;
638 SYSTEM_POOL_BLOCK PoolBlocks
[1];
639 } SYSTEM_POOL_BLOCKS_INFORMATION
, *PSYSTEM_POOL_BLOCKS_INFORMATION
;
641 typedef struct _SYSTEM_MEMORY_USAGE
{
647 } SYSTEM_MEMORY_USAGE
, *PSYSTEM_MEMORY_USAGE
;
649 typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION
{
652 SYSTEM_MEMORY_USAGE MemoryUsage
[1];
653 } SYSTEM_MEMORY_USAGE_INFORMATION
, *PSYSTEM_MEMORY_USAGE_INFORMATION
;
658 NtQuerySystemInformation(
659 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
660 IN OUT PVOID SystemInformation
,
661 IN ULONG SystemInformationLength
,
662 OUT PULONG ReturnLength OPTIONAL
);
667 ZwQuerySystemInformation(
668 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
669 IN OUT PVOID SystemInformation
,
670 IN ULONG SystemInformationLength
,
671 OUT PULONG ReturnLength OPTIONAL
);
676 ZwSetSystemInformation(
677 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
678 IN OUT PVOID SystemInformation
,
679 IN ULONG SystemInformationLength
);
684 ZwQuerySystemEnvironmentValue(
685 IN PUNICODE_STRING Name
,
687 IN ULONG ValueLength
,
688 OUT PULONG ReturnLength OPTIONAL
);
693 ZwSetSystemEnvironmentValue(
694 IN PUNICODE_STRING Name
,
695 IN PUNICODE_STRING Value
);
697 typedef enum _SHUTDOWN_ACTION
{
707 IN SHUTDOWN_ACTION Action
);
709 typedef enum _DEBUG_CONTROL_CODE
{
710 DebugGetTraceInformation
= 1,
711 DebugSetInternalBreakpoint
,
713 DebugClearSpecialCalls
,
714 DebugQuerySpecialCalls
,
717 } DEBUG_CONTROL_CODE
;
723 ZwSystemDebugControl(
724 IN DEBUG_CONTROL_CODE ControlCode
,
725 IN PVOID InputBuffer OPTIONAL
,
726 IN ULONG InputBufferLength
,
727 OUT PVOID OutputBuffer OPTIONAL
,
728 IN ULONG OutputBufferLength
,
729 OUT PULONG ReturnLength OPTIONAL
);
733 /* Objects, Object directories, and symbolic links */
735 typedef enum _OBJECT_INFORMATION_CLASS
{
736 ObjectBasicInformation
,
737 ObjectNameInformation
,
738 ObjectTypeInformation
,
739 ObjectAllTypesInformation
,
740 ObjectHandleInformation
741 } OBJECT_INFORMATION_CLASS
;
747 IN HANDLE ObjectHandle
,
748 IN OBJECT_INFORMATION_CLASS ObjectInformationClass
,
749 OUT PVOID ObjectInformation
,
750 IN ULONG ObjectInformationLength
,
751 OUT PULONG ReturnLength OPTIONAL
);
756 ZwSetInformationObject(
757 IN HANDLE ObjectHandle
,
758 IN OBJECT_INFORMATION_CLASS ObjectInformationClass
,
759 IN PVOID ObjectInformation
,
760 IN ULONG ObjectInformationLength
);
762 /* OBJECT_BASIC_INFORMATION.Attributes constants */
763 /* also in winbase.h */
764 #define HANDLE_FLAG_INHERIT 0x01
765 #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02
767 #define PERMANENT 0x10
768 #define EXCLUSIVE 0x20
770 typedef struct _OBJECT_BASIC_INFORMATION
{
772 ACCESS_MASK GrantedAccess
;
775 ULONG PagedPoolUsage
;
776 ULONG NonPagedPoolUsage
;
778 ULONG NameInformationLength
;
779 ULONG TypeInformationLength
;
780 ULONG SecurityDescriptorLength
;
781 LARGE_INTEGER CreateTime
;
782 } OBJECT_BASIC_INFORMATION
, *POBJECT_BASIC_INFORMATION
;
784 /* FIXME: Enable later */
785 typedef struct _OBJECT_TYPE_INFORMATION
{
790 ULONG PeakObjectCount
;
791 ULONG PeakHandleCount
;
793 ULONG InvalidAttributes
;
794 GENERIC_MAPPING GenericMapping
;
797 BOOLEAN MaintainHandleDatabase
;
799 ULONG PagedPoolUsage
;
800 ULONG NonPagedPoolUsage
;
801 } OBJECT_TYPE_INFORMATION
, *POBJECT_TYPE_INFORMATION
;
803 typedef struct _OBJECT_ALL_TYPES_INFORMATION
{
805 OBJECT_TYPE_INFORMATION TypeInformation
;
806 } OBJECT_ALL_TYPES_INFORMATION
, *POBJECT_ALL_TYPES_INFORMATION
;
808 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION
{
810 BOOLEAN ProtectFromClose
;
811 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION
, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION
;
817 IN HANDLE SourceProcessHandle
,
818 IN HANDLE SourceHandle
,
819 IN HANDLE TargetProcessHandle
,
820 OUT PHANDLE TargetHandle OPTIONAL
,
821 IN ACCESS_MASK DesiredAccess
,
829 IN HANDLE SourceProcessHandle
,
830 IN HANDLE SourceHandle
,
831 IN HANDLE TargetProcessHandle
,
832 OUT PHANDLE TargetHandle OPTIONAL
,
833 IN ACCESS_MASK DesiredAccess
,
840 NtQuerySecurityObject(
842 IN SECURITY_INFORMATION SecurityInformation
,
843 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
844 IN ULONG SecurityDescriptorLength
,
845 OUT PULONG ReturnLength
);
850 ZwQuerySecurityObject(
852 IN SECURITY_INFORMATION SecurityInformation
,
853 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
854 IN ULONG SecurityDescriptorLength
,
855 OUT PULONG ReturnLength
);
862 IN SECURITY_INFORMATION SecurityInformation
,
863 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
870 IN SECURITY_INFORMATION SecurityInformation
,
871 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
876 ZwOpenDirectoryObject(
877 OUT PHANDLE DirectoryHandle
,
878 IN ACCESS_MASK DesiredAccess
,
879 IN POBJECT_ATTRIBUTES ObjectAttributes
);
884 ZwQueryDirectoryObject(
885 IN HANDLE DirectoryHandle
,
887 IN ULONG BufferLength
,
888 IN BOOLEAN ReturnSingleEntry
,
889 IN BOOLEAN RestartScan
,
890 IN OUT PULONG Context
,
891 OUT PULONG ReturnLength OPTIONAL
);
893 typedef struct _DIRECTORY_BASIC_INFORMATION
{
894 UNICODE_STRING ObjectName
;
895 UNICODE_STRING ObjectTypeName
;
896 } DIRECTORY_BASIC_INFORMATION
, *PDIRECTORY_BASIC_INFORMATION
;
901 ZwCreateSymbolicLinkObject(
902 OUT PHANDLE SymbolicLinkHandle
,
903 IN ACCESS_MASK DesiredAccess
,
904 IN POBJECT_ATTRIBUTES ObjectAttributes
,
905 IN PUNICODE_STRING TargetName
);
912 typedef enum _MEMORY_INFORMATION_CLASS
{
913 MemoryBasicInformation
,
914 MemoryWorkingSetList
,
916 MemoryBasicVlmInformation
917 } MEMORY_INFORMATION_CLASS
;
922 NtAllocateVirtualMemory(
923 IN HANDLE ProcessHandle
,
924 IN OUT PVOID
*BaseAddress
,
926 IN OUT PULONG AllocationSize
,
927 IN ULONG AllocationType
,
933 ZwAllocateVirtualMemory(
934 IN HANDLE ProcessHandle
,
935 IN OUT PVOID
*BaseAddress
,
937 IN OUT PULONG AllocationSize
,
938 IN ULONG AllocationType
,
945 IN HANDLE ProcessHandle
,
946 IN OUT PVOID
*BaseAddress
,
947 IN OUT PULONG FreeSize
,
954 IN HANDLE ProcessHandle
,
955 IN OUT PVOID
*BaseAddress
,
956 IN OUT PULONG FreeSize
,
962 ZwQueryVirtualMemory(
963 IN HANDLE ProcessHandle
,
964 IN PVOID BaseAddress
,
965 IN MEMORY_INFORMATION_CLASS MemoryInformationClass
,
966 OUT PVOID MemoryInformation
,
967 IN ULONG MemoryInformationLength
,
968 OUT PULONG ReturnLength OPTIONAL
);
970 /* MEMORY_WORKING_SET_LIST.WorkingSetList constants */
971 #define WSLE_PAGE_READONLY 0x001
972 #define WSLE_PAGE_EXECUTE 0x002
973 #define WSLE_PAGE_READWRITE 0x004
974 #define WSLE_PAGE_EXECUTE_READ 0x003
975 #define WSLE_PAGE_WRITECOPY 0x005
976 #define WSLE_PAGE_EXECUTE_READWRITE 0x006
977 #define WSLE_PAGE_EXECUTE_WRITECOPY 0x007
978 #define WSLE_PAGE_SHARE_COUNT_MASK 0x0E0
979 #define WSLE_PAGE_SHAREABLE 0x100
981 typedef struct _MEMORY_WORKING_SET_LIST
{
983 ULONG WorkingSetList
[1];
984 } MEMORY_WORKING_SET_LIST
, *PMEMORY_WORKING_SET_LIST
;
986 typedef struct _MEMORY_SECTION_NAME
{
987 UNICODE_STRING SectionFileName
;
988 } MEMORY_SECTION_NAME
, *PMEMORY_SECTION_NAME
;
990 /* Zw[Lock|Unlock]VirtualMemory.LockType constants */
991 #define LOCK_VM_IN_WSL 0x01
992 #define LOCK_VM_IN_RAM 0x02
998 IN HANDLE ProcessHandle
,
999 IN OUT PVOID
*BaseAddress
,
1000 IN OUT PULONG LockSize
,
1006 ZwUnlockVirtualMemory(
1007 IN HANDLE ProcessHandle
,
1008 IN OUT PVOID
*BaseAddress
,
1009 IN OUT PULONG LockSize
,
1015 ZwReadVirtualMemory(
1016 IN HANDLE ProcessHandle
,
1017 IN PVOID BaseAddress
,
1019 IN ULONG BufferLength
,
1020 OUT PULONG ReturnLength OPTIONAL
);
1025 ZwWriteVirtualMemory(
1026 IN HANDLE ProcessHandle
,
1027 IN PVOID BaseAddress
,
1029 IN ULONG BufferLength
,
1030 OUT PULONG ReturnLength OPTIONAL
);
1035 ZwProtectVirtualMemory(
1036 IN HANDLE ProcessHandle
,
1037 IN OUT PVOID
*BaseAddress
,
1038 IN OUT PULONG ProtectSize
,
1039 IN ULONG NewProtect
,
1040 OUT PULONG OldProtect
);
1045 ZwFlushVirtualMemory(
1046 IN HANDLE ProcessHandle
,
1047 IN OUT PVOID
*BaseAddress
,
1048 IN OUT PULONG FlushSize
,
1049 OUT PIO_STATUS_BLOCK IoStatusBlock
);
1054 ZwAllocateUserPhysicalPages(
1055 IN HANDLE ProcessHandle
,
1056 IN PULONG NumberOfPages
,
1057 OUT PULONG PageFrameNumbers
);
1062 ZwFreeUserPhysicalPages(
1063 IN HANDLE ProcessHandle
,
1064 IN OUT PULONG NumberOfPages
,
1065 IN PULONG PageFrameNumbers
);
1070 ZwMapUserPhysicalPages(
1071 IN PVOID BaseAddress
,
1072 IN PULONG NumberOfPages
,
1073 IN PULONG PageFrameNumbers
);
1078 ZwMapUserPhysicalPagesScatter(
1079 IN PVOID
*BaseAddresses
,
1080 IN PULONG NumberOfPages
,
1081 IN PULONG PageFrameNumbers
);
1087 IN HANDLE ProcessHandle
,
1089 IN PVOID BaseAddress
,
1090 IN ULONG RegionSize
,
1092 IN OUT PULONG BufferEntries
,
1093 OUT PULONG Granularity
);
1099 IN HANDLE ProcessHandle
,
1100 IN PVOID BaseAddress
,
1101 IN ULONG RegionSize
);
1108 typedef enum _SECTION_INFORMATION_CLASS
{
1109 SectionBasicInformation
,
1110 SectionImageInformation
1111 } SECTION_INFORMATION_CLASS
;
1117 OUT PHANDLE SectionHandle
,
1118 IN ACCESS_MASK DesiredAccess
,
1119 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1120 IN PLARGE_INTEGER SectionSize OPTIONAL
,
1122 IN ULONG Attributes
,
1123 IN HANDLE FileHandle
);
1129 OUT PHANDLE SectionHandle
,
1130 IN ACCESS_MASK DesiredAccess
,
1131 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1132 IN PLARGE_INTEGER SectionSize OPTIONAL
,
1134 IN ULONG Attributes
,
1135 IN HANDLE FileHandle
);
1141 IN HANDLE SectionHandle
,
1142 IN SECTION_INFORMATION_CLASS SectionInformationClass
,
1143 OUT PVOID SectionInformation
,
1144 IN ULONG SectionInformationLength
,
1145 OUT PULONG ResultLength OPTIONAL
);
1151 IN HANDLE SectionHandle
,
1152 IN PLARGE_INTEGER SectionSize
);
1157 ZwAreMappedFilesTheSame(
1166 typedef struct _USER_STACK
{
1167 PVOID FixedStackBase
;
1168 PVOID FixedStackLimit
;
1169 PVOID ExpandableStackBase
;
1170 PVOID ExpandableStackLimit
;
1171 PVOID ExpandableStackBottom
;
1172 } USER_STACK
, *PUSER_STACK
;
1178 OUT PHANDLE ThreadHandle
,
1179 IN ACCESS_MASK DesiredAccess
,
1180 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1181 IN HANDLE ProcessHandle
,
1182 OUT PCLIENT_ID ClientId
,
1183 IN PCONTEXT ThreadContext
,
1184 IN PUSER_STACK UserStack
,
1185 IN BOOLEAN CreateSuspended
);
1191 OUT PHANDLE ThreadHandle
,
1192 IN ACCESS_MASK DesiredAccess
,
1193 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1194 IN PCLIENT_ID ClientId
);
1200 OUT PHANDLE ThreadHandle
,
1201 IN ACCESS_MASK DesiredAccess
,
1202 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1203 IN PCLIENT_ID ClientId
);
1209 IN HANDLE ThreadHandle OPTIONAL
,
1210 IN NTSTATUS ExitStatus
);
1215 NtQueryInformationThread(
1216 IN HANDLE ThreadHandle
,
1217 IN THREADINFOCLASS ThreadInformationClass
,
1218 OUT PVOID ThreadInformation
,
1219 IN ULONG ThreadInformationLength
,
1220 OUT PULONG ReturnLength OPTIONAL
);
1225 ZwQueryInformationThread(
1226 IN HANDLE ThreadHandle
,
1227 IN THREADINFOCLASS ThreadInformationClass
,
1228 OUT PVOID ThreadInformation
,
1229 IN ULONG ThreadInformationLength
,
1230 OUT PULONG ReturnLength OPTIONAL
);
1235 NtSetInformationThread(
1236 IN HANDLE ThreadHandle
,
1237 IN THREADINFOCLASS ThreadInformationClass
,
1238 IN PVOID ThreadInformation
,
1239 IN ULONG ThreadInformationLength
);
1241 typedef struct _THREAD_BASIC_INFORMATION
{
1242 NTSTATUS ExitStatus
;
1243 PNT_TIB TebBaseAddress
;
1245 KAFFINITY AffinityMask
;
1247 KPRIORITY BasePriority
;
1248 } THREAD_BASIC_INFORMATION
, *PTHREAD_BASIC_INFORMATION
;
1250 typedef struct _KERNEL_USER_TIMES
{
1251 LARGE_INTEGER CreateTime
;
1252 LARGE_INTEGER ExitTime
;
1253 LARGE_INTEGER KernelTime
;
1254 LARGE_INTEGER UserTime
;
1255 } KERNEL_USER_TIMES
, *PKERNEL_USER_TIMES
;
1261 IN HANDLE ThreadHandle
,
1262 OUT PULONG PreviousSuspendCount OPTIONAL
);
1268 IN HANDLE ThreadHandle
,
1269 OUT PULONG PreviousSuspendCount OPTIONAL
);
1275 IN HANDLE ThreadHandle
,
1276 OUT PCONTEXT Context
);
1282 IN HANDLE ThreadHandle
,
1283 IN PCONTEXT Context
);
1289 IN HANDLE ThreadHandle
,
1290 IN PKNORMAL_ROUTINE ApcRoutine
,
1291 IN PVOID ApcContext OPTIONAL
,
1292 IN PVOID Argument1 OPTIONAL
,
1293 IN PVOID Argument2 OPTIONAL
);
1305 IN HANDLE ThreadHandle
);
1310 ZwAlertResumeThread(
1311 IN HANDLE ThreadHandle
,
1312 OUT PULONG PreviousSuspendCount OPTIONAL
);
1317 ZwRegisterThreadTerminatePort(
1318 IN HANDLE PortHandle
);
1323 ZwImpersonateThread(
1324 IN HANDLE ThreadHandle
,
1325 IN HANDLE TargetThreadHandle
,
1326 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
);
1331 ZwImpersonateAnonymousToken(
1332 IN HANDLE ThreadHandle
);
1343 OUT PHANDLE ProcessHandle
,
1344 IN ACCESS_MASK DesiredAccess
,
1345 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1346 IN HANDLE InheritFromProcessHandle
,
1347 IN BOOLEAN InheritHandles
,
1348 IN HANDLE SectionHandle OPTIONAL
,
1349 IN HANDLE DebugPort OPTIONAL
,
1350 IN HANDLE ExceptionPort OPTIONAL
);
1356 OUT PHANDLE ProcessHandle
,
1357 IN ACCESS_MASK DesiredAccess
,
1358 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1359 IN HANDLE InheritFromProcessHandle
,
1360 IN BOOLEAN InheritHandles
,
1361 IN HANDLE SectionHandle OPTIONAL
,
1362 IN HANDLE DebugPort OPTIONAL
,
1363 IN HANDLE ExceptionPort OPTIONAL
);
1369 IN HANDLE ProcessHandle OPTIONAL
,
1370 IN NTSTATUS ExitStatus
);
1375 ZwQueryInformationProcess(
1376 IN HANDLE ProcessHandle
,
1377 IN PROCESSINFOCLASS ProcessInformationClass
,
1378 OUT PVOID ProcessInformation
,
1379 IN ULONG ProcessInformationLength
,
1380 OUT PULONG ReturnLength OPTIONAL
);
1385 NtSetInformationProcess(
1386 IN HANDLE ProcessHandle
,
1387 IN PROCESSINFOCLASS ProcessInformationClass
,
1388 IN PVOID ProcessInformation
,
1389 IN ULONG ProcessInformationLength
);
1394 ZwSetInformationProcess(
1395 IN HANDLE ProcessHandle
,
1396 IN PROCESSINFOCLASS ProcessInformationClass
,
1397 IN PVOID ProcessInformation
,
1398 IN ULONG ProcessInformationLength
);
1400 typedef struct _PROCESS_BASIC_INFORMATION
{
1401 NTSTATUS ExitStatus
;
1402 PPEB PebBaseAddress
;
1403 KAFFINITY AffinityMask
;
1404 KPRIORITY BasePriority
;
1405 ULONG UniqueProcessId
;
1406 ULONG InheritedFromUniqueProcessId
;
1407 } PROCESS_BASIC_INFORMATION
, *PPROCESS_BASIC_INFORMATION
;
1409 typedef struct _PROCESS_ACCESS_TOKEN
{
1412 } PROCESS_ACCESS_TOKEN
, *PPROCESS_ACCESS_TOKEN
;
1414 /* DefaultHardErrorMode constants */
1415 /* also in winbase.h */
1416 #define SEM_FAILCRITICALERRORS 0x0001
1417 #define SEM_NOGPFAULTERRORBOX 0x0002
1418 #define SEM_NOALIGNMENTFAULTEXCEPT 0x0004
1419 #define SEM_NOOPENFILEERRORBOX 0x8000
1421 typedef struct _POOLED_USAGE_AND_LIMITS
{
1422 ULONG PeakPagedPoolUsage
;
1423 ULONG PagedPoolUsage
;
1424 ULONG PagedPoolLimit
;
1425 ULONG PeakNonPagedPoolUsage
;
1426 ULONG NonPagedPoolUsage
;
1427 ULONG NonPagedPoolLimit
;
1428 ULONG PeakPagefileUsage
;
1429 ULONG PagefileUsage
;
1430 ULONG PagefileLimit
;
1431 } POOLED_USAGE_AND_LIMITS
, *PPOOLED_USAGE_AND_LIMITS
;
1433 typedef struct _PROCESS_WS_WATCH_INFORMATION
{
1436 } PROCESS_WS_WATCH_INFORMATION
, *PPROCESS_WS_WATCH_INFORMATION
;
1438 /* PROCESS_PRIORITY_CLASS.PriorityClass constants */
1442 #define PC_REALTIME 4
1443 #define PC_BELOW_NORMAL 5
1444 #define PC_ABOVE_NORMAL 6
1446 typedef struct _PROCESS_PRIORITY_CLASS
{
1448 UCHAR PriorityClass
;
1449 } PROCESS_PRIORITY_CLASS
, *PPROCESS_PRIORITY_CLASS
;
1451 /* PROCESS_DEVICEMAP_INFORMATION.DriveType constants */
1452 #define DRIVE_UNKNOWN 0
1453 #define DRIVE_NO_ROOT_DIR 1
1454 #define DRIVE_REMOVABLE 2
1455 #define DRIVE_FIXED 3
1456 #define DRIVE_REMOTE 4
1457 #define DRIVE_CDROM 5
1458 #define DRIVE_RAMDISK 6
1460 typedef struct _PROCESS_DEVICEMAP_INFORMATION
{
1461 _ANONYMOUS_UNION
union {
1463 HANDLE DirectoryHandle
;
1467 UCHAR DriveType
[32];
1470 } PROCESS_DEVICEMAP_INFORMATION
, *PPROCESS_DEVICEMAP_INFORMATION
;
1472 typedef struct _PROCESS_SESSION_INFORMATION
{
1474 } PROCESS_SESSION_INFORMATION
, *PPROCESS_SESSION_INFORMATION
;
1476 typedef struct _RTL_USER_PROCESS_PARAMETERS
{
1477 ULONG AllocationSize
;
1486 UNICODE_STRING CurrentDirectoryName
;
1487 HANDLE CurrentDirectoryHandle
;
1488 UNICODE_STRING DllPath
;
1489 UNICODE_STRING ImagePathName
;
1490 UNICODE_STRING CommandLine
;
1496 ULONG dwXCountChars
;
1497 ULONG dwYCountChars
;
1498 ULONG dwFillAttribute
;
1501 UNICODE_STRING WindowTitle
;
1502 UNICODE_STRING DesktopInfo
;
1503 UNICODE_STRING ShellInfo
;
1504 UNICODE_STRING RuntimeInfo
;
1505 } RTL_USER_PROCESS_PARAMETERS
, *PRTL_USER_PROCESS_PARAMETERS
;
1509 RtlCreateProcessParameters(
1510 OUT PRTL_USER_PROCESS_PARAMETERS
*ProcessParameters
,
1511 IN PUNICODE_STRING ImageFile
,
1512 IN PUNICODE_STRING DllPath OPTIONAL
,
1513 IN PUNICODE_STRING CurrentDirectory OPTIONAL
,
1514 IN PUNICODE_STRING CommandLine OPTIONAL
,
1515 IN PWSTR Environment OPTIONAL
,
1516 IN PUNICODE_STRING WindowTitle OPTIONAL
,
1517 IN PUNICODE_STRING DesktopInfo OPTIONAL
,
1518 IN PUNICODE_STRING ShellInfo OPTIONAL
,
1519 IN PUNICODE_STRING RuntimeInfo OPTIONAL
);
1523 RtlDestroyProcessParameters(
1524 IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters
);
1526 typedef struct _DEBUG_BUFFER
{
1527 HANDLE SectionHandle
;
1529 PVOID RemoteSectionBase
;
1530 ULONG SectionBaseDelta
;
1531 HANDLE EventPairHandle
;
1533 HANDLE RemoteThreadHandle
;
1534 ULONG InfoClassMask
;
1536 ULONG AllocatedSize
;
1538 PVOID ModuleInformation
;
1539 PVOID BackTraceInformation
;
1540 PVOID HeapInformation
;
1541 PVOID LockInformation
;
1543 } DEBUG_BUFFER
, *PDEBUG_BUFFER
;
1547 RtlCreateQueryDebugBuffer(
1549 IN BOOLEAN EventPair
);
1551 /* RtlQueryProcessDebugInformation.DebugInfoClassMask constants */
1552 #define PDI_MODULES 0x01
1553 #define PDI_BACKTRACE 0x02
1554 #define PDI_HEAPS 0x04
1555 #define PDI_HEAP_TAGS 0x08
1556 #define PDI_HEAP_BLOCKS 0x10
1557 #define PDI_LOCKS 0x20
1561 RtlQueryProcessDebugInformation(
1563 IN ULONG DebugInfoClassMask
,
1564 IN OUT PDEBUG_BUFFER DebugBuffer
);
1568 RtlDestroyQueryDebugBuffer(
1569 IN PDEBUG_BUFFER DebugBuffer
);
1571 /* DEBUG_MODULE_INFORMATION.Flags constants */
1572 #define LDRP_STATIC_LINK 0x00000002
1573 #define LDRP_IMAGE_DLL 0x00000004
1574 #define LDRP_LOAD_IN_PROGRESS 0x00001000
1575 #define LDRP_UNLOAD_IN_PROGRESS 0x00002000
1576 #define LDRP_ENTRY_PROCESSED 0x00004000
1577 #define LDRP_ENTRY_INSERTED 0x00008000
1578 #define LDRP_CURRENT_LOAD 0x00010000
1579 #define LDRP_FAILED_BUILTIN_LOAD 0x00020000
1580 #define LDRP_DONT_CALL_FOR_THREADS 0x00040000
1581 #define LDRP_PROCESS_ATTACH_CALLED 0x00080000
1582 #define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000
1583 #define LDRP_IMAGE_NOT_AT_BASE 0x00200000
1584 #define LDRP_WX86_IGNORE_MACHINETYPE 0x00400000
1586 typedef struct _DEBUG_MODULE_INFORMATION
{
1594 USHORT ModuleNameOffset
;
1595 CHAR ImageName
[256];
1596 } DEBUG_MODULE_INFORMATION
, *PDEBUG_MODULE_INFORMATION
;
1598 typedef struct _DEBUG_HEAP_INFORMATION
{
1610 } DEBUG_HEAP_INFORMATION
, *PDEBUG_HEAP_INFORMATION
;
1612 typedef struct _DEBUG_LOCK_INFORMATION
{
1615 USHORT CreatorBackTraceIndex
;
1616 ULONG OwnerThreadId
;
1618 ULONG ContentionCount
;
1620 ULONG RecursionCount
;
1621 ULONG NumberOfSharedWaiters
;
1622 ULONG NumberOfExclusiveWaiters
;
1623 } DEBUG_LOCK_INFORMATION
, *PDEBUG_LOCK_INFORMATION
;
1633 OUT PHANDLE JobHandle
,
1634 IN ACCESS_MASK DesiredAccess
,
1635 IN POBJECT_ATTRIBUTES ObjectAttributes
);
1641 OUT PHANDLE JobHandle
,
1642 IN ACCESS_MASK DesiredAccess
,
1643 IN POBJECT_ATTRIBUTES ObjectAttributes
);
1648 ZwTerminateJobObject(
1649 IN HANDLE JobHandle
,
1650 IN NTSTATUS ExitStatus
);
1655 ZwAssignProcessToJobObject(
1656 IN HANDLE JobHandle
,
1657 IN HANDLE ProcessHandle
);
1662 ZwQueryInformationJobObject(
1663 IN HANDLE JobHandle
,
1664 IN JOBOBJECTINFOCLASS JobInformationClass
,
1665 OUT PVOID JobInformation
,
1666 IN ULONG JobInformationLength
,
1667 OUT PULONG ReturnLength OPTIONAL
);
1672 ZwSetInformationJobObject(
1673 IN HANDLE JobHandle
,
1674 IN JOBOBJECTINFOCLASS JobInformationClass
,
1675 IN PVOID JobInformation
,
1676 IN ULONG JobInformationLength
);
1685 OUT PHANDLE TokenHandle
,
1686 IN ACCESS_MASK DesiredAccess
,
1687 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1689 IN PLUID AuthenticationId
,
1690 IN PLARGE_INTEGER ExpirationTime
,
1691 IN PTOKEN_USER User
,
1692 IN PTOKEN_GROUPS Groups
,
1693 IN PTOKEN_PRIVILEGES Privileges
,
1694 IN PTOKEN_OWNER Owner
,
1695 IN PTOKEN_PRIMARY_GROUP PrimaryGroup
,
1696 IN PTOKEN_DEFAULT_DACL DefaultDacl
,
1697 IN PTOKEN_SOURCE Source
1704 IN HANDLE ProcessHandle
,
1705 IN ACCESS_MASK DesiredAccess
,
1706 OUT PHANDLE TokenHandle
);
1712 IN HANDLE ProcessHandle
,
1713 IN ACCESS_MASK DesiredAccess
,
1714 OUT PHANDLE TokenHandle
);
1720 IN HANDLE ThreadHandle
,
1721 IN ACCESS_MASK DesiredAccess
,
1722 IN BOOLEAN OpenAsSelf
,
1723 OUT PHANDLE TokenHandle
);
1729 IN HANDLE ThreadHandle
,
1730 IN ACCESS_MASK DesiredAccess
,
1731 IN BOOLEAN OpenAsSelf
,
1732 OUT PHANDLE TokenHandle
);
1738 IN HANDLE ExistingTokenHandle
,
1739 IN ACCESS_MASK DesiredAccess
,
1740 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1741 IN BOOLEAN EffectiveOnly
,
1742 IN TOKEN_TYPE TokenType
,
1743 OUT PHANDLE NewTokenHandle
);
1749 IN HANDLE ExistingTokenHandle
,
1750 IN ACCESS_MASK DesiredAccess
,
1751 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1752 IN BOOLEAN EffectiveOnly
,
1753 IN TOKEN_TYPE TokenType
,
1754 OUT PHANDLE NewTokenHandle
);
1760 IN HANDLE ExistingTokenHandle
,
1762 IN PTOKEN_GROUPS SidsToDisable
,
1763 IN PTOKEN_PRIVILEGES PrivilegesToDelete
,
1764 IN PTOKEN_GROUPS SidsToRestricted
,
1765 OUT PHANDLE NewTokenHandle
);
1770 NtAdjustPrivilegesToken(
1771 IN HANDLE TokenHandle
,
1772 IN BOOLEAN DisableAllPrivileges
,
1773 IN PTOKEN_PRIVILEGES NewState
,
1774 IN ULONG BufferLength
,
1775 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL
,
1776 OUT PULONG ReturnLength
);
1781 ZwAdjustPrivilegesToken(
1782 IN HANDLE TokenHandle
,
1783 IN BOOLEAN DisableAllPrivileges
,
1784 IN PTOKEN_PRIVILEGES NewState
,
1785 IN ULONG BufferLength
,
1786 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL
,
1787 OUT PULONG ReturnLength
);
1792 ZwAdjustGroupsToken(
1793 IN HANDLE TokenHandle
,
1794 IN BOOLEAN ResetToDefault
,
1795 IN PTOKEN_GROUPS NewState
,
1796 IN ULONG BufferLength
,
1797 OUT PTOKEN_GROUPS PreviousState OPTIONAL
,
1798 OUT PULONG ReturnLength
);
1803 NtQueryInformationToken(
1804 IN HANDLE TokenHandle
,
1805 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
1806 OUT PVOID TokenInformation
,
1807 IN ULONG TokenInformationLength
,
1808 OUT PULONG ReturnLength
);
1813 ZwQueryInformationToken(
1814 IN HANDLE TokenHandle
,
1815 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
1816 OUT PVOID TokenInformation
,
1817 IN ULONG TokenInformationLength
,
1818 OUT PULONG ReturnLength
);
1823 ZwSetInformationToken(
1824 IN HANDLE TokenHandle
,
1825 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
1826 IN PVOID TokenInformation
,
1827 IN ULONG TokenInformationLength
);
1838 OUT PLARGE_INTEGER CurrentTime
);
1844 IN PLARGE_INTEGER NewTime
,
1845 OUT PLARGE_INTEGER OldTime OPTIONAL
);
1850 ZwQueryPerformanceCounter(
1851 OUT PLARGE_INTEGER PerformanceCount
,
1852 OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL
);
1857 ZwQueryPerformanceCounter(
1858 OUT PLARGE_INTEGER PerformanceCount
,
1859 OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL
);
1864 ZwQueryTimerResolution(
1865 OUT PULONG CoarsestResolution
,
1866 OUT PULONG FinestResolution
,
1867 OUT PULONG ActualResolution
);
1873 IN BOOLEAN Alertable
,
1874 IN PLARGE_INTEGER Interval
);
1891 /* Execution profiling */
1897 OUT PHANDLE ProfileHandle
,
1898 IN HANDLE ProcessHandle
,
1901 IN ULONG BucketShift
,
1903 IN ULONG BufferLength
,
1904 IN KPROFILE_SOURCE Source
,
1905 IN ULONG ProcessorMask
);
1910 ZwSetIntervalProfile(
1912 IN KPROFILE_SOURCE Source
);
1917 ZwQueryIntervalProfile(
1918 IN KPROFILE_SOURCE Source
,
1919 OUT PULONG Interval
);
1925 IN HANDLE ProfileHandle
);
1931 IN HANDLE ProfileHandle
);
1933 /* Local Procedure Call (LPC) */
1935 typedef struct _LPC_MESSAGE
{
1939 USHORT VirtualRangesOffset
;
1943 UCHAR Data
[ANYSIZE_ARRAY
];
1944 } LPC_MESSAGE
, *PLPC_MESSAGE
;
1946 #define LPC_MESSAGE_BASE_SIZE 24
1948 typedef enum _LPC_TYPE
{
1959 LPC_CONNECTION_REQUEST
,
1960 LPC_CONNECTION_REFUSED
,
1964 typedef struct _LPC_SECTION_WRITE
{
1966 HANDLE SectionHandle
;
1967 ULONG SectionOffset
;
1970 PVOID TargetViewBase
;
1971 } LPC_SECTION_WRITE
, *PLPC_SECTION_WRITE
;
1973 typedef struct _LPC_SECTION_READ
{
1977 } LPC_SECTION_READ
, *PLPC_SECTION_READ
;
1983 OUT PHANDLE PortHandle
,
1984 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1985 IN ULONG MaxDataSize
,
1986 IN ULONG MaxMessageSize
,
1992 ZwCreateWaitablePort(
1993 OUT PHANDLE PortHandle
,
1994 IN POBJECT_ATTRIBUTES ObjectAttributes
,
1995 IN ULONG MaxDataSize
,
1996 IN ULONG MaxMessageSize
,
2003 OUT PHANDLE PortHandle
,
2004 IN PUNICODE_STRING PortName
,
2005 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
,
2006 IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL
,
2007 IN OUT PLPC_SECTION_READ ReadSection OPTIONAL
,
2008 OUT PULONG MaxMessageSize OPTIONAL
,
2009 IN OUT PVOID ConnectData OPTIONAL
,
2010 IN OUT PULONG ConnectDataLength OPTIONAL
);
2016 OUT PHANDLE PortHandle
,
2017 IN PUNICODE_STRING PortName
,
2018 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
,
2019 IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL
,
2020 IN OUT PLPC_SECTION_READ ReadSection OPTIONAL
,
2021 OUT PULONG MaxMessageSize OPTIONAL
,
2022 IN OUT PVOID ConnectData OPTIONAL
,
2023 IN OUT PULONG ConnectDataLength OPTIONAL
);
2029 OUT PHANDLE PortHandle
,
2030 IN PUNICODE_STRING PortName
,
2031 IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
,
2032 IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL
,
2033 IN OUT PLPC_SECTION_READ ReadSection OPTIONAL
,
2034 OUT PULONG MaxMessageSize OPTIONAL
,
2035 IN OUT PVOID ConnectData OPTIONAL
,
2036 IN OUT PULONG ConnectDataLength OPTIONAL
);
2042 IN HANDLE PortHandle
,
2043 OUT PLPC_MESSAGE Message
);
2048 ZwAcceptConnectPort(
2049 OUT PHANDLE PortHandle
,
2050 IN ULONG PortIdentifier
,
2051 IN PLPC_MESSAGE Message
,
2053 IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL
,
2054 IN OUT PLPC_SECTION_READ ReadSection OPTIONAL
);
2059 ZwCompleteConnectPort(
2060 IN HANDLE PortHandle
);
2066 IN HANDLE PortHandle
,
2067 IN PLPC_MESSAGE RequestMessage
);
2072 NtRequestWaitReplyPort(
2073 IN HANDLE PortHandle
,
2074 IN PLPC_MESSAGE RequestMessage
,
2075 OUT PLPC_MESSAGE ReplyMessage
);
2080 ZwRequestWaitReplyPort(
2081 IN HANDLE PortHandle
,
2082 IN PLPC_MESSAGE RequestMessage
,
2083 OUT PLPC_MESSAGE ReplyMessage
);
2089 IN HANDLE PortHandle
,
2090 IN PLPC_MESSAGE ReplyMessage
);
2095 ZwReplyWaitReplyPort(
2096 IN HANDLE PortHandle
,
2097 IN OUT PLPC_MESSAGE ReplyMessage
);
2102 ZwReplyWaitReceivePort(
2103 IN HANDLE PortHandle
,
2104 OUT PULONG PortIdentifier OPTIONAL
,
2105 IN PLPC_MESSAGE ReplyMessage OPTIONAL
,
2106 OUT PLPC_MESSAGE Message
);
2111 ZwReplyWaitReceivePortEx(
2112 IN HANDLE PortHandle
,
2113 OUT PULONG PortIdentifier OPTIONAL
,
2114 IN PLPC_MESSAGE ReplyMessage OPTIONAL
,
2115 OUT PLPC_MESSAGE Message
,
2116 IN PLARGE_INTEGER Timeout
);
2122 IN HANDLE PortHandle
,
2123 IN PLPC_MESSAGE Message
,
2126 IN ULONG BufferLength
,
2127 OUT PULONG ReturnLength OPTIONAL
);
2133 IN HANDLE PortHandle
,
2134 IN PLPC_MESSAGE Message
,
2137 IN ULONG BufferLength
,
2138 OUT PULONG ReturnLength OPTIONAL
);
2140 typedef enum _PORT_INFORMATION_CLASS
{
2141 PortBasicInformation
2142 } PORT_INFORMATION_CLASS
;
2147 ZwQueryInformationPort(
2148 IN HANDLE PortHandle
,
2149 IN PORT_INFORMATION_CLASS PortInformationClass
,
2150 OUT PVOID PortInformation
,
2151 IN ULONG PortInformationLength
,
2152 OUT PULONG ReturnLength OPTIONAL
);
2157 ZwImpersonateClientOfPort(
2158 IN HANDLE PortHandle
,
2159 IN PLPC_MESSAGE Message
);
2170 IN POBJECT_ATTRIBUTES ObjectAttributes
);
2176 IN POBJECT_ATTRIBUTES ObjectAttributes
);
2182 IN HANDLE FileHandle
,
2183 OUT PIO_STATUS_BLOCK IoStatusBlock
);
2189 IN HANDLE FileHandle
,
2190 OUT PIO_STATUS_BLOCK IoStatusBlock
);
2196 IN HANDLE FileHandle
,
2197 IN HANDLE Event OPTIONAL
,
2198 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
2199 IN PVOID ApcContext OPTIONAL
,
2200 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2201 IN PFILE_SEGMENT_ELEMENT Buffer
,
2203 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
2204 IN PULONG Key OPTIONAL
);
2210 IN HANDLE FileHandle
,
2211 IN HANDLE Event OPTIONAL
,
2212 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
2213 IN PVOID ApcContext OPTIONAL
,
2214 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2215 IN PFILE_SEGMENT_ELEMENT Buffer
,
2217 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
2218 IN PULONG Key OPTIONAL
);
2229 IN HANDLE KeyHandle
,
2230 IN HANDLE FileHandle
);
2236 IN HANDLE KeyHandle1
,
2237 IN HANDLE KeyHandle2
,
2238 IN HANDLE FileHandle
);
2244 IN HANDLE KeyHandle
,
2245 IN HANDLE FileHandle
,
2252 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2253 IN POBJECT_ATTRIBUTES FileObjectAttributes
);
2259 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2260 IN POBJECT_ATTRIBUTES FileObjectAttributes
,
2267 IN POBJECT_ATTRIBUTES KeyObjectAttributes
);
2273 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2274 OUT PULONG NumberOfKeys
);
2280 IN POBJECT_ATTRIBUTES NewFileObjectAttributes
,
2281 IN HANDLE KeyHandle
,
2282 IN POBJECT_ATTRIBUTES OldFileObjectAttributes
);
2284 typedef enum _KEY_SET_INFORMATION_CLASS
{
2285 KeyLastWriteTimeInformation
2286 } KEY_SET_INFORMATION_CLASS
;
2291 ZwSetInformationKey(
2292 IN HANDLE KeyHandle
,
2293 IN KEY_SET_INFORMATION_CLASS KeyInformationClass
,
2294 IN PVOID KeyInformation
,
2295 IN ULONG KeyInformationLength
);
2297 typedef struct _KEY_LAST_WRITE_TIME_INFORMATION
{
2298 LARGE_INTEGER LastWriteTime
;
2299 } KEY_LAST_WRITE_TIME_INFORMATION
, *PKEY_LAST_WRITE_TIME_INFORMATION
;
2301 typedef struct _KEY_NAME_INFORMATION
{
2304 } KEY_NAME_INFORMATION
, *PKEY_NAME_INFORMATION
;
2310 IN HANDLE KeyHandle
,
2311 IN HANDLE EventHandle OPTIONAL
,
2312 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
2313 IN PVOID ApcContext OPTIONAL
,
2314 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2315 IN ULONG NotifyFilter
,
2316 IN BOOLEAN WatchSubtree
,
2318 IN ULONG BufferLength
,
2319 IN BOOLEAN Asynchronous
);
2321 /* ZwNotifyChangeMultipleKeys.Flags constants */
2322 #define REG_MONITOR_SINGLE_KEY 0x00
2323 #define REG_MONITOR_SECOND_KEY 0x01
2328 ZwNotifyChangeMultipleKeys(
2329 IN HANDLE KeyHandle
,
2331 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2332 IN HANDLE EventHandle OPTIONAL
,
2333 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
2334 IN PVOID ApcContext OPTIONAL
,
2335 OUT PIO_STATUS_BLOCK IoStatusBlock
,
2336 IN ULONG NotifyFilter
,
2337 IN BOOLEAN WatchSubtree
,
2339 IN ULONG BufferLength
,
2340 IN BOOLEAN Asynchronous
);
2345 ZwQueryMultipleValueKey(
2346 IN HANDLE KeyHandle
,
2347 IN OUT PKEY_VALUE_ENTRY ValueList
,
2348 IN ULONG NumberOfValues
,
2350 IN OUT PULONG Length
,
2351 OUT PULONG ReturnLength
);
2356 ZwInitializeRegistry(
2362 /* Security and auditing */
2368 IN HANDLE TokenHandle
,
2369 IN PPRIVILEGE_SET RequiredPrivileges
,
2370 OUT PBOOLEAN Result
);
2375 ZwPrivilegeObjectAuditAlarm(
2376 IN PUNICODE_STRING SubsystemName
,
2378 IN HANDLE TokenHandle
,
2379 IN ACCESS_MASK DesiredAccess
,
2380 IN PPRIVILEGE_SET Privileges
,
2381 IN BOOLEAN AccessGranted
);
2386 ZwPrivilegeObjectAuditAlarm(
2387 IN PUNICODE_STRING SubsystemName
,
2389 IN HANDLE TokenHandle
,
2390 IN ACCESS_MASK DesiredAccess
,
2391 IN PPRIVILEGE_SET Privileges
,
2392 IN BOOLEAN AccessGranted
);
2398 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2399 IN HANDLE TokenHandle
,
2400 IN ACCESS_MASK DesiredAccess
,
2401 IN PGENERIC_MAPPING GenericMapping
,
2402 IN PPRIVILEGE_SET PrivilegeSet
,
2403 IN PULONG PrivilegeSetLength
,
2404 OUT PACCESS_MASK GrantedAccess
,
2405 OUT PNTSTATUS AccessStatus
);
2410 ZwAccessCheckAndAuditAlarm(
2411 IN PUNICODE_STRING SubsystemName
,
2413 IN PUNICODE_STRING ObjectTypeName
,
2414 IN PUNICODE_STRING ObjectName
,
2415 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2416 IN ACCESS_MASK DesiredAccess
,
2417 IN PGENERIC_MAPPING GenericMapping
,
2418 IN BOOLEAN ObjectCreation
,
2419 OUT PACCESS_MASK GrantedAccess
,
2420 OUT PBOOLEAN AccessStatus
,
2421 OUT PBOOLEAN GenerateOnClose
);
2426 ZwAccessCheckByType(
2427 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2428 IN PSID PrincipalSelfSid
,
2429 IN HANDLE TokenHandle
,
2430 IN ULONG DesiredAccess
,
2431 IN POBJECT_TYPE_LIST ObjectTypeList
,
2432 IN ULONG ObjectTypeListLength
,
2433 IN PGENERIC_MAPPING GenericMapping
,
2434 IN PPRIVILEGE_SET PrivilegeSet
,
2435 IN PULONG PrivilegeSetLength
,
2436 OUT PACCESS_MASK GrantedAccess
,
2437 OUT PULONG AccessStatus
);
2439 typedef enum _AUDIT_EVENT_TYPE
{
2440 AuditEventObjectAccess
,
2441 AuditEventDirectoryServiceAccess
2442 } AUDIT_EVENT_TYPE
, *PAUDIT_EVENT_TYPE
;
2447 ZwAccessCheckByTypeAndAuditAlarm(
2448 IN PUNICODE_STRING SubsystemName
,
2450 IN PUNICODE_STRING ObjectTypeName
,
2451 IN PUNICODE_STRING ObjectName
,
2452 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2453 IN PSID PrincipalSelfSid
,
2454 IN ACCESS_MASK DesiredAccess
,
2455 IN AUDIT_EVENT_TYPE AuditType
,
2457 IN POBJECT_TYPE_LIST ObjectTypeList
,
2458 IN ULONG ObjectTypeListLength
,
2459 IN PGENERIC_MAPPING GenericMapping
,
2460 IN BOOLEAN ObjectCreation
,
2461 OUT PACCESS_MASK GrantedAccess
,
2462 OUT PULONG AccessStatus
,
2463 OUT PBOOLEAN GenerateOnClose
);
2468 ZwAccessCheckByTypeResultList(
2469 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2470 IN PSID PrincipalSelfSid
,
2471 IN HANDLE TokenHandle
,
2472 IN ACCESS_MASK DesiredAccess
,
2473 IN POBJECT_TYPE_LIST ObjectTypeList
,
2474 IN ULONG ObjectTypeListLength
,
2475 IN PGENERIC_MAPPING GenericMapping
,
2476 IN PPRIVILEGE_SET PrivilegeSet
,
2477 IN PULONG PrivilegeSetLength
,
2478 OUT PACCESS_MASK GrantedAccessList
,
2479 OUT PULONG AccessStatusList
);
2484 ZwAccessCheckByTypeResultListAndAuditAlarm(
2485 IN PUNICODE_STRING SubsystemName
,
2487 IN PUNICODE_STRING ObjectTypeName
,
2488 IN PUNICODE_STRING ObjectName
,
2489 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2490 IN PSID PrincipalSelfSid
,
2491 IN ACCESS_MASK DesiredAccess
,
2492 IN AUDIT_EVENT_TYPE AuditType
,
2494 IN POBJECT_TYPE_LIST ObjectTypeList
,
2495 IN ULONG ObjectTypeListLength
,
2496 IN PGENERIC_MAPPING GenericMapping
,
2497 IN BOOLEAN ObjectCreation
,
2498 OUT PACCESS_MASK GrantedAccessList
,
2499 OUT PULONG AccessStatusList
,
2500 OUT PULONG GenerateOnClose
);
2505 ZwAccessCheckByTypeResultListAndAuditAlarmByHandle(
2506 IN PUNICODE_STRING SubsystemName
,
2508 IN HANDLE TokenHandle
,
2509 IN PUNICODE_STRING ObjectTypeName
,
2510 IN PUNICODE_STRING ObjectName
,
2511 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2512 IN PSID PrincipalSelfSid
,
2513 IN ACCESS_MASK DesiredAccess
,
2514 IN AUDIT_EVENT_TYPE AuditType
,
2516 IN POBJECT_TYPE_LIST ObjectTypeList
,
2517 IN ULONG ObjectTypeListLength
,
2518 IN PGENERIC_MAPPING GenericMapping
,
2519 IN BOOLEAN ObjectCreation
,
2520 OUT PACCESS_MASK GrantedAccessList
,
2521 OUT PULONG AccessStatusList
,
2522 OUT PULONG GenerateOnClose
);
2527 ZwOpenObjectAuditAlarm(
2528 IN PUNICODE_STRING SubsystemName
,
2530 IN PUNICODE_STRING ObjectTypeName
,
2531 IN PUNICODE_STRING ObjectName
,
2532 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2533 IN HANDLE TokenHandle
,
2534 IN ACCESS_MASK DesiredAccess
,
2535 IN ACCESS_MASK GrantedAccess
,
2536 IN PPRIVILEGE_SET Privileges OPTIONAL
,
2537 IN BOOLEAN ObjectCreation
,
2538 IN BOOLEAN AccessGranted
,
2539 OUT PBOOLEAN GenerateOnClose
);
2544 ZwCloseObjectAuditAlarm(
2545 IN PUNICODE_STRING SubsystemName
,
2547 IN BOOLEAN GenerateOnClose
);
2552 ZwDeleteObjectAuditAlarm(
2553 IN PUNICODE_STRING SubsystemName
,
2555 IN BOOLEAN GenerateOnClose
);
2560 /* Plug and play and power management */
2565 ZwRequestWakeupLatency(
2566 IN LATENCY_TIME Latency
);
2571 ZwRequestDeviceWakeup(
2572 IN HANDLE DeviceHandle
);
2577 ZwCancelDeviceWakeupRequest(
2578 IN HANDLE DeviceHandle
);
2583 ZwIsSystemResumeAutomatic(
2589 ZwSetThreadExecutionState(
2590 IN EXECUTION_STATE ExecutionState
,
2591 OUT PEXECUTION_STATE PreviousExecutionState
);
2596 ZwGetDevicePowerState(
2597 IN HANDLE DeviceHandle
,
2598 OUT PDEVICE_POWER_STATE DevicePowerState
);
2603 ZwSetSystemPowerState(
2604 IN POWER_ACTION SystemAction
,
2605 IN SYSTEM_POWER_STATE MinSystemState
,
2611 ZwInitiatePowerAction(
2612 IN POWER_ACTION SystemAction
,
2613 IN SYSTEM_POWER_STATE MinSystemState
,
2615 IN BOOLEAN Asynchronous
);
2621 IN POWER_INFORMATION_LEVEL PowerInformationLevel
,
2622 IN PVOID InputBuffer OPTIONAL
,
2623 IN ULONG InputBufferLength
,
2624 OUT PVOID OutputBuffer OPTIONAL
,
2625 IN ULONG OutputBufferLength
);
2631 IN ULONG ControlCode
,
2632 IN OUT PVOID Buffer
,
2633 IN ULONG BufferLength
);
2642 IN ULONG BufferLength
);
2653 IN PEXCEPTION_RECORD ExceptionRecord
,
2654 IN PCONTEXT Context
,
2655 IN BOOLEAN SearchFrames
);
2661 IN PCONTEXT Context
,
2662 IN BOOLEAN TestAlert
);
2668 IN ULONG RoutineIndex
,
2670 IN ULONG ArgumentLength
,
2671 OUT PVOID
*Result OPTIONAL
,
2672 OUT PULONG ResultLength OPTIONAL
);
2677 ZwSetLowWaitHighThread(
2683 ZwSetHighWaitLowThread(
2690 IN PUNICODE_STRING DriverServiceName
);
2696 IN PUNICODE_STRING DriverServiceName
);
2701 ZwFlushInstructionCache(
2702 IN HANDLE ProcessHandle
,
2703 IN PVOID BaseAddress OPTIONAL
,
2704 IN ULONG FlushSize
);
2715 ZwQueryDefaultLocale(
2716 IN BOOLEAN ThreadOrSystem
,
2723 IN BOOLEAN ThreadOrSystem
,
2729 ZwQueryDefaultUILanguage(
2730 OUT PLANGID LanguageId
);
2735 ZwSetDefaultUILanguage(
2736 IN LANGID LanguageId
);
2741 ZwQueryInstallUILanguage(
2742 OUT PLANGID LanguageId
);
2747 NtAllocateLocallyUniqueId(
2754 OUT PLARGE_INTEGER UuidLastTimeAllocated
,
2755 OUT PULONG UuidDeltaTime
,
2756 OUT PULONG UuidSequenceNumber
,
2757 OUT PUCHAR UuidSeed
);
2763 IN PUCHAR UuidSeed
);
2765 typedef enum _HARDERROR_RESPONSE_OPTION
{
2766 OptionAbortRetryIgnore
,
2772 OptionShutdownSystem
2773 } HARDERROR_RESPONSE_OPTION
, *PHARDERROR_RESPONSE_OPTION
;
2775 typedef enum _HARDERROR_RESPONSE
{
2776 ResponseReturnToCaller
,
2785 } HARDERROR_RESPONSE
, *PHARDERROR_RESPONSE
;
2792 IN ULONG NumberOfArguments
,
2793 IN ULONG StringArgumentsMask
,
2794 IN PULONG Arguments
,
2795 IN HARDERROR_RESPONSE_OPTION ResponseOption
,
2796 OUT PHARDERROR_RESPONSE Response
);
2801 ZwSetDefaultHardErrorPort(
2802 IN HANDLE PortHandle
);
2808 IN PUNICODE_STRING String
);
2814 IN PUNICODE_STRING FileName
,
2815 IN PULARGE_INTEGER InitialSize
,
2816 IN PULARGE_INTEGER MaximumSize
,
2819 typedef USHORT RTL_ATOM
, *PRTL_ATOM
;
2826 IN ULONG AtomNameLength
,
2827 OUT PRTL_ATOM Atom
);
2834 IN ULONG AtomNameLength
,
2835 OUT PRTL_ATOM Atom
);
2843 typedef enum _ATOM_INFORMATION_CLASS
{
2844 AtomBasicInformation
,
2846 } ATOM_INFORMATION_CLASS
;
2851 NtQueryInformationAtom(
2853 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
2854 OUT PVOID AtomInformation
,
2855 IN ULONG AtomInformationLength
,
2856 OUT PULONG ReturnLength OPTIONAL
);
2858 typedef struct _ATOM_BASIC_INFORMATION
{
2859 USHORT ReferenceCount
;
2863 } ATOM_BASIC_INFORMATION
, *PATOM_BASIC_INFORMATION
;
2865 typedef struct _ATOM_LIST_INFORMATION
{
2866 ULONG NumberOfAtoms
;
2868 } ATOM_LIST_INFORMATION
, *PATOM_LIST_INFORMATION
;
2875 IN LDT_ENTRY LdtEntry1
,
2877 IN LDT_ENTRY LdtEntry2
);
2883 IN ULONG ControlCode
,
2884 IN PVOID ControlData
);
2892 #endif /* __NTAPI_H */