3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
27 * Windows NT Native API
29 * Most structures in this file is obtained from Windows NT/2000 Native API
30 * Reference by Gary Nebbett, ISBN 1578701996.
32 * This file is part of the w32api package.
35 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
37 * THIS SOFTWARE IS NOT COPYRIGHTED
39 * This source code is offered for use in the public domain. You may
40 * use, modify or distribute it freely.
42 * This code is distributed in the hope that it will be useful but
43 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
44 * DISCLAIMED. This includes but is not limited to warranties of
45 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
51 #pragma GCC system_header
64 typedef struct _PEB *PPEB;
66 /* FIXME: Unknown definitions */
67 typedef PVOID POBJECT_TYPE_LIST;
68 typedef PVOID PEXECUTION_STATE;
69 typedef PVOID PLANGID;
71 #ifndef NtCurrentProcess
72 #define NtCurrentProcess() ((HANDLE)0xFFFFFFFF)
73 #endif /* NtCurrentProcess */
74 #ifndef NtCurrentThread
75 #define NtCurrentThread() ((HANDLE)0xFFFFFFFE)
76 #endif /* NtCurrentThread */
78 /* System information and control */
80 typedef enum _SYSTEM_INFORMATION_CLASS {
81 SystemInformationClassMin = 0,
82 SystemBasicInformation = 0,
83 SystemProcessorInformation = 1,
84 SystemPerformanceInformation = 2,
85 SystemTimeOfDayInformation = 3,
86 SystemPathInformation = 4,
87 SystemNotImplemented1 = 4,
88 SystemProcessInformation = 5,
89 SystemProcessesAndThreadsInformation = 5,
90 SystemCallCountInfoInformation = 6,
92 SystemDeviceInformation = 7,
93 SystemConfigurationInformation = 7,
94 SystemProcessorPerformanceInformation = 8,
95 SystemProcessorTimes = 8,
96 SystemFlagsInformation = 9,
98 SystemCallTimeInformation = 10,
99 SystemNotImplemented2 = 10,
100 SystemModuleInformation = 11,
101 SystemLocksInformation = 12,
102 SystemLockInformation = 12,
103 SystemStackTraceInformation = 13,
104 SystemNotImplemented3 = 13,
105 SystemPagedPoolInformation = 14,
106 SystemNotImplemented4 = 14,
107 SystemNonPagedPoolInformation = 15,
108 SystemNotImplemented5 = 15,
109 SystemHandleInformation = 16,
110 SystemObjectInformation = 17,
111 SystemPageFileInformation = 18,
112 SystemPagefileInformation = 18,
113 SystemVdmInstemulInformation = 19,
114 SystemInstructionEmulationCounts = 19,
115 SystemVdmBopInformation = 20,
116 SystemInvalidInfoClass1 = 20,
117 SystemFileCacheInformation = 21,
118 SystemCacheInformation = 21,
119 SystemPoolTagInformation = 22,
120 SystemInterruptInformation = 23,
121 SystemProcessorStatistics = 23,
122 SystemDpcBehaviourInformation = 24,
123 SystemDpcInformation = 24,
124 SystemFullMemoryInformation = 25,
125 SystemNotImplemented6 = 25,
126 SystemLoadImage = 26,
127 SystemUnloadImage = 27,
128 SystemTimeAdjustmentInformation = 28,
129 SystemTimeAdjustment = 28,
130 SystemSummaryMemoryInformation = 29,
131 SystemNotImplemented7 = 29,
132 SystemNextEventIdInformation = 30,
133 SystemNotImplemented8 = 30,
134 SystemEventIdsInformation = 31,
135 SystemNotImplemented9 = 31,
136 SystemCrashDumpInformation = 32,
137 SystemExceptionInformation = 33,
138 SystemCrashDumpStateInformation = 34,
139 SystemKernelDebuggerInformation = 35,
140 SystemContextSwitchInformation = 36,
141 SystemRegistryQuotaInformation = 37,
142 SystemLoadAndCallImage = 38,
143 SystemPrioritySeparation = 39,
144 SystemPlugPlayBusInformation = 40,
145 SystemNotImplemented10 = 40,
146 SystemDockInformation = 41,
147 SystemNotImplemented11 = 41,
148 /* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */
149 SystemInvalidInfoClass2 = 42,
150 SystemProcessorSpeedInformation = 43,
151 SystemInvalidInfoClass3 = 43,
152 SystemCurrentTimeZoneInformation = 44,
153 SystemTimeZoneInformation = 44,
154 SystemLookasideInformation = 45,
155 SystemSetTimeSlipEvent = 46,
156 SystemCreateSession = 47,
157 SystemDeleteSession = 48,
158 SystemInvalidInfoClass4 = 49,
159 SystemRangeStartInformation = 50,
160 SystemVerifierInformation = 51,
161 SystemAddVerifier = 52,
162 SystemSessionProcessesInformation = 53,
163 SystemInformationClassMax
164 } SYSTEM_INFORMATION_CLASS;
166 typedef struct _SYSTEM_BASIC_INFORMATION {
168 ULONG MaximumIncrement;
169 ULONG PhysicalPageSize;
170 ULONG NumberOfPhysicalPages;
171 ULONG LowestPhysicalPage;
172 ULONG HighestPhysicalPage;
173 ULONG AllocationGranularity;
174 ULONG LowestUserAddress;
175 ULONG HighestUserAddress;
176 ULONG ActiveProcessors;
177 UCHAR NumberProcessors;
178 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
180 typedef struct _SYSTEM_PROCESSOR_INFORMATION {
181 USHORT ProcessorArchitecture;
182 USHORT ProcessorLevel;
183 USHORT ProcessorRevision;
186 } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
188 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
189 LARGE_INTEGER IdleTime;
190 LARGE_INTEGER ReadTransferCount;
191 LARGE_INTEGER WriteTransferCount;
192 LARGE_INTEGER OtherTransferCount;
193 ULONG ReadOperationCount;
194 ULONG WriteOperationCount;
195 ULONG OtherOperationCount;
196 ULONG AvailablePages;
197 ULONG TotalCommittedPages;
198 ULONG TotalCommitLimit;
199 ULONG PeakCommitment;
201 ULONG WriteCopyFaults;
202 ULONG TransitionFaults;
203 ULONG CacheTransitionFaults;
204 ULONG DemandZeroFaults;
209 ULONG PagefilePagesWritten;
210 ULONG PagefilePageWriteIos;
211 ULONG MappedFilePagesWritten;
212 ULONG MappedFilePageWriteIos;
213 ULONG PagedPoolUsage;
214 ULONG NonPagedPoolUsage;
215 ULONG PagedPoolAllocs;
216 ULONG PagedPoolFrees;
217 ULONG NonPagedPoolAllocs;
218 ULONG NonPagedPoolFrees;
219 ULONG TotalFreeSystemPtes;
220 ULONG SystemCodePage;
221 ULONG TotalSystemDriverPages;
222 ULONG TotalSystemCodePages;
223 ULONG SmallNonPagedLookasideListAllocateHits;
224 ULONG SmallPagedLookasideListAllocateHits;
226 ULONG MmSystemCachePage;
228 ULONG SystemDriverPage;
229 ULONG FastReadNoWait;
231 ULONG FastReadResourceMiss;
232 ULONG FastReadNotPossible;
233 ULONG FastMdlReadNoWait;
234 ULONG FastMdlReadWait;
235 ULONG FastMdlReadResourceMiss;
236 ULONG FastMdlReadNotPossible;
239 ULONG MapDataNoWaitMiss;
240 ULONG MapDataWaitMiss;
241 ULONG PinMappedDataCount;
244 ULONG PinReadNoWaitMiss;
245 ULONG PinReadWaitMiss;
246 ULONG CopyReadNoWait;
248 ULONG CopyReadNoWaitMiss;
249 ULONG CopyReadWaitMiss;
252 ULONG MdlReadNoWaitMiss;
253 ULONG MdlReadWaitMiss;
256 ULONG LazyWritePages;
259 ULONG ContextSwitches;
260 ULONG FirstLevelTbFills;
261 ULONG SecondLevelTbFills;
263 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
265 typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION {
266 LARGE_INTEGER BootTime;
267 LARGE_INTEGER CurrentTime;
268 LARGE_INTEGER TimeZoneBias;
269 ULONG CurrentTimeZoneId;
270 } SYSTEM_TIME_OF_DAY_INFORMATION, *PSYSTEM_TIME_OF_DAY_INFORMATION;
272 typedef struct _VM_COUNTERS {
273 ULONG PeakVirtualSize;
275 ULONG PageFaultCount;
276 ULONG PeakWorkingSetSize;
277 ULONG WorkingSetSize;
278 ULONG QuotaPeakPagedPoolUsage;
279 ULONG QuotaPagedPoolUsage;
280 ULONG QuotaPeakNonPagedPoolUsage;
281 ULONG QuotaNonPagedPoolUsage;
283 ULONG PeakPagefileUsage;
286 typedef enum _THREAD_STATE {
297 typedef struct _SYSTEM_THREADS {
298 LARGE_INTEGER KernelTime;
299 LARGE_INTEGER UserTime;
300 LARGE_INTEGER CreateTime;
305 KPRIORITY BasePriority;
306 ULONG ContextSwitchCount;
308 KWAIT_REASON WaitReason;
309 } SYSTEM_THREADS, *PSYSTEM_THREADS;
311 typedef struct _SYSTEM_PROCESSES {
312 ULONG NextEntryDelta;
315 LARGE_INTEGER CreateTime;
316 LARGE_INTEGER UserTime;
317 LARGE_INTEGER KernelTime;
318 UNICODE_STRING ProcessName;
319 KPRIORITY BasePriority;
321 ULONG InheritedFromProcessId;
324 VM_COUNTERS VmCounters;
325 IO_COUNTERS IoCounters;
326 SYSTEM_THREADS Threads[1];
327 } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
329 typedef struct _SYSTEM_CALLS_INFORMATION {
331 ULONG NumberOfDescriptorTables;
332 ULONG NumberOfRoutinesInTable[1];
333 ULONG CallCounts[ANYSIZE_ARRAY];
334 } SYSTEM_CALLS_INFORMATION, *PSYSTEM_CALLS_INFORMATION;
336 typedef struct _SYSTEM_CONFIGURATION_INFORMATION {
343 } SYSTEM_CONFIGURATION_INFORMATION, *PSYSTEM_CONFIGURATION_INFORMATION;
345 typedef struct _SYSTEM_PROCESSOR_TIMES {
346 LARGE_INTEGER IdleTime;
347 LARGE_INTEGER KernelTime;
348 LARGE_INTEGER UserTime;
349 LARGE_INTEGER DpcTime;
350 LARGE_INTEGER InterruptTime;
351 ULONG InterruptCount;
352 } SYSTEM_PROCESSOR_TIMES, *PSYSTEM_PROCESSOR_TIMES;
354 /* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */
355 #define FLG_STOP_ON_EXCEPTION 0x00000001
356 #define FLG_SHOW_LDR_SNAPS 0x00000002
357 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
358 #define FLG_STOP_ON_HUNG_GUI 0x00000008
359 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
360 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
361 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
362 #define FLG_HEAP_VALIDATE_ALL 0x00000080
363 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
364 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
365 #define FLG_POOL_ENABLE_TAGGING 0x00000400
366 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
367 #define FLG_USER_STACK_TRACE_DB 0x00001000
368 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
369 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
370 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
371 #define FLG_IGNORE_DEBUG_PRIV 0x00010000
372 #define FLG_ENABLE_CSRDEBUG 0x00020000
373 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
374 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
375 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
376 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
377 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
378 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
379 #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000
381 typedef struct _SYSTEM_GLOBAL_FLAG {
383 } SYSTEM_GLOBAL_FLAG, *PSYSTEM_GLOBAL_FLAG;
385 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {
392 /* Length of module name not including the path, this
393 field contains valid value only for NTOSKRNL module */
398 } SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY;
400 typedef struct _SYSTEM_MODULE_INFORMATION {
402 SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
403 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
405 typedef struct _SYSTEM_LOCK_INFORMATION {
409 ULONG ExclusiveOwnerThreadId;
411 ULONG ContentionCount;
413 ULONG NumberOfSharedWaiters;
414 ULONG NumberOfExclusiveWaiters;
415 } SYSTEM_LOCK_INFORMATION, *PSYSTEM_LOCK_INFORMATION;
417 /*SYSTEM_HANDLE_INFORMATION.Flags cosntants */
418 #define PROTECT_FROM_CLOSE 0x01
421 typedef struct _SYSTEM_HANDLE_INFORMATION {
423 UCHAR ObjectTypeNumber;
427 ACCESS_MASK GrantedAccess;
428 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
430 typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION {
431 ULONG NextEntryOffset;
435 ULONG InvalidAttributes;
436 GENERIC_MAPPING GenericMapping;
437 ACCESS_MASK ValidAccessMask;
441 } SYSTEM_OBJECT_TYPE_INFORMATION, *PSYSTEM_OBJECT_TYPE_INFORMATION;
443 /* SYSTEM_OBJECT_INFORMATION.Flags constants */
444 #define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY 0x40
445 #define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20
446 #define FLG_SYSOBJINFO_PERMANENT 0x10
447 #define FLG_SYSOBJINFO_EXCLUSIVE 0x08
448 #define FLG_SYSOBJINFO_CREATOR_INFO 0x04
449 #define FLG_SYSOBJINFO_KERNEL_MODE 0x02
451 typedef struct _SYSTEM_OBJECT_INFORMATION {
452 ULONG NextEntryOffset;
454 ULONG CreatorProcessId;
459 ULONG PagedPoolUsage;
460 ULONG NonPagedPoolUsage;
461 ULONG ExclusiveProcessId;
462 PSECURITY_DESCRIPTOR SecurityDescriptor;
464 } SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
466 typedef struct _SYSTEM_PAGEFILE_INFORMATION {
467 ULONG NextEntryOffset;
471 UNICODE_STRING FileName;
472 } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
474 typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION {
475 ULONG SegmentNotPresent;
508 ULONG GenericInvalidOpcode;
509 } SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION;
511 typedef struct _SYSTEM_POOL_TAG_INFORMATION {
513 ULONG PagedPoolAllocs;
514 ULONG PagedPoolFrees;
515 ULONG PagedPoolUsage;
516 ULONG NonPagedPoolAllocs;
517 ULONG NonPagedPoolFrees;
518 ULONG NonPagedPoolUsage;
519 } SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION;
521 typedef struct _SYSTEM_PROCESSOR_STATISTICS {
522 ULONG ContextSwitches;
524 ULONG DpcRequestRate;
526 ULONG DpcBypassCount;
527 ULONG ApcBypassCount;
528 } SYSTEM_PROCESSOR_STATISTICS, *PSYSTEM_PROCESSOR_STATISTICS;
530 typedef struct _SYSTEM_DPC_INFORMATION {
532 ULONG MaximumDpcQueueDepth;
533 ULONG MinimumDpcRate;
534 ULONG AdjustDpcThreshold;
536 } SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION;
538 typedef struct _SYSTEM_LOAD_IMAGE {
539 UNICODE_STRING ModuleName;
541 PVOID SectionPointer;
543 PVOID ExportDirectory;
544 } SYSTEM_LOAD_IMAGE, *PSYSTEM_LOAD_IMAGE;
546 typedef struct _SYSTEM_UNLOAD_IMAGE {
548 } SYSTEM_UNLOAD_IMAGE, *PSYSTEM_UNLOAD_IMAGE;
550 typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT {
551 ULONG TimeAdjustment;
552 ULONG MaximumIncrement;
553 BOOLEAN TimeSynchronization;
554 } SYSTEM_QUERY_TIME_ADJUSTMENT, *PSYSTEM_QUERY_TIME_ADJUSTMENT;
556 typedef struct _SYSTEM_SET_TIME_ADJUSTMENT {
557 ULONG TimeAdjustment;
558 BOOLEAN TimeSynchronization;
559 } SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT;
561 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION {
562 HANDLE CrashDumpSectionHandle;
564 } SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION;
566 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
567 ULONG AlignmentFixupCount;
568 ULONG ExceptionDispatchCount;
569 ULONG FloatingEmulationCount;
571 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
573 typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION {
574 ULONG CrashDumpSectionExists;
576 } SYSTEM_CRASH_DUMP_STATE_INFORMATION, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION;
578 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
579 BOOLEAN DebuggerEnabled;
580 BOOLEAN DebuggerNotPresent;
581 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
583 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION {
584 ULONG ContextSwitches;
585 ULONG ContextSwitchCounters[11];
586 } SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
588 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
590 ULONG RegistryQuotaInUse;
592 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
594 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE {
595 UNICODE_STRING ModuleName;
596 } SYSTEM_LOAD_AND_CALL_IMAGE, *PSYSTEM_LOAD_AND_CALL_IMAGE;
598 typedef struct _SYSTEM_PRIORITY_SEPARATION {
599 ULONG PrioritySeparation;
600 } SYSTEM_PRIORITY_SEPARATION, *PSYSTEM_PRIORITY_SEPARATION;
602 typedef struct _SYSTEM_TIME_ZONE_INFORMATION {
604 WCHAR StandardName[32];
605 LARGE_INTEGER StandardDate;
607 WCHAR DaylightName[32];
608 LARGE_INTEGER DaylightDate;
610 } SYSTEM_TIME_ZONE_INFORMATION, *PSYSTEM_TIME_ZONE_INFORMATION;
612 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
615 ULONG TotalAllocates;
616 ULONG AllocateMisses;
622 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
624 typedef struct _SYSTEM_SET_TIME_SLIP_EVENT {
625 HANDLE TimeSlipEvent;
626 } SYSTEM_SET_TIME_SLIP_EVENT, *PSYSTEM_SET_TIME_SLIP_EVENT;
628 typedef struct _SYSTEM_CREATE_SESSION {
630 } SYSTEM_CREATE_SESSION, *PSYSTEM_CREATE_SESSION;
632 typedef struct _SYSTEM_DELETE_SESSION {
634 } SYSTEM_DELETE_SESSION, *PSYSTEM_DELETE_SESSION;
636 typedef struct _SYSTEM_RANGE_START_INFORMATION {
637 PVOID SystemRangeStart;
638 } SYSTEM_RANGE_START_INFORMATION, *PSYSTEM_RANGE_START_INFORMATION;
640 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION {
644 } SYSTEM_SESSION_PROCESSES_INFORMATION, *PSYSTEM_SESSION_PROCESSES_INFORMATION;
646 typedef struct _SYSTEM_POOL_BLOCK {
651 } SYSTEM_POOL_BLOCK, *PSYSTEM_POOL_BLOCK;
653 typedef struct _SYSTEM_POOL_BLOCKS_INFORMATION {
657 ULONG NumberOfBlocks;
658 SYSTEM_POOL_BLOCK PoolBlocks[1];
659 } SYSTEM_POOL_BLOCKS_INFORMATION, *PSYSTEM_POOL_BLOCKS_INFORMATION;
661 typedef struct _SYSTEM_MEMORY_USAGE {
667 } SYSTEM_MEMORY_USAGE, *PSYSTEM_MEMORY_USAGE;
669 typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION {
672 SYSTEM_MEMORY_USAGE MemoryUsage[1];
673 } SYSTEM_MEMORY_USAGE_INFORMATION, *PSYSTEM_MEMORY_USAGE_INFORMATION;
678 NtQuerySystemInformation(
679 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
680 /*IN OUT*/ PVOID SystemInformation,
681 /*IN*/ ULONG SystemInformationLength,
682 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
687 ZwQuerySystemInformation(
688 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
689 /*IN OUT*/ PVOID SystemInformation,
690 /*IN*/ ULONG SystemInformationLength,
691 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
696 NtQueryFullAttributesFile(
697 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
698 /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation);
703 ZwQueryFullAttributesFile(
704 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
705 /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation);
710 NtSetSystemInformation(
711 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
712 /*IN OUT*/ PVOID SystemInformation,
713 /*IN*/ ULONG SystemInformationLength);
718 ZwSetSystemInformation(
719 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
720 /*IN OUT*/ PVOID SystemInformation,
721 /*IN*/ ULONG SystemInformationLength);
726 NtQuerySystemEnvironmentValue(
727 /*IN*/ PUNICODE_STRING Name,
729 /*IN*/ ULONG ValueLength,
730 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
735 ZwQuerySystemEnvironmentValue(
736 /*IN*/ PUNICODE_STRING Name,
738 /*IN*/ ULONG ValueLength,
739 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
744 NtSetSystemEnvironmentValue(
745 /*IN*/ PUNICODE_STRING Name,
746 /*IN*/ PUNICODE_STRING Value);
751 ZwSetSystemEnvironmentValue(
752 /*IN*/ PUNICODE_STRING Name,
753 /*IN*/ PUNICODE_STRING Value);
755 typedef enum _SHUTDOWN_ACTION {
765 /*IN*/ SHUTDOWN_ACTION Action);
771 /*IN*/ SHUTDOWN_ACTION Action);
773 typedef enum _DEBUG_CONTROL_CODE {
774 DebugGetTraceInformation = 1,
775 DebugSetInternalBreakpoint,
777 DebugClearSpecialCalls,
778 DebugQuerySpecialCalls,
781 } DEBUG_CONTROL_CODE;
787 NtSystemDebugControl(
788 /*IN*/ DEBUG_CONTROL_CODE ControlCode,
789 /*IN*/ PVOID InputBuffer /*OPTIONAL*/,
790 /*IN*/ ULONG InputBufferLength,
791 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/,
792 /*IN*/ ULONG OutputBufferLength,
793 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
798 ZwSystemDebugControl(
799 /*IN*/ DEBUG_CONTROL_CODE ControlCode,
800 /*IN*/ PVOID InputBuffer /*OPTIONAL*/,
801 /*IN*/ ULONG InputBufferLength,
802 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/,
803 /*IN*/ ULONG OutputBufferLength,
804 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
808 /* Objects, Object directories, and symbolic links */
810 typedef enum _OBJECT_INFORMATION_CLASS {
811 ObjectBasicInformation,
812 ObjectNameInformation,
813 ObjectTypeInformation,
814 ObjectAllTypesInformation,
815 ObjectHandleInformation
816 } OBJECT_INFORMATION_CLASS;
822 /*IN*/ HANDLE ObjectHandle,
823 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass,
824 /*OUT*/ PVOID ObjectInformation,
825 /*IN*/ ULONG ObjectInformationLength,
826 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
832 /*IN*/ HANDLE ObjectHandle,
833 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass,
834 /*OUT*/ PVOID ObjectInformation,
835 /*IN*/ ULONG ObjectInformationLength,
836 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
841 NtSetInformationObject(
842 /*IN*/ HANDLE ObjectHandle,
843 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass,
844 /*IN*/ PVOID ObjectInformation,
845 /*IN*/ ULONG ObjectInformationLength);
850 ZwSetInformationObject(
851 /*IN*/ HANDLE ObjectHandle,
852 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass,
853 /*IN*/ PVOID ObjectInformation,
854 /*IN*/ ULONG ObjectInformationLength);
856 /* OBJECT_BASIC_INFORMATION.Attributes constants */
857 /* also in winbase.h */
858 #define HANDLE_FLAG_INHERIT 0x01
859 #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02
861 #define PERMANENT 0x10
862 #define EXCLUSIVE 0x20
864 typedef struct _OBJECT_BASIC_INFORMATION {
866 ACCESS_MASK GrantedAccess;
869 ULONG PagedPoolUsage;
870 ULONG NonPagedPoolUsage;
872 ULONG NameInformationLength;
873 ULONG TypeInformationLength;
874 ULONG SecurityDescriptorLength;
875 LARGE_INTEGER CreateTime;
876 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
878 /* FIXME: Enable later */
879 typedef struct _OBJECT_TYPE_INFORMATION {
884 ULONG PeakObjectCount;
885 ULONG PeakHandleCount;
887 ULONG InvalidAttributes;
888 GENERIC_MAPPING GenericMapping;
891 BOOLEAN MaintainHandleDatabase;
893 ULONG PagedPoolUsage;
894 ULONG NonPagedPoolUsage;
895 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
897 typedef struct _OBJECT_ALL_TYPES_INFORMATION {
899 OBJECT_TYPE_INFORMATION TypeInformation;
900 } OBJECT_ALL_TYPES_INFORMATION, *POBJECT_ALL_TYPES_INFORMATION;
902 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION {
904 BOOLEAN ProtectFromClose;
905 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION;
911 /*IN*/ HANDLE SourceProcessHandle,
912 /*IN*/ HANDLE SourceHandle,
913 /*IN*/ HANDLE TargetProcessHandle,
914 /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/,
915 /*IN*/ ACCESS_MASK DesiredAccess,
916 /*IN*/ ULONG Attributes,
917 /*IN*/ ULONG Options);
923 /*IN*/ HANDLE SourceProcessHandle,
924 /*IN*/ HANDLE SourceHandle,
925 /*IN*/ HANDLE TargetProcessHandle,
926 /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/,
927 /*IN*/ ACCESS_MASK DesiredAccess,
928 /*IN*/ ULONG Attributes,
929 /*IN*/ ULONG Options);
934 NtQuerySecurityObject(
935 /*IN*/ HANDLE Handle,
936 /*IN*/ SECURITY_INFORMATION SecurityInformation,
937 /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
938 /*IN*/ ULONG SecurityDescriptorLength,
939 /*OUT*/ PULONG ReturnLength);
944 ZwQuerySecurityObject(
945 /*IN*/ HANDLE Handle,
946 /*IN*/ SECURITY_INFORMATION SecurityInformation,
947 /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
948 /*IN*/ ULONG SecurityDescriptorLength,
949 /*OUT*/ PULONG ReturnLength);
955 /*IN*/ HANDLE Handle,
956 /*IN*/ SECURITY_INFORMATION SecurityInformation,
957 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);
963 /*IN*/ HANDLE Handle,
964 /*IN*/ SECURITY_INFORMATION SecurityInformation,
965 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);
970 NtOpenDirectoryObject(
971 /*OUT*/ PHANDLE DirectoryHandle,
972 /*IN*/ ACCESS_MASK DesiredAccess,
973 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
978 ZwOpenDirectoryObject(
979 /*OUT*/ PHANDLE DirectoryHandle,
980 /*IN*/ ACCESS_MASK DesiredAccess,
981 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
986 NtQueryDirectoryObject(
987 /*IN*/ HANDLE DirectoryHandle,
988 /*OUT*/ PVOID Buffer,
989 /*IN*/ ULONG BufferLength,
990 /*IN*/ BOOLEAN ReturnSingleEntry,
991 /*IN*/ BOOLEAN RestartScan,
992 /*IN OUT*/ PULONG Context,
993 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
998 ZwQueryDirectoryObject(
999 /*IN*/ HANDLE DirectoryHandle,
1000 /*OUT*/ PVOID Buffer,
1001 /*IN*/ ULONG BufferLength,
1002 /*IN*/ BOOLEAN ReturnSingleEntry,
1003 /*IN*/ BOOLEAN RestartScan,
1004 /*IN OUT*/ PULONG Context,
1005 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1007 typedef struct _DIRECTORY_BASIC_INFORMATION {
1008 UNICODE_STRING ObjectName;
1009 UNICODE_STRING ObjectTypeName;
1010 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
1015 NtCreateSymbolicLinkObject(
1016 /*OUT*/ PHANDLE SymbolicLinkHandle,
1017 /*IN*/ ACCESS_MASK DesiredAccess,
1018 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1019 /*IN*/ PUNICODE_STRING TargetName);
1024 ZwCreateSymbolicLinkObject(
1025 /*OUT*/ PHANDLE SymbolicLinkHandle,
1026 /*IN*/ ACCESS_MASK DesiredAccess,
1027 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1028 /*IN*/ PUNICODE_STRING TargetName);
1033 /* Virtual memory */
1035 typedef enum _MEMORY_INFORMATION_CLASS {
1036 MemoryBasicInformation,
1037 MemoryWorkingSetList,
1039 MemoryBasicVlmInformation
1040 } MEMORY_INFORMATION_CLASS;
1045 NtAllocateVirtualMemory(
1046 /*IN*/ HANDLE ProcessHandle,
1047 /*IN OUT*/ PVOID *BaseAddress,
1048 /*IN*/ ULONG ZeroBits,
1049 /*IN OUT*/ PULONG AllocationSize,
1050 /*IN*/ ULONG AllocationType,
1051 /*IN*/ ULONG Protect);
1056 ZwAllocateVirtualMemory(
1057 /*IN*/ HANDLE ProcessHandle,
1058 /*IN OUT*/ PVOID *BaseAddress,
1059 /*IN*/ ULONG ZeroBits,
1060 /*IN OUT*/ PULONG AllocationSize,
1061 /*IN*/ ULONG AllocationType,
1062 /*IN*/ ULONG Protect);
1067 NtFreeVirtualMemory(
1068 /*IN*/ HANDLE ProcessHandle,
1069 /*IN OUT*/ PVOID *BaseAddress,
1070 /*IN OUT*/ PULONG FreeSize,
1071 /*IN*/ ULONG FreeType);
1076 ZwFreeVirtualMemory(
1077 /*IN*/ HANDLE ProcessHandle,
1078 /*IN OUT*/ PVOID *BaseAddress,
1079 /*IN OUT*/ PULONG FreeSize,
1080 /*IN*/ ULONG FreeType);
1085 NtQueryVirtualMemory(
1086 /*IN*/ HANDLE ProcessHandle,
1087 /*IN*/ PVOID BaseAddress,
1088 /*IN*/ MEMORY_INFORMATION_CLASS MemoryInformationClass,
1089 /*OUT*/ PVOID MemoryInformation,
1090 /*IN*/ ULONG MemoryInformationLength,
1091 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1096 ZwQueryVirtualMemory(
1097 /*IN*/ HANDLE ProcessHandle,
1098 /*IN*/ PVOID BaseAddress,
1099 /*IN*/ MEMORY_INFORMATION_CLASS MemoryInformationClass,
1100 /*OUT*/ PVOID MemoryInformation,
1101 /*IN*/ ULONG MemoryInformationLength,
1102 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1104 /* MEMORY_WORKING_SET_LIST.WorkingSetList constants */
1105 #define WSLE_PAGE_READONLY 0x001
1106 #define WSLE_PAGE_EXECUTE 0x002
1107 #define WSLE_PAGE_READWRITE 0x004
1108 #define WSLE_PAGE_EXECUTE_READ 0x003
1109 #define WSLE_PAGE_WRITECOPY 0x005
1110 #define WSLE_PAGE_EXECUTE_READWRITE 0x006
1111 #define WSLE_PAGE_EXECUTE_WRITECOPY 0x007
1112 #define WSLE_PAGE_SHARE_COUNT_MASK 0x0E0
1113 #define WSLE_PAGE_SHAREABLE 0x100
1115 typedef struct _MEMORY_WORKING_SET_LIST {
1116 ULONG NumberOfPages;
1117 ULONG WorkingSetList[1];
1118 } MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST;
1120 typedef struct _MEMORY_SECTION_NAME {
1121 UNICODE_STRING SectionFileName;
1122 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
1124 /* Zw[Lock|Unlock]VirtualMemory.LockType constants */
1125 #define LOCK_VM_IN_WSL 0x01
1126 #define LOCK_VM_IN_RAM 0x02
1131 NtLockVirtualMemory(
1132 /*IN*/ HANDLE ProcessHandle,
1133 /*IN OUT*/ PVOID *BaseAddress,
1134 /*IN OUT*/ PULONG LockSize,
1135 /*IN*/ ULONG LockType);
1140 ZwLockVirtualMemory(
1141 /*IN*/ HANDLE ProcessHandle,
1142 /*IN OUT*/ PVOID *BaseAddress,
1143 /*IN OUT*/ PULONG LockSize,
1144 /*IN*/ ULONG LockType);
1149 NtUnlockVirtualMemory(
1150 /*IN*/ HANDLE ProcessHandle,
1151 /*IN OUT*/ PVOID *BaseAddress,
1152 /*IN OUT*/ PULONG LockSize,
1153 /*IN*/ ULONG LockType);
1158 ZwUnlockVirtualMemory(
1159 /*IN*/ HANDLE ProcessHandle,
1160 /*IN OUT*/ PVOID *BaseAddress,
1161 /*IN OUT*/ PULONG LockSize,
1162 /*IN*/ ULONG LockType);
1167 NtReadVirtualMemory(
1168 /*IN*/ HANDLE ProcessHandle,
1169 /*IN*/ PVOID BaseAddress,
1170 /*OUT*/ PVOID Buffer,
1171 /*IN*/ ULONG BufferLength,
1172 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1177 ZwReadVirtualMemory(
1178 /*IN*/ HANDLE ProcessHandle,
1179 /*IN*/ PVOID BaseAddress,
1180 /*OUT*/ PVOID Buffer,
1181 /*IN*/ ULONG BufferLength,
1182 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1187 NtWriteVirtualMemory(
1188 /*IN*/ HANDLE ProcessHandle,
1189 /*IN*/ PVOID BaseAddress,
1190 /*IN*/ PVOID Buffer,
1191 /*IN*/ ULONG BufferLength,
1192 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1197 ZwWriteVirtualMemory(
1198 /*IN*/ HANDLE ProcessHandle,
1199 /*IN*/ PVOID BaseAddress,
1200 /*IN*/ PVOID Buffer,
1201 /*IN*/ ULONG BufferLength,
1202 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1207 NtProtectVirtualMemory(
1208 /*IN*/ HANDLE ProcessHandle,
1209 /*IN OUT*/ PVOID *BaseAddress,
1210 /*IN OUT*/ PULONG ProtectSize,
1211 /*IN*/ ULONG NewProtect,
1212 /*OUT*/ PULONG OldProtect);
1217 ZwProtectVirtualMemory(
1218 /*IN*/ HANDLE ProcessHandle,
1219 /*IN OUT*/ PVOID *BaseAddress,
1220 /*IN OUT*/ PULONG ProtectSize,
1221 /*IN*/ ULONG NewProtect,
1222 /*OUT*/ PULONG OldProtect);
1227 NtFlushVirtualMemory(
1228 /*IN*/ HANDLE ProcessHandle,
1229 /*IN OUT*/ PVOID *BaseAddress,
1230 /*IN OUT*/ PULONG FlushSize,
1231 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
1236 ZwFlushVirtualMemory(
1237 /*IN*/ HANDLE ProcessHandle,
1238 /*IN OUT*/ PVOID *BaseAddress,
1239 /*IN OUT*/ PULONG FlushSize,
1240 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
1245 NtAllocateUserPhysicalPages(
1246 /*IN*/ HANDLE ProcessHandle,
1247 /*IN*/ PULONG NumberOfPages,
1248 /*OUT*/ PULONG PageFrameNumbers);
1253 ZwAllocateUserPhysicalPages(
1254 /*IN*/ HANDLE ProcessHandle,
1255 /*IN*/ PULONG NumberOfPages,
1256 /*OUT*/ PULONG PageFrameNumbers);
1261 NtFreeUserPhysicalPages(
1262 /*IN*/ HANDLE ProcessHandle,
1263 /*IN OUT*/ PULONG NumberOfPages,
1264 /*IN*/ PULONG PageFrameNumbers);
1269 ZwFreeUserPhysicalPages(
1270 /*IN*/ HANDLE ProcessHandle,
1271 /*IN OUT*/ PULONG NumberOfPages,
1272 /*IN*/ PULONG PageFrameNumbers);
1277 NtMapUserPhysicalPages(
1278 /*IN*/ PVOID BaseAddress,
1279 /*IN*/ PULONG NumberOfPages,
1280 /*IN*/ PULONG PageFrameNumbers);
1285 ZwMapUserPhysicalPages(
1286 /*IN*/ PVOID BaseAddress,
1287 /*IN*/ PULONG NumberOfPages,
1288 /*IN*/ PULONG PageFrameNumbers);
1293 NtMapUserPhysicalPagesScatter(
1294 /*IN*/ PVOID *BaseAddresses,
1295 /*IN*/ PULONG NumberOfPages,
1296 /*IN*/ PULONG PageFrameNumbers);
1301 ZwMapUserPhysicalPagesScatter(
1302 /*IN*/ PVOID *BaseAddresses,
1303 /*IN*/ PULONG NumberOfPages,
1304 /*IN*/ PULONG PageFrameNumbers);
1310 /*IN*/ HANDLE ProcessHandle,
1312 /*IN*/ PVOID BaseAddress,
1313 /*IN*/ ULONG RegionSize,
1314 /*OUT*/ PULONG Buffer,
1315 /*IN OUT*/ PULONG BufferEntries,
1316 /*OUT*/ PULONG Granularity);
1322 /*IN*/ HANDLE ProcessHandle,
1324 /*IN*/ PVOID BaseAddress,
1325 /*IN*/ ULONG RegionSize,
1326 /*OUT*/ PULONG Buffer,
1327 /*IN OUT*/ PULONG BufferEntries,
1328 /*OUT*/ PULONG Granularity);
1334 /*IN*/ HANDLE ProcessHandle,
1335 /*IN*/ PVOID BaseAddress,
1336 /*IN*/ ULONG RegionSize);
1342 /*IN*/ HANDLE ProcessHandle,
1343 /*IN*/ PVOID BaseAddress,
1344 /*IN*/ ULONG RegionSize);
1351 typedef enum _SECTION_INFORMATION_CLASS {
1352 SectionBasicInformation,
1353 SectionImageInformation
1354 } SECTION_INFORMATION_CLASS;
1360 /*OUT*/ PHANDLE SectionHandle,
1361 /*IN*/ ACCESS_MASK DesiredAccess,
1362 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1363 /*IN*/ PLARGE_INTEGER SectionSize /*OPTIONAL*/,
1364 /*IN*/ ULONG Protect,
1365 /*IN*/ ULONG Attributes,
1366 /*IN*/ HANDLE FileHandle);
1372 /*OUT*/ PHANDLE SectionHandle,
1373 /*IN*/ ACCESS_MASK DesiredAccess,
1374 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1375 /*IN*/ PLARGE_INTEGER SectionSize /*OPTIONAL*/,
1376 /*IN*/ ULONG Protect,
1377 /*IN*/ ULONG Attributes,
1378 /*IN*/ HANDLE FileHandle);
1384 /*IN*/ HANDLE SectionHandle,
1385 /*IN*/ SECTION_INFORMATION_CLASS SectionInformationClass,
1386 /*OUT*/ PVOID SectionInformation,
1387 /*IN*/ ULONG SectionInformationLength,
1388 /*OUT*/ PULONG ResultLength /*OPTIONAL*/);
1394 /*IN*/ HANDLE SectionHandle,
1395 /*IN*/ SECTION_INFORMATION_CLASS SectionInformationClass,
1396 /*OUT*/ PVOID SectionInformation,
1397 /*IN*/ ULONG SectionInformationLength,
1398 /*OUT*/ PULONG ResultLength /*OPTIONAL*/);
1404 /*IN*/ HANDLE SectionHandle,
1405 /*IN*/ PLARGE_INTEGER SectionSize);
1411 /*IN*/ HANDLE SectionHandle,
1412 /*IN*/ PLARGE_INTEGER SectionSize);
1417 NtAreMappedFilesTheSame(
1418 /*IN*/ PVOID Address1,
1419 /*IN*/ PVOID Address2);
1424 ZwAreMappedFilesTheSame(
1425 /*IN*/ PVOID Address1,
1426 /*IN*/ PVOID Address2);
1433 typedef struct _USER_STACK {
1434 PVOID FixedStackBase;
1435 PVOID FixedStackLimit;
1436 PVOID ExpandableStackBase;
1437 PVOID ExpandableStackLimit;
1438 PVOID ExpandableStackBottom;
1439 } USER_STACK, *PUSER_STACK;
1445 /*OUT*/ PHANDLE ThreadHandle,
1446 /*IN*/ ACCESS_MASK DesiredAccess,
1447 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1448 /*IN*/ HANDLE ProcessHandle,
1449 /*OUT*/ PCLIENT_ID ClientId,
1450 /*IN*/ PCONTEXT ThreadContext,
1451 /*IN*/ PUSER_STACK UserStack,
1452 /*IN*/ BOOLEAN CreateSuspended);
1458 /*OUT*/ PHANDLE ThreadHandle,
1459 /*IN*/ ACCESS_MASK DesiredAccess,
1460 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1461 /*IN*/ HANDLE ProcessHandle,
1462 /*OUT*/ PCLIENT_ID ClientId,
1463 /*IN*/ PCONTEXT ThreadContext,
1464 /*IN*/ PUSER_STACK UserStack,
1465 /*IN*/ BOOLEAN CreateSuspended);
1471 /*OUT*/ PHANDLE ThreadHandle,
1472 /*IN*/ ACCESS_MASK DesiredAccess,
1473 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1474 /*IN*/ PCLIENT_ID ClientId);
1480 /*OUT*/ PHANDLE ThreadHandle,
1481 /*IN*/ ACCESS_MASK DesiredAccess,
1482 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1483 /*IN*/ PCLIENT_ID ClientId);
1489 /*IN*/ HANDLE ThreadHandle /*OPTIONAL*/,
1490 /*IN*/ NTSTATUS ExitStatus);
1496 /*IN*/ HANDLE ThreadHandle /*OPTIONAL*/,
1497 /*IN*/ NTSTATUS ExitStatus);
1502 NtQueryInformationThread(
1503 /*IN*/ HANDLE ThreadHandle,
1504 /*IN*/ THREADINFOCLASS ThreadInformationClass,
1505 /*OUT*/ PVOID ThreadInformation,
1506 /*IN*/ ULONG ThreadInformationLength,
1507 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1512 ZwQueryInformationThread(
1513 /*IN*/ HANDLE ThreadHandle,
1514 /*IN*/ THREADINFOCLASS ThreadInformationClass,
1515 /*OUT*/ PVOID ThreadInformation,
1516 /*IN*/ ULONG ThreadInformationLength,
1517 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1522 NtSetInformationThread(
1523 /*IN*/ HANDLE ThreadHandle,
1524 /*IN*/ THREADINFOCLASS ThreadInformationClass,
1525 /*IN*/ PVOID ThreadInformation,
1526 /*IN*/ ULONG ThreadInformationLength);
1531 ZwSetInformationThread(
1532 /*IN*/ HANDLE ThreadHandle,
1533 /*IN*/ THREADINFOCLASS ThreadInformationClass,
1534 /*IN*/ PVOID ThreadInformation,
1535 /*IN*/ ULONG ThreadInformationLength);
1537 typedef struct _THREAD_BASIC_INFORMATION {
1538 NTSTATUS ExitStatus;
1539 PNT_TIB TebBaseAddress;
1541 KAFFINITY AffinityMask;
1543 KPRIORITY BasePriority;
1544 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
1546 typedef struct _KERNEL_USER_TIMES {
1547 LARGE_INTEGER CreateTime;
1548 LARGE_INTEGER ExitTime;
1549 LARGE_INTEGER KernelTime;
1550 LARGE_INTEGER UserTime;
1551 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
1557 /*IN*/ HANDLE ThreadHandle,
1558 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1564 /*IN*/ HANDLE ThreadHandle,
1565 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1571 /*IN*/ HANDLE ThreadHandle,
1572 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1578 /*IN*/ HANDLE ThreadHandle,
1579 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1585 /*IN*/ HANDLE ThreadHandle,
1586 /*OUT*/ PCONTEXT Context);
1592 /*IN*/ HANDLE ThreadHandle,
1593 /*OUT*/ PCONTEXT Context);
1599 /*IN*/ HANDLE ThreadHandle,
1600 /*IN*/ PCONTEXT Context);
1606 /*IN*/ HANDLE ThreadHandle,
1607 /*IN*/ PCONTEXT Context);
1613 /*IN*/ HANDLE ThreadHandle,
1614 /*IN*/ PKNORMAL_ROUTINE ApcRoutine,
1615 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
1616 /*IN*/ PVOID Argument1 /*OPTIONAL*/,
1617 /*IN*/ PVOID Argument2 /*OPTIONAL*/);
1623 /*IN*/ HANDLE ThreadHandle,
1624 /*IN*/ PKNORMAL_ROUTINE ApcRoutine,
1625 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
1626 /*IN*/ PVOID Argument1 /*OPTIONAL*/,
1627 /*IN*/ PVOID Argument2 /*OPTIONAL*/);
1645 /*IN*/ HANDLE ThreadHandle);
1651 /*IN*/ HANDLE ThreadHandle);
1656 NtAlertResumeThread(
1657 /*IN*/ HANDLE ThreadHandle,
1658 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1663 ZwAlertResumeThread(
1664 /*IN*/ HANDLE ThreadHandle,
1665 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1670 NtRegisterThreadTerminatePort(
1671 /*IN*/ HANDLE PortHandle);
1676 ZwRegisterThreadTerminatePort(
1677 /*IN*/ HANDLE PortHandle);
1682 NtImpersonateThread(
1683 /*IN*/ HANDLE ThreadHandle,
1684 /*IN*/ HANDLE TargetThreadHandle,
1685 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos);
1690 ZwImpersonateThread(
1691 /*IN*/ HANDLE ThreadHandle,
1692 /*IN*/ HANDLE TargetThreadHandle,
1693 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos);
1698 NtImpersonateAnonymousToken(
1699 /*IN*/ HANDLE ThreadHandle);
1704 ZwImpersonateAnonymousToken(
1705 /*IN*/ HANDLE ThreadHandle);
1716 /*OUT*/ PHANDLE ProcessHandle,
1717 /*IN*/ ACCESS_MASK DesiredAccess,
1718 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1719 /*IN*/ HANDLE InheritFromProcessHandle,
1720 /*IN*/ BOOLEAN InheritHandles,
1721 /*IN*/ HANDLE SectionHandle /*OPTIONAL*/,
1722 /*IN*/ HANDLE DebugPort /*OPTIONAL*/,
1723 /*IN*/ HANDLE ExceptionPort /*OPTIONAL*/);
1729 /*OUT*/ PHANDLE ProcessHandle,
1730 /*IN*/ ACCESS_MASK DesiredAccess,
1731 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1732 /*IN*/ HANDLE InheritFromProcessHandle,
1733 /*IN*/ BOOLEAN InheritHandles,
1734 /*IN*/ HANDLE SectionHandle /*OPTIONAL*/,
1735 /*IN*/ HANDLE DebugPort /*OPTIONAL*/,
1736 /*IN*/ HANDLE ExceptionPort /*OPTIONAL*/);
1742 /*IN*/ HANDLE ProcessHandle /*OPTIONAL*/,
1743 /*IN*/ NTSTATUS ExitStatus);
1749 /*IN*/ HANDLE ProcessHandle /*OPTIONAL*/,
1750 /*IN*/ NTSTATUS ExitStatus);
1755 NtQueryInformationProcess(
1756 /*IN*/ HANDLE ProcessHandle,
1757 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
1758 /*OUT*/ PVOID ProcessInformation,
1759 /*IN*/ ULONG ProcessInformationLength,
1760 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1765 ZwQueryInformationProcess(
1766 /*IN*/ HANDLE ProcessHandle,
1767 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
1768 /*OUT*/ PVOID ProcessInformation,
1769 /*IN*/ ULONG ProcessInformationLength,
1770 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1775 NtSetInformationProcess(
1776 /*IN*/ HANDLE ProcessHandle,
1777 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
1778 /*IN*/ PVOID ProcessInformation,
1779 /*IN*/ ULONG ProcessInformationLength);
1784 ZwSetInformationProcess(
1785 /*IN*/ HANDLE ProcessHandle,
1786 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
1787 /*IN*/ PVOID ProcessInformation,
1788 /*IN*/ ULONG ProcessInformationLength);
1790 typedef struct _PROCESS_BASIC_INFORMATION {
1791 NTSTATUS ExitStatus;
1792 PPEB PebBaseAddress;
1793 KAFFINITY AffinityMask;
1794 KPRIORITY BasePriority;
1795 ULONG UniqueProcessId;
1796 ULONG InheritedFromUniqueProcessId;
1797 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1799 typedef struct _PROCESS_ACCESS_TOKEN {
1802 } PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN;
1804 /* DefaultHardErrorMode constants */
1805 /* also in winbase.h */
1806 #define SEM_FAILCRITICALERRORS 0x0001
1807 #define SEM_NOGPFAULTERRORBOX 0x0002
1808 #define SEM_NOALIGNMENTFAULTEXCEPT 0x0004
1809 #define SEM_NOOPENFILEERRORBOX 0x8000
1811 typedef struct _POOLED_USAGE_AND_LIMITS {
1812 ULONG PeakPagedPoolUsage;
1813 ULONG PagedPoolUsage;
1814 ULONG PagedPoolLimit;
1815 ULONG PeakNonPagedPoolUsage;
1816 ULONG NonPagedPoolUsage;
1817 ULONG NonPagedPoolLimit;
1818 ULONG PeakPagefileUsage;
1819 ULONG PagefileUsage;
1820 ULONG PagefileLimit;
1821 } POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS;
1823 typedef struct _PROCESS_WS_WATCH_INFORMATION {
1826 } PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION;
1828 /* PROCESS_PRIORITY_CLASS.PriorityClass constants */
1832 #define PC_REALTIME 4
1833 #define PC_BELOW_NORMAL 5
1834 #define PC_ABOVE_NORMAL 6
1836 typedef struct _PROCESS_PRIORITY_CLASS {
1838 UCHAR PriorityClass;
1839 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1841 /* PROCESS_DEVICEMAP_INFORMATION.DriveType constants */
1842 #define DRIVE_UNKNOWN 0
1843 #define DRIVE_NO_ROOT_DIR 1
1844 #define DRIVE_REMOVABLE 2
1845 #define DRIVE_FIXED 3
1846 #define DRIVE_REMOTE 4
1847 #define DRIVE_CDROM 5
1848 #define DRIVE_RAMDISK 6
1850 typedef struct _PROCESS_DEVICEMAP_INFORMATION {
1851 _ANONYMOUS_UNION union {
1853 HANDLE DirectoryHandle;
1857 UCHAR DriveType[32];
1860 } PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION;
1862 typedef struct _PROCESS_SESSION_INFORMATION {
1864 } PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
1866 typedef struct _RTL_USER_PROCESS_PARAMETERS {
1867 ULONG AllocationSize;
1876 UNICODE_STRING CurrentDirectoryName;
1877 HANDLE CurrentDirectoryHandle;
1878 UNICODE_STRING DllPath;
1879 UNICODE_STRING ImagePathName;
1880 UNICODE_STRING CommandLine;
1886 ULONG dwXCountChars;
1887 ULONG dwYCountChars;
1888 ULONG dwFillAttribute;
1891 UNICODE_STRING WindowTitle;
1892 UNICODE_STRING DesktopInfo;
1893 UNICODE_STRING ShellInfo;
1894 UNICODE_STRING RuntimeInfo;
1895 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
1899 RtlCreateProcessParameters(
1900 /*OUT*/ PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
1901 /*IN*/ PUNICODE_STRING ImageFile,
1902 /*IN*/ PUNICODE_STRING DllPath /*OPTIONAL*/,
1903 /*IN*/ PUNICODE_STRING CurrentDirectory /*OPTIONAL*/,
1904 /*IN*/ PUNICODE_STRING CommandLine /*OPTIONAL*/,
1905 /*IN*/ PWSTR Environment /*OPTIONAL*/,
1906 /*IN*/ PUNICODE_STRING WindowTitle /*OPTIONAL*/,
1907 /*IN*/ PUNICODE_STRING DesktopInfo /*OPTIONAL*/,
1908 /*IN*/ PUNICODE_STRING ShellInfo /*OPTIONAL*/,
1909 /*IN*/ PUNICODE_STRING RuntimeInfo /*OPTIONAL*/);
1913 RtlDestroyProcessParameters(
1914 /*IN*/ PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1916 typedef struct _DEBUG_BUFFER {
1917 HANDLE SectionHandle;
1919 PVOID RemoteSectionBase;
1920 ULONG SectionBaseDelta;
1921 HANDLE EventPairHandle;
1923 HANDLE RemoteThreadHandle;
1924 ULONG InfoClassMask;
1926 ULONG AllocatedSize;
1928 PVOID ModuleInformation;
1929 PVOID BackTraceInformation;
1930 PVOID HeapInformation;
1931 PVOID LockInformation;
1933 } DEBUG_BUFFER, *PDEBUG_BUFFER;
1937 RtlCreateQueryDebugBuffer(
1939 /*IN*/ BOOLEAN EventPair);
1941 /* RtlQueryProcessDebugInformation.DebugInfoClassMask constants */
1942 #define PDI_MODULES 0x01
1943 #define PDI_BACKTRACE 0x02
1944 #define PDI_HEAPS 0x04
1945 #define PDI_HEAP_TAGS 0x08
1946 #define PDI_HEAP_BLOCKS 0x10
1947 #define PDI_LOCKS 0x20
1951 RtlQueryProcessDebugInformation(
1952 /*IN*/ ULONG ProcessId,
1953 /*IN*/ ULONG DebugInfoClassMask,
1954 /*IN OUT*/ PDEBUG_BUFFER DebugBuffer);
1958 RtlDestroyQueryDebugBuffer(
1959 /*IN*/ PDEBUG_BUFFER DebugBuffer);
1961 /* DEBUG_MODULE_INFORMATION.Flags constants */
1962 #define LDRP_STATIC_LINK 0x00000002
1963 #define LDRP_IMAGE_DLL 0x00000004
1964 #define LDRP_LOAD_IN_PROGRESS 0x00001000
1965 #define LDRP_UNLOAD_IN_PROGRESS 0x00002000
1966 #define LDRP_ENTRY_PROCESSED 0x00004000
1967 #define LDRP_ENTRY_INSERTED 0x00008000
1968 #define LDRP_CURRENT_LOAD 0x00010000
1969 #define LDRP_FAILED_BUILTIN_LOAD 0x00020000
1970 #define LDRP_DONT_CALL_FOR_THREADS 0x00040000
1971 #define LDRP_PROCESS_ATTACH_CALLED 0x00080000
1972 #define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000
1973 #define LDRP_IMAGE_NOT_AT_BASE 0x00200000
1974 #define LDRP_WX86_IGNORE_MACHINETYPE 0x00400000
1976 typedef struct _DEBUG_MODULE_INFORMATION {
1984 USHORT ModuleNameOffset;
1985 CHAR ImageName[256];
1986 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1988 typedef struct _DEBUG_HEAP_INFORMATION {
2000 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
2002 typedef struct _DEBUG_LOCK_INFORMATION {
2005 USHORT CreatorBackTraceIndex;
2006 ULONG OwnerThreadId;
2008 ULONG ContentionCount;
2010 ULONG RecursionCount;
2011 ULONG NumberOfSharedWaiters;
2012 ULONG NumberOfExclusiveWaiters;
2013 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
2023 /*OUT*/ PHANDLE JobHandle,
2024 /*IN*/ ACCESS_MASK DesiredAccess,
2025 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2031 /*OUT*/ PHANDLE JobHandle,
2032 /*IN*/ ACCESS_MASK DesiredAccess,
2033 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2039 /*OUT*/ PHANDLE JobHandle,
2040 /*IN*/ ACCESS_MASK DesiredAccess,
2041 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2047 /*OUT*/ PHANDLE JobHandle,
2048 /*IN*/ ACCESS_MASK DesiredAccess,
2049 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2054 NtTerminateJobObject(
2055 /*IN*/ HANDLE JobHandle,
2056 /*IN*/ NTSTATUS ExitStatus);
2061 ZwTerminateJobObject(
2062 /*IN*/ HANDLE JobHandle,
2063 /*IN*/ NTSTATUS ExitStatus);
2068 NtAssignProcessToJobObject(
2069 /*IN*/ HANDLE JobHandle,
2070 /*IN*/ HANDLE ProcessHandle);
2075 ZwAssignProcessToJobObject(
2076 /*IN*/ HANDLE JobHandle,
2077 /*IN*/ HANDLE ProcessHandle);
2082 NtQueryInformationJobObject(
2083 /*IN*/ HANDLE JobHandle,
2084 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass,
2085 /*OUT*/ PVOID JobInformation,
2086 /*IN*/ ULONG JobInformationLength,
2087 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2092 ZwQueryInformationJobObject(
2093 /*IN*/ HANDLE JobHandle,
2094 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass,
2095 /*OUT*/ PVOID JobInformation,
2096 /*IN*/ ULONG JobInformationLength,
2097 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2102 NtSetInformationJobObject(
2103 /*IN*/ HANDLE JobHandle,
2104 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass,
2105 /*IN*/ PVOID JobInformation,
2106 /*IN*/ ULONG JobInformationLength);
2111 ZwSetInformationJobObject(
2112 /*IN*/ HANDLE JobHandle,
2113 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass,
2114 /*IN*/ PVOID JobInformation,
2115 /*IN*/ ULONG JobInformationLength);
2124 /*OUT*/ PHANDLE TokenHandle,
2125 /*IN*/ ACCESS_MASK DesiredAccess,
2126 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2127 /*IN*/ TOKEN_TYPE Type,
2128 /*IN*/ PLUID AuthenticationId,
2129 /*IN*/ PLARGE_INTEGER ExpirationTime,
2130 /*IN*/ PTOKEN_USER User,
2131 /*IN*/ PTOKEN_GROUPS Groups,
2132 /*IN*/ PTOKEN_PRIVILEGES Privileges,
2133 /*IN*/ PTOKEN_OWNER Owner,
2134 /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup,
2135 /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl,
2136 /*IN*/ PTOKEN_SOURCE Source
2143 /*OUT*/ PHANDLE TokenHandle,
2144 /*IN*/ ACCESS_MASK DesiredAccess,
2145 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2146 /*IN*/ TOKEN_TYPE Type,
2147 /*IN*/ PLUID AuthenticationId,
2148 /*IN*/ PLARGE_INTEGER ExpirationTime,
2149 /*IN*/ PTOKEN_USER User,
2150 /*IN*/ PTOKEN_GROUPS Groups,
2151 /*IN*/ PTOKEN_PRIVILEGES Privileges,
2152 /*IN*/ PTOKEN_OWNER Owner,
2153 /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup,
2154 /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl,
2155 /*IN*/ PTOKEN_SOURCE Source
2162 /*IN*/ HANDLE ProcessHandle,
2163 /*IN*/ ACCESS_MASK DesiredAccess,
2164 /*OUT*/ PHANDLE TokenHandle);
2170 /*IN*/ HANDLE ProcessHandle,
2171 /*IN*/ ACCESS_MASK DesiredAccess,
2172 /*OUT*/ PHANDLE TokenHandle);
2178 /*IN*/ HANDLE ThreadHandle,
2179 /*IN*/ ACCESS_MASK DesiredAccess,
2180 /*IN*/ BOOLEAN OpenAsSelf,
2181 /*OUT*/ PHANDLE TokenHandle);
2187 /*IN*/ HANDLE ThreadHandle,
2188 /*IN*/ ACCESS_MASK DesiredAccess,
2189 /*IN*/ BOOLEAN OpenAsSelf,
2190 /*OUT*/ PHANDLE TokenHandle);
2196 /*IN*/ HANDLE ExistingTokenHandle,
2197 /*IN*/ ACCESS_MASK DesiredAccess,
2198 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2199 /*IN*/ BOOLEAN EffectiveOnly,
2200 /*IN*/ TOKEN_TYPE TokenType,
2201 /*OUT*/ PHANDLE NewTokenHandle);
2207 /*IN*/ HANDLE ExistingTokenHandle,
2208 /*IN*/ ACCESS_MASK DesiredAccess,
2209 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2210 /*IN*/ BOOLEAN EffectiveOnly,
2211 /*IN*/ TOKEN_TYPE TokenType,
2212 /*OUT*/ PHANDLE NewTokenHandle);
2218 /*IN*/ HANDLE ExistingTokenHandle,
2220 /*IN*/ PTOKEN_GROUPS SidsToDisable,
2221 /*IN*/ PTOKEN_PRIVILEGES PrivilegesToDelete,
2222 /*IN*/ PTOKEN_GROUPS SidsToRestricted,
2223 /*OUT*/ PHANDLE NewTokenHandle);
2229 /*IN*/ HANDLE ExistingTokenHandle,
2231 /*IN*/ PTOKEN_GROUPS SidsToDisable,
2232 /*IN*/ PTOKEN_PRIVILEGES PrivilegesToDelete,
2233 /*IN*/ PTOKEN_GROUPS SidsToRestricted,
2234 /*OUT*/ PHANDLE NewTokenHandle);
2239 NtAdjustPrivilegesToken(
2240 /*IN*/ HANDLE TokenHandle,
2241 /*IN*/ BOOLEAN DisableAllPrivileges,
2242 /*IN*/ PTOKEN_PRIVILEGES NewState,
2243 /*IN*/ ULONG BufferLength,
2244 /*OUT*/ PTOKEN_PRIVILEGES PreviousState /*OPTIONAL*/,
2245 /*OUT*/ PULONG ReturnLength);
2250 ZwAdjustPrivilegesToken(
2251 /*IN*/ HANDLE TokenHandle,
2252 /*IN*/ BOOLEAN DisableAllPrivileges,
2253 /*IN*/ PTOKEN_PRIVILEGES NewState,
2254 /*IN*/ ULONG BufferLength,
2255 /*OUT*/ PTOKEN_PRIVILEGES PreviousState /*OPTIONAL*/,
2256 /*OUT*/ PULONG ReturnLength);
2261 NtAdjustGroupsToken(
2262 /*IN*/ HANDLE TokenHandle,
2263 /*IN*/ BOOLEAN ResetToDefault,
2264 /*IN*/ PTOKEN_GROUPS NewState,
2265 /*IN*/ ULONG BufferLength,
2266 /*OUT*/ PTOKEN_GROUPS PreviousState /*OPTIONAL*/,
2267 /*OUT*/ PULONG ReturnLength);
2272 ZwAdjustGroupsToken(
2273 /*IN*/ HANDLE TokenHandle,
2274 /*IN*/ BOOLEAN ResetToDefault,
2275 /*IN*/ PTOKEN_GROUPS NewState,
2276 /*IN*/ ULONG BufferLength,
2277 /*OUT*/ PTOKEN_GROUPS PreviousState /*OPTIONAL*/,
2278 /*OUT*/ PULONG ReturnLength);
2283 NtQueryInformationToken(
2284 /*IN*/ HANDLE TokenHandle,
2285 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
2286 /*OUT*/ PVOID TokenInformation,
2287 /*IN*/ ULONG TokenInformationLength,
2288 /*OUT*/ PULONG ReturnLength);
2293 ZwQueryInformationToken(
2294 /*IN*/ HANDLE TokenHandle,
2295 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
2296 /*OUT*/ PVOID TokenInformation,
2297 /*IN*/ ULONG TokenInformationLength,
2298 /*OUT*/ PULONG ReturnLength);
2303 NtSetInformationToken(
2304 /*IN*/ HANDLE TokenHandle,
2305 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
2306 /*IN*/ PVOID TokenInformation,
2307 /*IN*/ ULONG TokenInformationLength);
2312 ZwSetInformationToken(
2313 /*IN*/ HANDLE TokenHandle,
2314 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
2315 /*IN*/ PVOID TokenInformation,
2316 /*IN*/ ULONG TokenInformationLength);
2327 /*OUT*/ PLARGE_INTEGER CurrentTime);
2333 /*OUT*/ PLARGE_INTEGER CurrentTime);
2339 /*IN*/ PLARGE_INTEGER NewTime,
2340 /*OUT*/ PLARGE_INTEGER OldTime /*OPTIONAL*/);
2346 /*IN*/ PLARGE_INTEGER NewTime,
2347 /*OUT*/ PLARGE_INTEGER OldTime /*OPTIONAL*/);
2352 NtQueryPerformanceCounter(
2353 /*OUT*/ PLARGE_INTEGER PerformanceCount,
2354 /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/);
2359 ZwQueryPerformanceCounter(
2360 /*OUT*/ PLARGE_INTEGER PerformanceCount,
2361 /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/);
2366 NtQueryTimerResolution(
2367 /*OUT*/ PULONG CoarsestResolution,
2368 /*OUT*/ PULONG FinestResolution,
2369 /*OUT*/ PULONG ActualResolution);
2374 ZwQueryTimerResolution(
2375 /*OUT*/ PULONG CoarsestResolution,
2376 /*OUT*/ PULONG FinestResolution,
2377 /*OUT*/ PULONG ActualResolution);
2383 /*IN*/ BOOLEAN Alertable,
2384 /*IN*/ PLARGE_INTEGER Interval);
2390 /*IN*/ BOOLEAN Alertable,
2391 /*IN*/ PLARGE_INTEGER Interval);
2420 /* Execution profiling */
2426 /*OUT*/ PHANDLE ProfileHandle,
2427 /*IN*/ HANDLE ProcessHandle,
2430 /*IN*/ ULONG BucketShift,
2431 /*IN*/ PULONG Buffer,
2432 /*IN*/ ULONG BufferLength,
2433 /*IN*/ KPROFILE_SOURCE Source,
2434 /*IN*/ ULONG ProcessorMask);
2440 /*OUT*/ PHANDLE ProfileHandle,
2441 /*IN*/ HANDLE ProcessHandle,
2444 /*IN*/ ULONG BucketShift,
2445 /*IN*/ PULONG Buffer,
2446 /*IN*/ ULONG BufferLength,
2447 /*IN*/ KPROFILE_SOURCE Source,
2448 /*IN*/ ULONG ProcessorMask);
2453 NtSetIntervalProfile(
2454 /*IN*/ ULONG Interval,
2455 /*IN*/ KPROFILE_SOURCE Source);
2460 ZwSetIntervalProfile(
2461 /*IN*/ ULONG Interval,
2462 /*IN*/ KPROFILE_SOURCE Source);
2467 NtQueryIntervalProfile(
2468 /*IN*/ KPROFILE_SOURCE Source,
2469 /*OUT*/ PULONG Interval);
2474 ZwQueryIntervalProfile(
2475 /*IN*/ KPROFILE_SOURCE Source,
2476 /*OUT*/ PULONG Interval);
2482 /*IN*/ HANDLE ProfileHandle);
2488 /*IN*/ HANDLE ProfileHandle);
2494 /*IN*/ HANDLE ProfileHandle);
2500 /*IN*/ HANDLE ProfileHandle);
2502 /* Local Procedure Call (LPC) */
2504 typedef struct _LPC_MESSAGE {
2508 USHORT VirtualRangesOffset;
2512 UCHAR Data[ANYSIZE_ARRAY];
2513 } LPC_MESSAGE, *PLPC_MESSAGE;
2515 #define LPC_MESSAGE_BASE_SIZE 24
2517 typedef enum _LPC_TYPE {
2528 LPC_CONNECTION_REQUEST,
2529 LPC_CONNECTION_REFUSED,
2533 typedef struct _LPC_SECTION_WRITE {
2535 HANDLE SectionHandle;
2536 ULONG SectionOffset;
2539 PVOID TargetViewBase;
2540 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
2542 typedef struct _LPC_SECTION_READ {
2546 } LPC_SECTION_READ, *PLPC_SECTION_READ;
2552 /*OUT*/ PHANDLE PortHandle,
2553 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2554 /*IN*/ ULONG MaxDataSize,
2555 /*IN*/ ULONG MaxMessageSize,
2556 /*IN*/ ULONG Reserved);
2562 /*OUT*/ PHANDLE PortHandle,
2563 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2564 /*IN*/ ULONG MaxDataSize,
2565 /*IN*/ ULONG MaxMessageSize,
2566 /*IN*/ ULONG Reserved);
2571 NtCreateWaitablePort(
2572 /*OUT*/ PHANDLE PortHandle,
2573 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2574 /*IN*/ ULONG MaxDataSize,
2575 /*IN*/ ULONG MaxMessageSize,
2576 /*IN*/ ULONG Reserved);
2581 ZwCreateWaitablePort(
2582 /*OUT*/ PHANDLE PortHandle,
2583 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2584 /*IN*/ ULONG MaxDataSize,
2585 /*IN*/ ULONG MaxMessageSize,
2586 /*IN*/ ULONG Reserved);
2592 /*OUT*/ PHANDLE PortHandle,
2593 /*IN*/ PUNICODE_STRING PortName,
2594 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos,
2595 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/,
2596 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/,
2597 /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/,
2598 /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/,
2599 /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/);
2605 /*OUT*/ PHANDLE PortHandle,
2606 /*IN*/ PUNICODE_STRING PortName,
2607 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos,
2608 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/,
2609 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/,
2610 /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/,
2611 /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/,
2612 /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/);
2618 /*IN*/ HANDLE PortHandle,
2619 /*OUT*/ PLPC_MESSAGE Message);
2625 /*IN*/ HANDLE PortHandle,
2626 /*OUT*/ PLPC_MESSAGE Message);
2631 NtAcceptConnectPort(
2632 /*OUT*/ PHANDLE PortHandle,
2633 /*IN*/ ULONG PortIdentifier,
2634 /*IN*/ PLPC_MESSAGE Message,
2635 /*IN*/ BOOLEAN Accept,
2636 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/,
2637 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/);
2642 ZwAcceptConnectPort(
2643 /*OUT*/ PHANDLE PortHandle,
2644 /*IN*/ ULONG PortIdentifier,
2645 /*IN*/ PLPC_MESSAGE Message,
2646 /*IN*/ BOOLEAN Accept,
2647 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/,
2648 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/);
2653 NtCompleteConnectPort(
2654 /*IN*/ HANDLE PortHandle);
2659 ZwCompleteConnectPort(
2660 /*IN*/ HANDLE PortHandle);
2666 /*IN*/ HANDLE PortHandle,
2667 /*IN*/ PLPC_MESSAGE RequestMessage);
2673 /*IN*/ HANDLE PortHandle,
2674 /*IN*/ PLPC_MESSAGE RequestMessage);
2679 NtRequestWaitReplyPort(
2680 /*IN*/ HANDLE PortHandle,
2681 /*IN*/ PLPC_MESSAGE RequestMessage,
2682 /*OUT*/ PLPC_MESSAGE ReplyMessage);
2687 ZwRequestWaitReplyPort(
2688 /*IN*/ HANDLE PortHandle,
2689 /*IN*/ PLPC_MESSAGE RequestMessage,
2690 /*OUT*/ PLPC_MESSAGE ReplyMessage);
2696 /*IN*/ HANDLE PortHandle,
2697 /*IN*/ PLPC_MESSAGE ReplyMessage);
2703 /*IN*/ HANDLE PortHandle,
2704 /*IN*/ PLPC_MESSAGE ReplyMessage);
2709 NtReplyWaitReplyPort(
2710 /*IN*/ HANDLE PortHandle,
2711 /*IN OUT*/ PLPC_MESSAGE ReplyMessage);
2716 ZwReplyWaitReplyPort(
2717 /*IN*/ HANDLE PortHandle,
2718 /*IN OUT*/ PLPC_MESSAGE ReplyMessage);
2723 NtReplyWaitReceivePort(
2724 /*IN*/ HANDLE PortHandle,
2725 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/,
2726 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/,
2727 /*OUT*/ PLPC_MESSAGE Message);
2732 ZwReplyWaitReceivePort(
2733 /*IN*/ HANDLE PortHandle,
2734 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/,
2735 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/,
2736 /*OUT*/ PLPC_MESSAGE Message);
2741 NtReplyWaitReceivePortEx(
2742 /*IN*/ HANDLE PortHandle,
2743 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/,
2744 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/,
2745 /*OUT*/ PLPC_MESSAGE Message,
2746 /*IN*/ PLARGE_INTEGER Timeout);
2751 ZwReplyWaitReceivePortEx(
2752 /*IN*/ HANDLE PortHandle,
2753 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/,
2754 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/,
2755 /*OUT*/ PLPC_MESSAGE Message,
2756 /*IN*/ PLARGE_INTEGER Timeout);
2762 /*IN*/ HANDLE PortHandle,
2763 /*IN*/ PLPC_MESSAGE Message,
2765 /*OUT*/ PVOID Buffer,
2766 /*IN*/ ULONG BufferLength,
2767 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2773 /*IN*/ HANDLE PortHandle,
2774 /*IN*/ PLPC_MESSAGE Message,
2776 /*OUT*/ PVOID Buffer,
2777 /*IN*/ ULONG BufferLength,
2778 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2784 /*IN*/ HANDLE PortHandle,
2785 /*IN*/ PLPC_MESSAGE Message,
2787 /*IN*/ PVOID Buffer,
2788 /*IN*/ ULONG BufferLength,
2789 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2795 /*IN*/ HANDLE PortHandle,
2796 /*IN*/ PLPC_MESSAGE Message,
2798 /*IN*/ PVOID Buffer,
2799 /*IN*/ ULONG BufferLength,
2800 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2802 typedef enum _PORT_INFORMATION_CLASS {
2803 PortBasicInformation
2804 } PORT_INFORMATION_CLASS;
2809 NtQueryInformationPort(
2810 /*IN*/ HANDLE PortHandle,
2811 /*IN*/ PORT_INFORMATION_CLASS PortInformationClass,
2812 /*OUT*/ PVOID PortInformation,
2813 /*IN*/ ULONG PortInformationLength,
2814 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2819 ZwQueryInformationPort(
2820 /*IN*/ HANDLE PortHandle,
2821 /*IN*/ PORT_INFORMATION_CLASS PortInformationClass,
2822 /*OUT*/ PVOID PortInformation,
2823 /*IN*/ ULONG PortInformationLength,
2824 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2829 NtImpersonateClientOfPort(
2830 /*IN*/ HANDLE PortHandle,
2831 /*IN*/ PLPC_MESSAGE Message);
2836 ZwImpersonateClientOfPort(
2837 /*IN*/ HANDLE PortHandle,
2838 /*IN*/ PLPC_MESSAGE Message);
2849 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2855 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2861 /*IN*/ HANDLE FileHandle,
2862 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
2868 /*IN*/ HANDLE FileHandle,
2869 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
2875 /*IN*/ HANDLE FileHandle,
2876 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
2882 /*IN*/ HANDLE FileHandle,
2883 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
2889 /*IN*/ HANDLE FileHandle,
2890 /*IN*/ HANDLE Event /*OPTIONAL*/,
2891 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
2892 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
2893 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
2894 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer,
2895 /*IN*/ ULONG Length,
2896 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
2897 /*IN*/ PULONG Key /*OPTIONAL*/);
2903 /*IN*/ HANDLE FileHandle,
2904 /*IN*/ HANDLE Event /*OPTIONAL*/,
2905 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
2906 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
2907 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
2908 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer,
2909 /*IN*/ ULONG Length,
2910 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
2911 /*IN*/ PULONG Key /*OPTIONAL*/);
2917 /*IN*/ HANDLE FileHandle,
2918 /*IN*/ HANDLE Event /*OPTIONAL*/,
2919 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
2920 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
2921 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
2922 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer,
2923 /*IN*/ ULONG Length,
2924 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
2925 /*IN*/ PULONG Key /*OPTIONAL*/);
2931 /*IN*/ HANDLE FileHandle,
2932 /*IN*/ HANDLE Event /*OPTIONAL*/,
2933 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
2934 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
2935 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
2936 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer,
2937 /*IN*/ ULONG Length,
2938 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
2939 /*IN*/ PULONG Key /*OPTIONAL*/);
2950 /*IN*/ HANDLE KeyHandle,
2951 /*IN*/ HANDLE FileHandle);
2957 /*IN*/ HANDLE KeyHandle,
2958 /*IN*/ HANDLE FileHandle);
2964 /*IN*/ HANDLE KeyHandle1,
2965 /*IN*/ HANDLE KeyHandle2,
2966 /*IN*/ HANDLE FileHandle);
2972 /*IN*/ HANDLE KeyHandle1,
2973 /*IN*/ HANDLE KeyHandle2,
2974 /*IN*/ HANDLE FileHandle);
2980 /*IN*/ HANDLE KeyHandle,
2981 /*IN*/ HANDLE FileHandle,
2982 /*IN*/ ULONG Flags);
2988 /*IN*/ HANDLE KeyHandle,
2989 /*IN*/ HANDLE FileHandle,
2990 /*IN*/ ULONG Flags);
2996 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
2997 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes);
3003 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3004 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes);
3010 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3011 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes,
3012 /*IN*/ ULONG Flags);
3018 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3019 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes,
3020 /*IN*/ ULONG Flags);
3026 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes);
3032 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes);
3038 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3039 /*OUT*/ PULONG NumberOfKeys);
3045 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3046 /*OUT*/ PULONG NumberOfKeys);
3052 /*IN*/ POBJECT_ATTRIBUTES NewFileObjectAttributes,
3053 /*IN*/ HANDLE KeyHandle,
3054 /*IN*/ POBJECT_ATTRIBUTES OldFileObjectAttributes);
3060 /*IN*/ POBJECT_ATTRIBUTES NewFileObjectAttributes,
3061 /*IN*/ HANDLE KeyHandle,
3062 /*IN*/ POBJECT_ATTRIBUTES OldFileObjectAttributes);
3064 typedef enum _KEY_SET_INFORMATION_CLASS {
3065 KeyLastWriteTimeInformation
3066 } KEY_SET_INFORMATION_CLASS;
3071 NtSetInformationKey(
3072 /*IN*/ HANDLE KeyHandle,
3073 /*IN*/ KEY_SET_INFORMATION_CLASS KeyInformationClass,
3074 /*IN*/ PVOID KeyInformation,
3075 /*IN*/ ULONG KeyInformationLength);
3080 ZwSetInformationKey(
3081 /*IN*/ HANDLE KeyHandle,
3082 /*IN*/ KEY_SET_INFORMATION_CLASS KeyInformationClass,
3083 /*IN*/ PVOID KeyInformation,
3084 /*IN*/ ULONG KeyInformationLength);
3086 typedef struct _KEY_LAST_WRITE_TIME_INFORMATION {
3087 LARGE_INTEGER LastWriteTime;
3088 } KEY_LAST_WRITE_TIME_INFORMATION, *PKEY_LAST_WRITE_TIME_INFORMATION;
3090 typedef struct _KEY_NAME_INFORMATION {
3093 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
3099 /*IN*/ HANDLE KeyHandle,
3100 /*IN*/ HANDLE EventHandle /*OPTIONAL*/,
3101 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
3102 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
3103 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
3104 /*IN*/ ULONG NotifyFilter,
3105 /*IN*/ BOOLEAN WatchSubtree,
3106 /*IN*/ PVOID Buffer,
3107 /*IN*/ ULONG BufferLength,
3108 /*IN*/ BOOLEAN Asynchronous);
3114 /*IN*/ HANDLE KeyHandle,
3115 /*IN*/ HANDLE EventHandle /*OPTIONAL*/,
3116 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
3117 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
3118 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
3119 /*IN*/ ULONG NotifyFilter,
3120 /*IN*/ BOOLEAN WatchSubtree,
3121 /*IN*/ PVOID Buffer,
3122 /*IN*/ ULONG BufferLength,
3123 /*IN*/ BOOLEAN Asynchronous);
3125 /* ZwNotifyChangeMultipleKeys.Flags constants */
3126 #define REG_MONITOR_SINGLE_KEY 0x00
3127 #define REG_MONITOR_SECOND_KEY 0x01
3132 NtNotifyChangeMultipleKeys(
3133 /*IN*/ HANDLE KeyHandle,
3135 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3136 /*IN*/ HANDLE EventHandle /*OPTIONAL*/,
3137 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
3138 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
3139 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
3140 /*IN*/ ULONG NotifyFilter,
3141 /*IN*/ BOOLEAN WatchSubtree,
3142 /*IN*/ PVOID Buffer,
3143 /*IN*/ ULONG BufferLength,
3144 /*IN*/ BOOLEAN Asynchronous);
3149 ZwNotifyChangeMultipleKeys(
3150 /*IN*/ HANDLE KeyHandle,
3152 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3153 /*IN*/ HANDLE EventHandle /*OPTIONAL*/,
3154 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
3155 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
3156 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
3157 /*IN*/ ULONG NotifyFilter,
3158 /*IN*/ BOOLEAN WatchSubtree,
3159 /*IN*/ PVOID Buffer,
3160 /*IN*/ ULONG BufferLength,
3161 /*IN*/ BOOLEAN Asynchronous);
3166 NtQueryMultipleValueKey(
3167 /*IN*/ HANDLE KeyHandle,
3168 /*IN OUT*/ PKEY_VALUE_ENTRY ValueList,
3169 /*IN*/ ULONG NumberOfValues,
3170 /*OUT*/ PVOID Buffer,
3171 /*IN OUT*/ PULONG Length,
3172 /*OUT*/ PULONG ReturnLength);
3177 ZwQueryMultipleValueKey(
3178 /*IN*/ HANDLE KeyHandle,
3179 /*IN OUT*/ PKEY_VALUE_ENTRY ValueList,
3180 /*IN*/ ULONG NumberOfValues,
3181 /*OUT*/ PVOID Buffer,
3182 /*IN OUT*/ PULONG Length,
3183 /*OUT*/ PULONG ReturnLength);
3188 NtInitializeRegistry(
3189 /*IN*/ BOOLEAN Setup);
3194 ZwInitializeRegistry(
3195 /*IN*/ BOOLEAN Setup);
3200 /* Security and auditing */
3206 /*IN*/ HANDLE TokenHandle,
3207 /*IN*/ PPRIVILEGE_SET RequiredPrivileges,
3208 /*OUT*/ PBOOLEAN Result);
3214 /*IN*/ HANDLE TokenHandle,
3215 /*IN*/ PPRIVILEGE_SET RequiredPrivileges,
3216 /*OUT*/ PBOOLEAN Result);
3221 NtPrivilegeObjectAuditAlarm(
3222 /*IN*/ PUNICODE_STRING SubsystemName,
3223 /*IN*/ PVOID HandleId,
3224 /*IN*/ HANDLE TokenHandle,
3225 /*IN*/ ACCESS_MASK DesiredAccess,
3226 /*IN*/ PPRIVILEGE_SET Privileges,
3227 /*IN*/ BOOLEAN AccessGranted);
3232 ZwPrivilegeObjectAuditAlarm(
3233 /*IN*/ PUNICODE_STRING SubsystemName,
3234 /*IN*/ PVOID HandleId,
3235 /*IN*/ HANDLE TokenHandle,
3236 /*IN*/ ACCESS_MASK DesiredAccess,
3237 /*IN*/ PPRIVILEGE_SET Privileges,
3238 /*IN*/ BOOLEAN AccessGranted);
3244 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3245 /*IN*/ HANDLE TokenHandle,
3246 /*IN*/ ACCESS_MASK DesiredAccess,
3247 /*IN*/ PGENERIC_MAPPING GenericMapping,
3248 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3249 /*IN*/ PULONG PrivilegeSetLength,
3250 /*OUT*/ PACCESS_MASK GrantedAccess,
3251 /*OUT*/ PBOOLEAN AccessStatus);
3257 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3258 /*IN*/ HANDLE TokenHandle,
3259 /*IN*/ ACCESS_MASK DesiredAccess,
3260 /*IN*/ PGENERIC_MAPPING GenericMapping,
3261 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3262 /*IN*/ PULONG PrivilegeSetLength,
3263 /*OUT*/ PACCESS_MASK GrantedAccess,
3264 /*OUT*/ PBOOLEAN AccessStatus);
3269 NtAccessCheckAndAuditAlarm(
3270 /*IN*/ PUNICODE_STRING SubsystemName,
3271 /*IN*/ PVOID HandleId,
3272 /*IN*/ PUNICODE_STRING ObjectTypeName,
3273 /*IN*/ PUNICODE_STRING ObjectName,
3274 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3275 /*IN*/ ACCESS_MASK DesiredAccess,
3276 /*IN*/ PGENERIC_MAPPING GenericMapping,
3277 /*IN*/ BOOLEAN ObjectCreation,
3278 /*OUT*/ PACCESS_MASK GrantedAccess,
3279 /*OUT*/ PBOOLEAN AccessStatus,
3280 /*OUT*/ PBOOLEAN GenerateOnClose);
3285 ZwAccessCheckAndAuditAlarm(
3286 /*IN*/ PUNICODE_STRING SubsystemName,
3287 /*IN*/ PVOID HandleId,
3288 /*IN*/ PUNICODE_STRING ObjectTypeName,
3289 /*IN*/ PUNICODE_STRING ObjectName,
3290 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3291 /*IN*/ ACCESS_MASK DesiredAccess,
3292 /*IN*/ PGENERIC_MAPPING GenericMapping,
3293 /*IN*/ BOOLEAN ObjectCreation,
3294 /*OUT*/ PACCESS_MASK GrantedAccess,
3295 /*OUT*/ PBOOLEAN AccessStatus,
3296 /*OUT*/ PBOOLEAN GenerateOnClose);
3301 NtAccessCheckByType(
3302 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3303 /*IN*/ PSID PrincipalSelfSid,
3304 /*IN*/ HANDLE TokenHandle,
3305 /*IN*/ ULONG DesiredAccess,
3306 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3307 /*IN*/ ULONG ObjectTypeListLength,
3308 /*IN*/ PGENERIC_MAPPING GenericMapping,
3309 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3310 /*IN*/ PULONG PrivilegeSetLength,
3311 /*OUT*/ PACCESS_MASK GrantedAccess,
3312 /*OUT*/ PULONG AccessStatus);
3317 ZwAccessCheckByType(
3318 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3319 /*IN*/ PSID PrincipalSelfSid,
3320 /*IN*/ HANDLE TokenHandle,
3321 /*IN*/ ULONG DesiredAccess,
3322 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3323 /*IN*/ ULONG ObjectTypeListLength,
3324 /*IN*/ PGENERIC_MAPPING GenericMapping,
3325 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3326 /*IN*/ PULONG PrivilegeSetLength,
3327 /*OUT*/ PACCESS_MASK GrantedAccess,
3328 /*OUT*/ PULONG AccessStatus);
3330 typedef enum _AUDIT_EVENT_TYPE {
3331 AuditEventObjectAccess,
3332 AuditEventDirectoryServiceAccess
3333 } AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE;
3338 NtAccessCheckByTypeAndAuditAlarm(
3339 /*IN*/ PUNICODE_STRING SubsystemName,
3340 /*IN*/ PVOID HandleId,
3341 /*IN*/ PUNICODE_STRING ObjectTypeName,
3342 /*IN*/ PUNICODE_STRING ObjectName,
3343 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3344 /*IN*/ PSID PrincipalSelfSid,
3345 /*IN*/ ACCESS_MASK DesiredAccess,
3346 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3348 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3349 /*IN*/ ULONG ObjectTypeListLength,
3350 /*IN*/ PGENERIC_MAPPING GenericMapping,
3351 /*IN*/ BOOLEAN ObjectCreation,
3352 /*OUT*/ PACCESS_MASK GrantedAccess,
3353 /*OUT*/ PULONG AccessStatus,
3354 /*OUT*/ PBOOLEAN GenerateOnClose);
3359 ZwAccessCheckByTypeAndAuditAlarm(
3360 /*IN*/ PUNICODE_STRING SubsystemName,
3361 /*IN*/ PVOID HandleId,
3362 /*IN*/ PUNICODE_STRING ObjectTypeName,
3363 /*IN*/ PUNICODE_STRING ObjectName,
3364 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3365 /*IN*/ PSID PrincipalSelfSid,
3366 /*IN*/ ACCESS_MASK DesiredAccess,
3367 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3369 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3370 /*IN*/ ULONG ObjectTypeListLength,
3371 /*IN*/ PGENERIC_MAPPING GenericMapping,
3372 /*IN*/ BOOLEAN ObjectCreation,
3373 /*OUT*/ PACCESS_MASK GrantedAccess,
3374 /*OUT*/ PULONG AccessStatus,
3375 /*OUT*/ PBOOLEAN GenerateOnClose);
3380 NtAccessCheckByTypeResultList(
3381 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3382 /*IN*/ PSID PrincipalSelfSid,
3383 /*IN*/ HANDLE TokenHandle,
3384 /*IN*/ ACCESS_MASK DesiredAccess,
3385 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3386 /*IN*/ ULONG ObjectTypeListLength,
3387 /*IN*/ PGENERIC_MAPPING GenericMapping,
3388 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3389 /*IN*/ PULONG PrivilegeSetLength,
3390 /*OUT*/ PACCESS_MASK GrantedAccessList,
3391 /*OUT*/ PULONG AccessStatusList);
3396 ZwAccessCheckByTypeResultList(
3397 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3398 /*IN*/ PSID PrincipalSelfSid,
3399 /*IN*/ HANDLE TokenHandle,
3400 /*IN*/ ACCESS_MASK DesiredAccess,
3401 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3402 /*IN*/ ULONG ObjectTypeListLength,
3403 /*IN*/ PGENERIC_MAPPING GenericMapping,
3404 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3405 /*IN*/ PULONG PrivilegeSetLength,
3406 /*OUT*/ PACCESS_MASK GrantedAccessList,
3407 /*OUT*/ PULONG AccessStatusList);
3412 NtAccessCheckByTypeResultListAndAuditAlarm(
3413 /*IN*/ PUNICODE_STRING SubsystemName,
3414 /*IN*/ PVOID HandleId,
3415 /*IN*/ PUNICODE_STRING ObjectTypeName,
3416 /*IN*/ PUNICODE_STRING ObjectName,
3417 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3418 /*IN*/ PSID PrincipalSelfSid,
3419 /*IN*/ ACCESS_MASK DesiredAccess,
3420 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3422 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3423 /*IN*/ ULONG ObjectTypeListLength,
3424 /*IN*/ PGENERIC_MAPPING GenericMapping,
3425 /*IN*/ BOOLEAN ObjectCreation,
3426 /*OUT*/ PACCESS_MASK GrantedAccessList,
3427 /*OUT*/ PULONG AccessStatusList,
3428 /*OUT*/ PULONG GenerateOnClose);
3433 ZwAccessCheckByTypeResultListAndAuditAlarm(
3434 /*IN*/ PUNICODE_STRING SubsystemName,
3435 /*IN*/ PVOID HandleId,
3436 /*IN*/ PUNICODE_STRING ObjectTypeName,
3437 /*IN*/ PUNICODE_STRING ObjectName,
3438 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3439 /*IN*/ PSID PrincipalSelfSid,
3440 /*IN*/ ACCESS_MASK DesiredAccess,
3441 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3443 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3444 /*IN*/ ULONG ObjectTypeListLength,
3445 /*IN*/ PGENERIC_MAPPING GenericMapping,
3446 /*IN*/ BOOLEAN ObjectCreation,
3447 /*OUT*/ PACCESS_MASK GrantedAccessList,
3448 /*OUT*/ PULONG AccessStatusList,
3449 /*OUT*/ PULONG GenerateOnClose);
3454 NtAccessCheckByTypeResultListAndAuditAlarmByHandle(
3455 /*IN*/ PUNICODE_STRING SubsystemName,
3456 /*IN*/ PVOID HandleId,
3457 /*IN*/ HANDLE TokenHandle,
3458 /*IN*/ PUNICODE_STRING ObjectTypeName,
3459 /*IN*/ PUNICODE_STRING ObjectName,
3460 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3461 /*IN*/ PSID PrincipalSelfSid,
3462 /*IN*/ ACCESS_MASK DesiredAccess,
3463 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3465 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3466 /*IN*/ ULONG ObjectTypeListLength,
3467 /*IN*/ PGENERIC_MAPPING GenericMapping,
3468 /*IN*/ BOOLEAN ObjectCreation,
3469 /*OUT*/ PACCESS_MASK GrantedAccessList,
3470 /*OUT*/ PULONG AccessStatusList,
3471 /*OUT*/ PULONG GenerateOnClose);
3476 ZwAccessCheckByTypeResultListAndAuditAlarmByHandle(
3477 /*IN*/ PUNICODE_STRING SubsystemName,
3478 /*IN*/ PVOID HandleId,
3479 /*IN*/ HANDLE TokenHandle,
3480 /*IN*/ PUNICODE_STRING ObjectTypeName,
3481 /*IN*/ PUNICODE_STRING ObjectName,
3482 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3483 /*IN*/ PSID PrincipalSelfSid,
3484 /*IN*/ ACCESS_MASK DesiredAccess,
3485 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3487 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3488 /*IN*/ ULONG ObjectTypeListLength,
3489 /*IN*/ PGENERIC_MAPPING GenericMapping,
3490 /*IN*/ BOOLEAN ObjectCreation,
3491 /*OUT*/ PACCESS_MASK GrantedAccessList,
3492 /*OUT*/ PULONG AccessStatusList,
3493 /*OUT*/ PULONG GenerateOnClose);
3498 NtOpenObjectAuditAlarm(
3499 /*IN*/ PUNICODE_STRING SubsystemName,
3500 /*IN*/ PVOID *HandleId,
3501 /*IN*/ PUNICODE_STRING ObjectTypeName,
3502 /*IN*/ PUNICODE_STRING ObjectName,
3503 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3504 /*IN*/ HANDLE TokenHandle,
3505 /*IN*/ ACCESS_MASK DesiredAccess,
3506 /*IN*/ ACCESS_MASK GrantedAccess,
3507 /*IN*/ PPRIVILEGE_SET Privileges /*OPTIONAL*/,
3508 /*IN*/ BOOLEAN ObjectCreation,
3509 /*IN*/ BOOLEAN AccessGranted,
3510 /*OUT*/ PBOOLEAN GenerateOnClose);
3515 ZwOpenObjectAuditAlarm(
3516 /*IN*/ PUNICODE_STRING SubsystemName,
3517 /*IN*/ PVOID *HandleId,
3518 /*IN*/ PUNICODE_STRING ObjectTypeName,
3519 /*IN*/ PUNICODE_STRING ObjectName,
3520 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3521 /*IN*/ HANDLE TokenHandle,
3522 /*IN*/ ACCESS_MASK DesiredAccess,
3523 /*IN*/ ACCESS_MASK GrantedAccess,
3524 /*IN*/ PPRIVILEGE_SET Privileges /*OPTIONAL*/,
3525 /*IN*/ BOOLEAN ObjectCreation,
3526 /*IN*/ BOOLEAN AccessGranted,
3527 /*OUT*/ PBOOLEAN GenerateOnClose);
3532 NtCloseObjectAuditAlarm(
3533 /*IN*/ PUNICODE_STRING SubsystemName,
3534 /*IN*/ PVOID HandleId,
3535 /*IN*/ BOOLEAN GenerateOnClose);
3540 ZwCloseObjectAuditAlarm(
3541 /*IN*/ PUNICODE_STRING SubsystemName,
3542 /*IN*/ PVOID HandleId,
3543 /*IN*/ BOOLEAN GenerateOnClose);
3548 NtDeleteObjectAuditAlarm(
3549 /*IN*/ PUNICODE_STRING SubsystemName,
3550 /*IN*/ PVOID HandleId,
3551 /*IN*/ BOOLEAN GenerateOnClose);
3556 ZwDeleteObjectAuditAlarm(
3557 /*IN*/ PUNICODE_STRING SubsystemName,
3558 /*IN*/ PVOID HandleId,
3559 /*IN*/ BOOLEAN GenerateOnClose);
3564 /* Plug and play and power management */
3569 ZwRequestWakeupLatency(
3570 /*IN*/ LATENCY_TIME Latency);
3575 ZwRequestDeviceWakeup(
3576 /*IN*/ HANDLE DeviceHandle);
3581 ZwCancelDeviceWakeupRequest(
3582 /*IN*/ HANDLE DeviceHandle);
3587 ZwIsSystemResumeAutomatic(
3593 ZwSetThreadExecutionState(
3594 /*IN*/ EXECUTION_STATE ExecutionState,
3595 /*OUT*/ PEXECUTION_STATE PreviousExecutionState);
3600 ZwGetDevicePowerState(
3601 /*IN*/ HANDLE DeviceHandle,
3602 /*OUT*/ PDEVICE_POWER_STATE DevicePowerState);
3607 ZwSetSystemPowerState(
3608 /*IN*/ POWER_ACTION SystemAction,
3609 /*IN*/ SYSTEM_POWER_STATE MinSystemState,
3610 /*IN*/ ULONG Flags);
3615 ZwInitiatePowerAction(
3616 /*IN*/ POWER_ACTION SystemAction,
3617 /*IN*/ SYSTEM_POWER_STATE MinSystemState,
3619 /*IN*/ BOOLEAN Asynchronous);
3625 /*IN*/ POWER_INFORMATION_LEVEL PowerInformationLevel,
3626 /*IN*/ PVOID InputBuffer /*OPTIONAL*/,
3627 /*IN*/ ULONG InputBufferLength,
3628 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/,
3629 /*IN*/ ULONG OutputBufferLength);
3635 /*IN*/ ULONG ControlCode,
3636 /*IN OUT*/ PVOID Buffer,
3637 /*IN*/ ULONG BufferLength);
3643 /*IN*/ ULONG ControlCode,
3644 /*IN OUT*/ PVOID Buffer,
3645 /*IN*/ ULONG BufferLength);
3651 /*IN*/ ULONG Reserved1,
3652 /*IN*/ ULONG Reserved2,
3653 /*OUT*/ PVOID Buffer,
3654 /*IN*/ ULONG BufferLength);
3660 /*IN*/ ULONG Reserved1,
3661 /*IN*/ ULONG Reserved2,
3662 /*OUT*/ PVOID Buffer,
3663 /*IN*/ ULONG BufferLength);
3674 /*IN*/ PEXCEPTION_RECORD ExceptionRecord,
3675 /*IN*/ PCONTEXT Context,
3676 /*IN*/ BOOLEAN SearchFrames);
3682 /*IN*/ PEXCEPTION_RECORD ExceptionRecord,
3683 /*IN*/ PCONTEXT Context,
3684 /*IN*/ BOOLEAN SearchFrames);
3690 /*IN*/ PCONTEXT Context,
3691 /*IN*/ BOOLEAN TestAlert);
3697 /*IN*/ PCONTEXT Context,
3698 /*IN*/ BOOLEAN TestAlert);
3704 /*IN*/ ULONG RoutineIndex,
3705 /*IN*/ PVOID Argument,
3706 /*IN*/ ULONG ArgumentLength,
3707 /*OUT*/ PVOID *Result /*OPTIONAL*/,
3708 /*OUT*/ PULONG ResultLength /*OPTIONAL*/);
3713 NtSetLowWaitHighThread(
3719 ZwSetLowWaitHighThread(
3725 NtSetHighWaitLowThread(
3731 ZwSetHighWaitLowThread(
3738 /*IN*/ PUNICODE_STRING DriverServiceName);
3744 /*IN*/ PUNICODE_STRING DriverServiceName);
3750 /*IN*/ PUNICODE_STRING DriverServiceName);
3756 /*IN*/ PUNICODE_STRING DriverServiceName);
3761 NtFlushInstructionCache(
3762 /*IN*/ HANDLE ProcessHandle,
3763 /*IN*/ PVOID BaseAddress /*OPTIONAL*/,
3764 /*IN*/ ULONG FlushSize);
3769 ZwFlushInstructionCache(
3770 /*IN*/ HANDLE ProcessHandle,
3771 /*IN*/ PVOID BaseAddress /*OPTIONAL*/,
3772 /*IN*/ ULONG FlushSize);
3789 NtQueryDefaultLocale(
3790 /*IN*/ BOOLEAN ThreadOrSystem,
3791 /*OUT*/ PLCID Locale);
3796 ZwQueryDefaultLocale(
3797 /*IN*/ BOOLEAN ThreadOrSystem,
3798 /*OUT*/ PLCID Locale);
3804 /*IN*/ BOOLEAN ThreadOrSystem,
3805 /*IN*/ LCID Locale);
3811 /*IN*/ BOOLEAN ThreadOrSystem,
3812 /*IN*/ LCID Locale);
3817 NtQueryDefaultUILanguage(
3818 /*OUT*/ PLANGID LanguageId);
3823 ZwQueryDefaultUILanguage(
3824 /*OUT*/ PLANGID LanguageId);
3829 NtSetDefaultUILanguage(
3830 /*IN*/ LANGID LanguageId);
3835 ZwSetDefaultUILanguage(
3836 /*IN*/ LANGID LanguageId);
3841 NtQueryInstallUILanguage(
3842 /*OUT*/ PLANGID LanguageId);
3847 ZwQueryInstallUILanguage(
3848 /*OUT*/ PLANGID LanguageId);
3853 NtAllocateLocallyUniqueId(
3854 /*OUT*/ PLUID Luid);
3860 /*OUT*/ PLARGE_INTEGER UuidLastTimeAllocated,
3861 /*OUT*/ PULONG UuidDeltaTime,
3862 /*OUT*/ PULONG UuidSequenceNumber,
3863 /*OUT*/ PUCHAR UuidSeed);
3869 /*OUT*/ PLARGE_INTEGER UuidLastTimeAllocated,
3870 /*OUT*/ PULONG UuidDeltaTime,
3871 /*OUT*/ PULONG UuidSequenceNumber,
3872 /*OUT*/ PUCHAR UuidSeed);
3878 /*IN*/ PUCHAR UuidSeed);
3884 /*IN*/ PUCHAR UuidSeed);
3886 typedef enum _HARDERROR_RESPONSE_OPTION {
3887 OptionAbortRetryIgnore,
3893 OptionShutdownSystem
3894 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
3896 typedef enum _HARDERROR_RESPONSE {
3897 ResponseReturnToCaller,
3906 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
3912 /*IN*/ NTSTATUS Status,
3913 /*IN*/ ULONG NumberOfArguments,
3914 /*IN*/ ULONG StringArgumentsMask,
3915 /*IN*/ PULONG Arguments,
3916 /*IN*/ HARDERROR_RESPONSE_OPTION ResponseOption,
3917 /*OUT*/ PHARDERROR_RESPONSE Response);
3923 /*IN*/ NTSTATUS Status,
3924 /*IN*/ ULONG NumberOfArguments,
3925 /*IN*/ ULONG StringArgumentsMask,
3926 /*IN*/ PULONG Arguments,
3927 /*IN*/ HARDERROR_RESPONSE_OPTION ResponseOption,
3928 /*OUT*/ PHARDERROR_RESPONSE Response);
3933 NtSetDefaultHardErrorPort(
3934 /*IN*/ HANDLE PortHandle);
3939 ZwSetDefaultHardErrorPort(
3940 /*IN*/ HANDLE PortHandle);
3946 /*IN*/ PUNICODE_STRING String);
3952 /*IN*/ PUNICODE_STRING String);
3958 /*IN*/ PUNICODE_STRING FileName,
3959 /*IN*/ PULARGE_INTEGER InitialSize,
3960 /*IN*/ PULARGE_INTEGER MaximumSize,
3961 /*IN*/ ULONG Reserved);
3967 /*IN*/ PUNICODE_STRING FileName,
3968 /*IN*/ PULARGE_INTEGER InitialSize,
3969 /*IN*/ PULARGE_INTEGER MaximumSize,
3970 /*IN*/ ULONG Reserved);
3972 typedef USHORT RTL_ATOM, *PRTL_ATOM;
3978 /*IN*/ PWSTR AtomName,
3979 /*IN*/ ULONG AtomNameLength,
3980 /*OUT*/ PRTL_ATOM Atom);
3986 /*IN*/ PWSTR AtomName,
3987 /*IN*/ ULONG AtomNameLength,
3988 /*OUT*/ PRTL_ATOM Atom);
3994 /*IN*/ PWSTR AtomName,
3995 /*IN*/ ULONG AtomNameLength,
3996 /*OUT*/ PRTL_ATOM Atom);
4002 /*IN*/ PWSTR AtomName,
4003 /*IN*/ ULONG AtomNameLength,
4004 /*OUT*/ PRTL_ATOM Atom);
4010 /*IN*/ RTL_ATOM Atom);
4016 /*IN*/ RTL_ATOM Atom);
4018 typedef enum _ATOM_INFORMATION_CLASS {
4019 AtomBasicInformation,
4021 } ATOM_INFORMATION_CLASS;
4026 NtQueryInformationAtom(
4027 /*IN*/ RTL_ATOM Atom,
4028 /*IN*/ ATOM_INFORMATION_CLASS AtomInformationClass,
4029 /*OUT*/ PVOID AtomInformation,
4030 /*IN*/ ULONG AtomInformationLength,
4031 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
4036 ZwQueryInformationAtom(
4037 /*IN*/ RTL_ATOM Atom,
4038 /*IN*/ ATOM_INFORMATION_CLASS AtomInformationClass,
4039 /*OUT*/ PVOID AtomInformation,
4040 /*IN*/ ULONG AtomInformationLength,
4041 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
4043 typedef struct _ATOM_BASIC_INFORMATION {
4044 USHORT ReferenceCount;
4048 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
4050 typedef struct _ATOM_LIST_INFORMATION {
4051 ULONG NumberOfAtoms;
4053 } ATOM_LIST_INFORMATION, *PATOM_LIST_INFORMATION;
4059 /*IN*/ ULONG Selector1,
4060 /*IN*/ LDT_ENTRY LdtEntry1,
4061 /*IN*/ ULONG Selector2,
4062 /*IN*/ LDT_ENTRY LdtEntry2);
4068 /*IN*/ ULONG Selector1,
4069 /*IN*/ LDT_ENTRY LdtEntry1,
4070 /*IN*/ ULONG Selector2,
4071 /*IN*/ LDT_ENTRY LdtEntry2);
4077 /*IN*/ ULONG ControlCode,
4078 /*IN*/ PVOID ControlData);
4084 /*IN*/ ULONG ControlCode,
4085 /*IN*/ PVOID ControlData);
4093 #endif /* __NTAPI_H */