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.
28 #pragma GCC system_header
41 typedef struct _PEB *PPEB;
43 /* FIXME: Unknown definitions */
44 typedef PVOID POBJECT_TYPE_LIST;
45 typedef PVOID PEXECUTION_STATE;
46 typedef PVOID PLANGID;
48 #ifndef NtCurrentProcess
49 #define NtCurrentProcess() ((HANDLE)0xFFFFFFFF)
50 #endif /* NtCurrentProcess */
51 #ifndef NtCurrentThread
52 #define NtCurrentThread() ((HANDLE)0xFFFFFFFE)
53 #endif /* NtCurrentThread */
55 /* System information and control */
57 typedef enum _SYSTEM_INFORMATION_CLASS {
58 SystemInformationClassMin = 0,
59 SystemBasicInformation = 0,
60 SystemProcessorInformation = 1,
61 SystemPerformanceInformation = 2,
62 SystemTimeOfDayInformation = 3,
63 SystemPathInformation = 4,
64 SystemNotImplemented1 = 4,
65 SystemProcessInformation = 5,
66 SystemProcessesAndThreadsInformation = 5,
67 SystemCallCountInfoInformation = 6,
69 SystemDeviceInformation = 7,
70 SystemConfigurationInformation = 7,
71 SystemProcessorPerformanceInformation = 8,
72 SystemProcessorTimes = 8,
73 SystemFlagsInformation = 9,
75 SystemCallTimeInformation = 10,
76 SystemNotImplemented2 = 10,
77 SystemModuleInformation = 11,
78 SystemLocksInformation = 12,
79 SystemLockInformation = 12,
80 SystemStackTraceInformation = 13,
81 SystemNotImplemented3 = 13,
82 SystemPagedPoolInformation = 14,
83 SystemNotImplemented4 = 14,
84 SystemNonPagedPoolInformation = 15,
85 SystemNotImplemented5 = 15,
86 SystemHandleInformation = 16,
87 SystemObjectInformation = 17,
88 SystemPageFileInformation = 18,
89 SystemPagefileInformation = 18,
90 SystemVdmInstemulInformation = 19,
91 SystemInstructionEmulationCounts = 19,
92 SystemVdmBopInformation = 20,
93 SystemInvalidInfoClass1 = 20,
94 SystemFileCacheInformation = 21,
95 SystemCacheInformation = 21,
96 SystemPoolTagInformation = 22,
97 SystemInterruptInformation = 23,
98 SystemProcessorStatistics = 23,
99 SystemDpcBehaviourInformation = 24,
100 SystemDpcInformation = 24,
101 SystemFullMemoryInformation = 25,
102 SystemNotImplemented6 = 25,
103 SystemLoadImage = 26,
104 SystemUnloadImage = 27,
105 SystemTimeAdjustmentInformation = 28,
106 SystemTimeAdjustment = 28,
107 SystemSummaryMemoryInformation = 29,
108 SystemNotImplemented7 = 29,
109 SystemNextEventIdInformation = 30,
110 SystemNotImplemented8 = 30,
111 SystemEventIdsInformation = 31,
112 SystemNotImplemented9 = 31,
113 SystemCrashDumpInformation = 32,
114 SystemExceptionInformation = 33,
115 SystemCrashDumpStateInformation = 34,
116 SystemKernelDebuggerInformation = 35,
117 SystemContextSwitchInformation = 36,
118 SystemRegistryQuotaInformation = 37,
119 SystemLoadAndCallImage = 38,
120 SystemPrioritySeparation = 39,
121 SystemPlugPlayBusInformation = 40,
122 SystemNotImplemented10 = 40,
123 SystemDockInformation = 41,
124 SystemNotImplemented11 = 41,
125 /* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */
126 SystemInvalidInfoClass2 = 42,
127 SystemProcessorSpeedInformation = 43,
128 SystemInvalidInfoClass3 = 43,
129 SystemCurrentTimeZoneInformation = 44,
130 SystemTimeZoneInformation = 44,
131 SystemLookasideInformation = 45,
132 SystemSetTimeSlipEvent = 46,
133 SystemCreateSession = 47,
134 SystemDeleteSession = 48,
135 SystemInvalidInfoClass4 = 49,
136 SystemRangeStartInformation = 50,
137 SystemVerifierInformation = 51,
138 SystemAddVerifier = 52,
139 SystemSessionProcessesInformation = 53,
140 SystemInformationClassMax
141 } SYSTEM_INFORMATION_CLASS;
143 typedef struct _SYSTEM_BASIC_INFORMATION {
145 ULONG MaximumIncrement;
146 ULONG PhysicalPageSize;
147 ULONG NumberOfPhysicalPages;
148 ULONG LowestPhysicalPage;
149 ULONG HighestPhysicalPage;
150 ULONG AllocationGranularity;
151 ULONG LowestUserAddress;
152 ULONG HighestUserAddress;
153 ULONG ActiveProcessors;
154 UCHAR NumberProcessors;
155 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
157 typedef struct _SYSTEM_PROCESSOR_INFORMATION {
158 USHORT ProcessorArchitecture;
159 USHORT ProcessorLevel;
160 USHORT ProcessorRevision;
163 } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
165 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
166 LARGE_INTEGER IdleTime;
167 LARGE_INTEGER ReadTransferCount;
168 LARGE_INTEGER WriteTransferCount;
169 LARGE_INTEGER OtherTransferCount;
170 ULONG ReadOperationCount;
171 ULONG WriteOperationCount;
172 ULONG OtherOperationCount;
173 ULONG AvailablePages;
174 ULONG TotalCommittedPages;
175 ULONG TotalCommitLimit;
176 ULONG PeakCommitment;
178 ULONG WriteCopyFaults;
179 ULONG TransitionFaults;
180 ULONG CacheTransitionFaults;
181 ULONG DemandZeroFaults;
186 ULONG PagefilePagesWritten;
187 ULONG PagefilePageWriteIos;
188 ULONG MappedFilePagesWritten;
189 ULONG MappedFilePageWriteIos;
190 ULONG PagedPoolUsage;
191 ULONG NonPagedPoolUsage;
192 ULONG PagedPoolAllocs;
193 ULONG PagedPoolFrees;
194 ULONG NonPagedPoolAllocs;
195 ULONG NonPagedPoolFrees;
196 ULONG TotalFreeSystemPtes;
197 ULONG SystemCodePage;
198 ULONG TotalSystemDriverPages;
199 ULONG TotalSystemCodePages;
200 ULONG SmallNonPagedLookasideListAllocateHits;
201 ULONG SmallPagedLookasideListAllocateHits;
203 ULONG MmSystemCachePage;
205 ULONG SystemDriverPage;
206 ULONG FastReadNoWait;
208 ULONG FastReadResourceMiss;
209 ULONG FastReadNotPossible;
210 ULONG FastMdlReadNoWait;
211 ULONG FastMdlReadWait;
212 ULONG FastMdlReadResourceMiss;
213 ULONG FastMdlReadNotPossible;
216 ULONG MapDataNoWaitMiss;
217 ULONG MapDataWaitMiss;
218 ULONG PinMappedDataCount;
221 ULONG PinReadNoWaitMiss;
222 ULONG PinReadWaitMiss;
223 ULONG CopyReadNoWait;
225 ULONG CopyReadNoWaitMiss;
226 ULONG CopyReadWaitMiss;
229 ULONG MdlReadNoWaitMiss;
230 ULONG MdlReadWaitMiss;
233 ULONG LazyWritePages;
236 ULONG ContextSwitches;
237 ULONG FirstLevelTbFills;
238 ULONG SecondLevelTbFills;
240 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
242 typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION {
243 LARGE_INTEGER BootTime;
244 LARGE_INTEGER CurrentTime;
245 LARGE_INTEGER TimeZoneBias;
246 ULONG CurrentTimeZoneId;
247 } SYSTEM_TIME_OF_DAY_INFORMATION, *PSYSTEM_TIME_OF_DAY_INFORMATION;
249 typedef struct _VM_COUNTERS {
250 ULONG PeakVirtualSize;
252 ULONG PageFaultCount;
253 ULONG PeakWorkingSetSize;
254 ULONG WorkingSetSize;
255 ULONG QuotaPeakPagedPoolUsage;
256 ULONG QuotaPagedPoolUsage;
257 ULONG QuotaPeakNonPagedPoolUsage;
258 ULONG QuotaNonPagedPoolUsage;
260 ULONG PeakPagefileUsage;
263 typedef enum _THREAD_STATE {
274 typedef struct _SYSTEM_THREADS {
275 LARGE_INTEGER KernelTime;
276 LARGE_INTEGER UserTime;
277 LARGE_INTEGER CreateTime;
282 KPRIORITY BasePriority;
283 ULONG ContextSwitchCount;
285 KWAIT_REASON WaitReason;
286 } SYSTEM_THREADS, *PSYSTEM_THREADS;
288 typedef struct _SYSTEM_PROCESSES {
289 ULONG NextEntryDelta;
292 LARGE_INTEGER CreateTime;
293 LARGE_INTEGER UserTime;
294 LARGE_INTEGER KernelTime;
295 UNICODE_STRING ProcessName;
296 KPRIORITY BasePriority;
298 ULONG InheritedFromProcessId;
301 VM_COUNTERS VmCounters;
302 IO_COUNTERS IoCounters;
303 SYSTEM_THREADS Threads[1];
304 } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
306 typedef struct _SYSTEM_CALLS_INFORMATION {
308 ULONG NumberOfDescriptorTables;
309 ULONG NumberOfRoutinesInTable[1];
310 ULONG CallCounts[ANYSIZE_ARRAY];
311 } SYSTEM_CALLS_INFORMATION, *PSYSTEM_CALLS_INFORMATION;
313 typedef struct _SYSTEM_CONFIGURATION_INFORMATION {
320 } SYSTEM_CONFIGURATION_INFORMATION, *PSYSTEM_CONFIGURATION_INFORMATION;
322 typedef struct _SYSTEM_PROCESSOR_TIMES {
323 LARGE_INTEGER IdleTime;
324 LARGE_INTEGER KernelTime;
325 LARGE_INTEGER UserTime;
326 LARGE_INTEGER DpcTime;
327 LARGE_INTEGER InterruptTime;
328 ULONG InterruptCount;
329 } SYSTEM_PROCESSOR_TIMES, *PSYSTEM_PROCESSOR_TIMES;
331 /* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */
332 #define FLG_STOP_ON_EXCEPTION 0x00000001
333 #define FLG_SHOW_LDR_SNAPS 0x00000002
334 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004
335 #define FLG_STOP_ON_HUNG_GUI 0x00000008
336 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010
337 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020
338 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040
339 #define FLG_HEAP_VALIDATE_ALL 0x00000080
340 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100
341 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200
342 #define FLG_POOL_ENABLE_TAGGING 0x00000400
343 #define FLG_HEAP_ENABLE_TAGGING 0x00000800
344 #define FLG_USER_STACK_TRACE_DB 0x00001000
345 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000
346 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000
347 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000
348 #define FLG_IGNORE_DEBUG_PRIV 0x00010000
349 #define FLG_ENABLE_CSRDEBUG 0x00020000
350 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000
351 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000
352 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000
353 #define FLG_HEAP_DISABLE_COALESCING 0x00200000
354 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000
355 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000
356 #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000
358 typedef struct _SYSTEM_GLOBAL_FLAG {
360 } SYSTEM_GLOBAL_FLAG, *PSYSTEM_GLOBAL_FLAG;
362 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {
369 /* Length of module name not including the path, this
370 field contains valid value only for NTOSKRNL module */
375 } SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY;
377 typedef struct _SYSTEM_MODULE_INFORMATION {
379 SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
380 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
382 typedef struct _SYSTEM_LOCK_INFORMATION {
386 ULONG ExclusiveOwnerThreadId;
388 ULONG ContentionCount;
390 ULONG NumberOfSharedWaiters;
391 ULONG NumberOfExclusiveWaiters;
392 } SYSTEM_LOCK_INFORMATION, *PSYSTEM_LOCK_INFORMATION;
394 /*SYSTEM_HANDLE_INFORMATION.Flags cosntants */
395 #define PROTECT_FROM_CLOSE 0x01
398 typedef struct _SYSTEM_HANDLE_INFORMATION {
400 UCHAR ObjectTypeNumber;
404 ACCESS_MASK GrantedAccess;
405 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
407 typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION {
408 ULONG NextEntryOffset;
412 ULONG InvalidAttributes;
413 GENERIC_MAPPING GenericMapping;
414 ACCESS_MASK ValidAccessMask;
418 } SYSTEM_OBJECT_TYPE_INFORMATION, *PSYSTEM_OBJECT_TYPE_INFORMATION;
420 /* SYSTEM_OBJECT_INFORMATION.Flags constants */
421 #define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY 0x40
422 #define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20
423 #define FLG_SYSOBJINFO_PERMANENT 0x10
424 #define FLG_SYSOBJINFO_EXCLUSIVE 0x08
425 #define FLG_SYSOBJINFO_CREATOR_INFO 0x04
426 #define FLG_SYSOBJINFO_KERNEL_MODE 0x02
428 typedef struct _SYSTEM_OBJECT_INFORMATION {
429 ULONG NextEntryOffset;
431 ULONG CreatorProcessId;
436 ULONG PagedPoolUsage;
437 ULONG NonPagedPoolUsage;
438 ULONG ExclusiveProcessId;
439 PSECURITY_DESCRIPTOR SecurityDescriptor;
441 } SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
443 typedef struct _SYSTEM_PAGEFILE_INFORMATION {
444 ULONG NextEntryOffset;
448 UNICODE_STRING FileName;
449 } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
451 typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION {
452 ULONG SegmentNotPresent;
485 ULONG GenericInvalidOpcode;
486 } SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION;
488 typedef struct _SYSTEM_POOL_TAG_INFORMATION {
490 ULONG PagedPoolAllocs;
491 ULONG PagedPoolFrees;
492 ULONG PagedPoolUsage;
493 ULONG NonPagedPoolAllocs;
494 ULONG NonPagedPoolFrees;
495 ULONG NonPagedPoolUsage;
496 } SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION;
498 typedef struct _SYSTEM_PROCESSOR_STATISTICS {
499 ULONG ContextSwitches;
501 ULONG DpcRequestRate;
503 ULONG DpcBypassCount;
504 ULONG ApcBypassCount;
505 } SYSTEM_PROCESSOR_STATISTICS, *PSYSTEM_PROCESSOR_STATISTICS;
507 typedef struct _SYSTEM_DPC_INFORMATION {
509 ULONG MaximumDpcQueueDepth;
510 ULONG MinimumDpcRate;
511 ULONG AdjustDpcThreshold;
513 } SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION;
515 typedef struct _SYSTEM_LOAD_IMAGE {
516 UNICODE_STRING ModuleName;
518 PVOID SectionPointer;
520 PVOID ExportDirectory;
521 } SYSTEM_LOAD_IMAGE, *PSYSTEM_LOAD_IMAGE;
523 typedef struct _SYSTEM_UNLOAD_IMAGE {
525 } SYSTEM_UNLOAD_IMAGE, *PSYSTEM_UNLOAD_IMAGE;
527 typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT {
528 ULONG TimeAdjustment;
529 ULONG MaximumIncrement;
530 BOOLEAN TimeSynchronization;
531 } SYSTEM_QUERY_TIME_ADJUSTMENT, *PSYSTEM_QUERY_TIME_ADJUSTMENT;
533 typedef struct _SYSTEM_SET_TIME_ADJUSTMENT {
534 ULONG TimeAdjustment;
535 BOOLEAN TimeSynchronization;
536 } SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT;
538 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION {
539 HANDLE CrashDumpSectionHandle;
541 } SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION;
543 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
544 ULONG AlignmentFixupCount;
545 ULONG ExceptionDispatchCount;
546 ULONG FloatingEmulationCount;
548 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
550 typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION {
551 ULONG CrashDumpSectionExists;
553 } SYSTEM_CRASH_DUMP_STATE_INFORMATION, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION;
555 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
556 BOOLEAN DebuggerEnabled;
557 BOOLEAN DebuggerNotPresent;
558 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
560 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION {
561 ULONG ContextSwitches;
562 ULONG ContextSwitchCounters[11];
563 } SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
565 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
567 ULONG RegistryQuotaInUse;
569 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
571 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE {
572 UNICODE_STRING ModuleName;
573 } SYSTEM_LOAD_AND_CALL_IMAGE, *PSYSTEM_LOAD_AND_CALL_IMAGE;
575 typedef struct _SYSTEM_PRIORITY_SEPARATION {
576 ULONG PrioritySeparation;
577 } SYSTEM_PRIORITY_SEPARATION, *PSYSTEM_PRIORITY_SEPARATION;
579 typedef struct _SYSTEM_TIME_ZONE_INFORMATION {
581 WCHAR StandardName[32];
582 LARGE_INTEGER StandardDate;
584 WCHAR DaylightName[32];
585 LARGE_INTEGER DaylightDate;
587 } SYSTEM_TIME_ZONE_INFORMATION, *PSYSTEM_TIME_ZONE_INFORMATION;
589 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
592 ULONG TotalAllocates;
593 ULONG AllocateMisses;
599 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
601 typedef struct _SYSTEM_SET_TIME_SLIP_EVENT {
602 HANDLE TimeSlipEvent;
603 } SYSTEM_SET_TIME_SLIP_EVENT, *PSYSTEM_SET_TIME_SLIP_EVENT;
605 typedef struct _SYSTEM_CREATE_SESSION {
607 } SYSTEM_CREATE_SESSION, *PSYSTEM_CREATE_SESSION;
609 typedef struct _SYSTEM_DELETE_SESSION {
611 } SYSTEM_DELETE_SESSION, *PSYSTEM_DELETE_SESSION;
613 typedef struct _SYSTEM_RANGE_START_INFORMATION {
614 PVOID SystemRangeStart;
615 } SYSTEM_RANGE_START_INFORMATION, *PSYSTEM_RANGE_START_INFORMATION;
617 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION {
621 } SYSTEM_SESSION_PROCESSES_INFORMATION, *PSYSTEM_SESSION_PROCESSES_INFORMATION;
623 typedef struct _SYSTEM_POOL_BLOCK {
628 } SYSTEM_POOL_BLOCK, *PSYSTEM_POOL_BLOCK;
630 typedef struct _SYSTEM_POOL_BLOCKS_INFORMATION {
634 ULONG NumberOfBlocks;
635 SYSTEM_POOL_BLOCK PoolBlocks[1];
636 } SYSTEM_POOL_BLOCKS_INFORMATION, *PSYSTEM_POOL_BLOCKS_INFORMATION;
638 typedef struct _SYSTEM_MEMORY_USAGE {
644 } SYSTEM_MEMORY_USAGE, *PSYSTEM_MEMORY_USAGE;
646 typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION {
649 SYSTEM_MEMORY_USAGE MemoryUsage[1];
650 } SYSTEM_MEMORY_USAGE_INFORMATION, *PSYSTEM_MEMORY_USAGE_INFORMATION;
655 NtQuerySystemInformation(
656 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
657 /*IN OUT*/ PVOID SystemInformation,
658 /*IN*/ ULONG SystemInformationLength,
659 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
664 ZwQuerySystemInformation(
665 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
666 /*IN OUT*/ PVOID SystemInformation,
667 /*IN*/ ULONG SystemInformationLength,
668 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
673 NtQueryFullAttributesFile(
674 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
675 /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation);
680 ZwQueryFullAttributesFile(
681 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
682 /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation);
687 NtSetSystemInformation(
688 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
689 /*IN OUT*/ PVOID SystemInformation,
690 /*IN*/ ULONG SystemInformationLength);
695 ZwSetSystemInformation(
696 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass,
697 /*IN OUT*/ PVOID SystemInformation,
698 /*IN*/ ULONG SystemInformationLength);
703 NtQuerySystemEnvironmentValue(
704 /*IN*/ PUNICODE_STRING Name,
706 /*IN*/ ULONG ValueLength,
707 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
712 ZwQuerySystemEnvironmentValue(
713 /*IN*/ PUNICODE_STRING Name,
715 /*IN*/ ULONG ValueLength,
716 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
721 NtSetSystemEnvironmentValue(
722 /*IN*/ PUNICODE_STRING Name,
723 /*IN*/ PUNICODE_STRING Value);
728 ZwSetSystemEnvironmentValue(
729 /*IN*/ PUNICODE_STRING Name,
730 /*IN*/ PUNICODE_STRING Value);
732 typedef enum _SHUTDOWN_ACTION {
742 /*IN*/ SHUTDOWN_ACTION Action);
748 /*IN*/ SHUTDOWN_ACTION Action);
750 typedef enum _DEBUG_CONTROL_CODE {
751 DebugGetTraceInformation = 1,
752 DebugSetInternalBreakpoint,
754 DebugClearSpecialCalls,
755 DebugQuerySpecialCalls,
758 } DEBUG_CONTROL_CODE;
764 NtSystemDebugControl(
765 /*IN*/ DEBUG_CONTROL_CODE ControlCode,
766 /*IN*/ PVOID InputBuffer /*OPTIONAL*/,
767 /*IN*/ ULONG InputBufferLength,
768 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/,
769 /*IN*/ ULONG OutputBufferLength,
770 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
775 ZwSystemDebugControl(
776 /*IN*/ DEBUG_CONTROL_CODE ControlCode,
777 /*IN*/ PVOID InputBuffer /*OPTIONAL*/,
778 /*IN*/ ULONG InputBufferLength,
779 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/,
780 /*IN*/ ULONG OutputBufferLength,
781 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
785 /* Objects, Object directories, and symbolic links */
787 typedef enum _OBJECT_INFORMATION_CLASS {
788 ObjectBasicInformation,
789 ObjectNameInformation,
790 ObjectTypeInformation,
791 ObjectAllTypesInformation,
792 ObjectHandleInformation
793 } OBJECT_INFORMATION_CLASS;
799 /*IN*/ HANDLE ObjectHandle,
800 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass,
801 /*OUT*/ PVOID ObjectInformation,
802 /*IN*/ ULONG ObjectInformationLength,
803 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
809 /*IN*/ HANDLE ObjectHandle,
810 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass,
811 /*OUT*/ PVOID ObjectInformation,
812 /*IN*/ ULONG ObjectInformationLength,
813 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
818 NtSetInformationObject(
819 /*IN*/ HANDLE ObjectHandle,
820 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass,
821 /*IN*/ PVOID ObjectInformation,
822 /*IN*/ ULONG ObjectInformationLength);
827 ZwSetInformationObject(
828 /*IN*/ HANDLE ObjectHandle,
829 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass,
830 /*IN*/ PVOID ObjectInformation,
831 /*IN*/ ULONG ObjectInformationLength);
833 /* OBJECT_BASIC_INFORMATION.Attributes constants */
834 /* also in winbase.h */
835 #define HANDLE_FLAG_INHERIT 0x01
836 #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02
838 #define PERMANENT 0x10
839 #define EXCLUSIVE 0x20
841 typedef struct _OBJECT_BASIC_INFORMATION {
843 ACCESS_MASK GrantedAccess;
846 ULONG PagedPoolUsage;
847 ULONG NonPagedPoolUsage;
849 ULONG NameInformationLength;
850 ULONG TypeInformationLength;
851 ULONG SecurityDescriptorLength;
852 LARGE_INTEGER CreateTime;
853 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
855 /* FIXME: Enable later */
856 typedef struct _OBJECT_TYPE_INFORMATION {
861 ULONG PeakObjectCount;
862 ULONG PeakHandleCount;
864 ULONG InvalidAttributes;
865 GENERIC_MAPPING GenericMapping;
868 BOOLEAN MaintainHandleDatabase;
870 ULONG PagedPoolUsage;
871 ULONG NonPagedPoolUsage;
872 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
874 typedef struct _OBJECT_ALL_TYPES_INFORMATION {
876 OBJECT_TYPE_INFORMATION TypeInformation;
877 } OBJECT_ALL_TYPES_INFORMATION, *POBJECT_ALL_TYPES_INFORMATION;
879 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION {
881 BOOLEAN ProtectFromClose;
882 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION;
888 /*IN*/ HANDLE SourceProcessHandle,
889 /*IN*/ HANDLE SourceHandle,
890 /*IN*/ HANDLE TargetProcessHandle,
891 /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/,
892 /*IN*/ ACCESS_MASK DesiredAccess,
893 /*IN*/ ULONG Attributes,
894 /*IN*/ ULONG Options);
900 /*IN*/ HANDLE SourceProcessHandle,
901 /*IN*/ HANDLE SourceHandle,
902 /*IN*/ HANDLE TargetProcessHandle,
903 /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/,
904 /*IN*/ ACCESS_MASK DesiredAccess,
905 /*IN*/ ULONG Attributes,
906 /*IN*/ ULONG Options);
911 NtQuerySecurityObject(
912 /*IN*/ HANDLE Handle,
913 /*IN*/ SECURITY_INFORMATION SecurityInformation,
914 /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
915 /*IN*/ ULONG SecurityDescriptorLength,
916 /*OUT*/ PULONG ReturnLength);
921 ZwQuerySecurityObject(
922 /*IN*/ HANDLE Handle,
923 /*IN*/ SECURITY_INFORMATION SecurityInformation,
924 /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
925 /*IN*/ ULONG SecurityDescriptorLength,
926 /*OUT*/ PULONG ReturnLength);
932 /*IN*/ HANDLE Handle,
933 /*IN*/ SECURITY_INFORMATION SecurityInformation,
934 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);
940 /*IN*/ HANDLE Handle,
941 /*IN*/ SECURITY_INFORMATION SecurityInformation,
942 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);
947 NtOpenDirectoryObject(
948 /*OUT*/ PHANDLE DirectoryHandle,
949 /*IN*/ ACCESS_MASK DesiredAccess,
950 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
955 ZwOpenDirectoryObject(
956 /*OUT*/ PHANDLE DirectoryHandle,
957 /*IN*/ ACCESS_MASK DesiredAccess,
958 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
963 NtQueryDirectoryObject(
964 /*IN*/ HANDLE DirectoryHandle,
965 /*OUT*/ PVOID Buffer,
966 /*IN*/ ULONG BufferLength,
967 /*IN*/ BOOLEAN ReturnSingleEntry,
968 /*IN*/ BOOLEAN RestartScan,
969 /*IN OUT*/ PULONG Context,
970 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
975 ZwQueryDirectoryObject(
976 /*IN*/ HANDLE DirectoryHandle,
977 /*OUT*/ PVOID Buffer,
978 /*IN*/ ULONG BufferLength,
979 /*IN*/ BOOLEAN ReturnSingleEntry,
980 /*IN*/ BOOLEAN RestartScan,
981 /*IN OUT*/ PULONG Context,
982 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
984 typedef struct _DIRECTORY_BASIC_INFORMATION {
985 UNICODE_STRING ObjectName;
986 UNICODE_STRING ObjectTypeName;
987 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
992 NtCreateSymbolicLinkObject(
993 /*OUT*/ PHANDLE SymbolicLinkHandle,
994 /*IN*/ ACCESS_MASK DesiredAccess,
995 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
996 /*IN*/ PUNICODE_STRING TargetName);
1001 ZwCreateSymbolicLinkObject(
1002 /*OUT*/ PHANDLE SymbolicLinkHandle,
1003 /*IN*/ ACCESS_MASK DesiredAccess,
1004 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1005 /*IN*/ PUNICODE_STRING TargetName);
1010 /* Virtual memory */
1012 typedef enum _MEMORY_INFORMATION_CLASS {
1013 MemoryBasicInformation,
1014 MemoryWorkingSetList,
1016 MemoryBasicVlmInformation
1017 } MEMORY_INFORMATION_CLASS;
1022 NtAllocateVirtualMemory(
1023 /*IN*/ HANDLE ProcessHandle,
1024 /*IN OUT*/ PVOID *BaseAddress,
1025 /*IN*/ ULONG ZeroBits,
1026 /*IN OUT*/ PULONG AllocationSize,
1027 /*IN*/ ULONG AllocationType,
1028 /*IN*/ ULONG Protect);
1033 ZwAllocateVirtualMemory(
1034 /*IN*/ HANDLE ProcessHandle,
1035 /*IN OUT*/ PVOID *BaseAddress,
1036 /*IN*/ ULONG ZeroBits,
1037 /*IN OUT*/ PULONG AllocationSize,
1038 /*IN*/ ULONG AllocationType,
1039 /*IN*/ ULONG Protect);
1044 NtFreeVirtualMemory(
1045 /*IN*/ HANDLE ProcessHandle,
1046 /*IN OUT*/ PVOID *BaseAddress,
1047 /*IN OUT*/ PULONG FreeSize,
1048 /*IN*/ ULONG FreeType);
1053 ZwFreeVirtualMemory(
1054 /*IN*/ HANDLE ProcessHandle,
1055 /*IN OUT*/ PVOID *BaseAddress,
1056 /*IN OUT*/ PULONG FreeSize,
1057 /*IN*/ ULONG FreeType);
1062 NtQueryVirtualMemory(
1063 /*IN*/ HANDLE ProcessHandle,
1064 /*IN*/ PVOID BaseAddress,
1065 /*IN*/ MEMORY_INFORMATION_CLASS MemoryInformationClass,
1066 /*OUT*/ PVOID MemoryInformation,
1067 /*IN*/ ULONG MemoryInformationLength,
1068 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1073 ZwQueryVirtualMemory(
1074 /*IN*/ HANDLE ProcessHandle,
1075 /*IN*/ PVOID BaseAddress,
1076 /*IN*/ MEMORY_INFORMATION_CLASS MemoryInformationClass,
1077 /*OUT*/ PVOID MemoryInformation,
1078 /*IN*/ ULONG MemoryInformationLength,
1079 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1081 /* MEMORY_WORKING_SET_LIST.WorkingSetList constants */
1082 #define WSLE_PAGE_READONLY 0x001
1083 #define WSLE_PAGE_EXECUTE 0x002
1084 #define WSLE_PAGE_READWRITE 0x004
1085 #define WSLE_PAGE_EXECUTE_READ 0x003
1086 #define WSLE_PAGE_WRITECOPY 0x005
1087 #define WSLE_PAGE_EXECUTE_READWRITE 0x006
1088 #define WSLE_PAGE_EXECUTE_WRITECOPY 0x007
1089 #define WSLE_PAGE_SHARE_COUNT_MASK 0x0E0
1090 #define WSLE_PAGE_SHAREABLE 0x100
1092 typedef struct _MEMORY_WORKING_SET_LIST {
1093 ULONG NumberOfPages;
1094 ULONG WorkingSetList[1];
1095 } MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST;
1097 typedef struct _MEMORY_SECTION_NAME {
1098 UNICODE_STRING SectionFileName;
1099 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
1101 /* Zw[Lock|Unlock]VirtualMemory.LockType constants */
1102 #define LOCK_VM_IN_WSL 0x01
1103 #define LOCK_VM_IN_RAM 0x02
1108 NtLockVirtualMemory(
1109 /*IN*/ HANDLE ProcessHandle,
1110 /*IN OUT*/ PVOID *BaseAddress,
1111 /*IN OUT*/ PULONG LockSize,
1112 /*IN*/ ULONG LockType);
1117 ZwLockVirtualMemory(
1118 /*IN*/ HANDLE ProcessHandle,
1119 /*IN OUT*/ PVOID *BaseAddress,
1120 /*IN OUT*/ PULONG LockSize,
1121 /*IN*/ ULONG LockType);
1126 NtUnlockVirtualMemory(
1127 /*IN*/ HANDLE ProcessHandle,
1128 /*IN OUT*/ PVOID *BaseAddress,
1129 /*IN OUT*/ PULONG LockSize,
1130 /*IN*/ ULONG LockType);
1135 ZwUnlockVirtualMemory(
1136 /*IN*/ HANDLE ProcessHandle,
1137 /*IN OUT*/ PVOID *BaseAddress,
1138 /*IN OUT*/ PULONG LockSize,
1139 /*IN*/ ULONG LockType);
1144 NtReadVirtualMemory(
1145 /*IN*/ HANDLE ProcessHandle,
1146 /*IN*/ PVOID BaseAddress,
1147 /*OUT*/ PVOID Buffer,
1148 /*IN*/ ULONG BufferLength,
1149 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1154 ZwReadVirtualMemory(
1155 /*IN*/ HANDLE ProcessHandle,
1156 /*IN*/ PVOID BaseAddress,
1157 /*OUT*/ PVOID Buffer,
1158 /*IN*/ ULONG BufferLength,
1159 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1164 NtWriteVirtualMemory(
1165 /*IN*/ HANDLE ProcessHandle,
1166 /*IN*/ PVOID BaseAddress,
1167 /*IN*/ PVOID Buffer,
1168 /*IN*/ ULONG BufferLength,
1169 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1174 ZwWriteVirtualMemory(
1175 /*IN*/ HANDLE ProcessHandle,
1176 /*IN*/ PVOID BaseAddress,
1177 /*IN*/ PVOID Buffer,
1178 /*IN*/ ULONG BufferLength,
1179 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1184 NtProtectVirtualMemory(
1185 /*IN*/ HANDLE ProcessHandle,
1186 /*IN OUT*/ PVOID *BaseAddress,
1187 /*IN OUT*/ PULONG ProtectSize,
1188 /*IN*/ ULONG NewProtect,
1189 /*OUT*/ PULONG OldProtect);
1194 ZwProtectVirtualMemory(
1195 /*IN*/ HANDLE ProcessHandle,
1196 /*IN OUT*/ PVOID *BaseAddress,
1197 /*IN OUT*/ PULONG ProtectSize,
1198 /*IN*/ ULONG NewProtect,
1199 /*OUT*/ PULONG OldProtect);
1204 NtFlushVirtualMemory(
1205 /*IN*/ HANDLE ProcessHandle,
1206 /*IN OUT*/ PVOID *BaseAddress,
1207 /*IN OUT*/ PULONG FlushSize,
1208 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
1213 ZwFlushVirtualMemory(
1214 /*IN*/ HANDLE ProcessHandle,
1215 /*IN OUT*/ PVOID *BaseAddress,
1216 /*IN OUT*/ PULONG FlushSize,
1217 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
1222 NtAllocateUserPhysicalPages(
1223 /*IN*/ HANDLE ProcessHandle,
1224 /*IN*/ PULONG NumberOfPages,
1225 /*OUT*/ PULONG PageFrameNumbers);
1230 ZwAllocateUserPhysicalPages(
1231 /*IN*/ HANDLE ProcessHandle,
1232 /*IN*/ PULONG NumberOfPages,
1233 /*OUT*/ PULONG PageFrameNumbers);
1238 NtFreeUserPhysicalPages(
1239 /*IN*/ HANDLE ProcessHandle,
1240 /*IN OUT*/ PULONG NumberOfPages,
1241 /*IN*/ PULONG PageFrameNumbers);
1246 ZwFreeUserPhysicalPages(
1247 /*IN*/ HANDLE ProcessHandle,
1248 /*IN OUT*/ PULONG NumberOfPages,
1249 /*IN*/ PULONG PageFrameNumbers);
1254 NtMapUserPhysicalPages(
1255 /*IN*/ PVOID BaseAddress,
1256 /*IN*/ PULONG NumberOfPages,
1257 /*IN*/ PULONG PageFrameNumbers);
1262 ZwMapUserPhysicalPages(
1263 /*IN*/ PVOID BaseAddress,
1264 /*IN*/ PULONG NumberOfPages,
1265 /*IN*/ PULONG PageFrameNumbers);
1270 NtMapUserPhysicalPagesScatter(
1271 /*IN*/ PVOID *BaseAddresses,
1272 /*IN*/ PULONG NumberOfPages,
1273 /*IN*/ PULONG PageFrameNumbers);
1278 ZwMapUserPhysicalPagesScatter(
1279 /*IN*/ PVOID *BaseAddresses,
1280 /*IN*/ PULONG NumberOfPages,
1281 /*IN*/ PULONG PageFrameNumbers);
1287 /*IN*/ HANDLE ProcessHandle,
1289 /*IN*/ PVOID BaseAddress,
1290 /*IN*/ ULONG RegionSize,
1291 /*OUT*/ PULONG Buffer,
1292 /*IN OUT*/ PULONG BufferEntries,
1293 /*OUT*/ PULONG Granularity);
1299 /*IN*/ HANDLE ProcessHandle,
1301 /*IN*/ PVOID BaseAddress,
1302 /*IN*/ ULONG RegionSize,
1303 /*OUT*/ PULONG Buffer,
1304 /*IN OUT*/ PULONG BufferEntries,
1305 /*OUT*/ PULONG Granularity);
1311 /*IN*/ HANDLE ProcessHandle,
1312 /*IN*/ PVOID BaseAddress,
1313 /*IN*/ ULONG RegionSize);
1319 /*IN*/ HANDLE ProcessHandle,
1320 /*IN*/ PVOID BaseAddress,
1321 /*IN*/ ULONG RegionSize);
1328 typedef enum _SECTION_INFORMATION_CLASS {
1329 SectionBasicInformation,
1330 SectionImageInformation
1331 } SECTION_INFORMATION_CLASS;
1337 /*OUT*/ PHANDLE SectionHandle,
1338 /*IN*/ ACCESS_MASK DesiredAccess,
1339 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1340 /*IN*/ PLARGE_INTEGER SectionSize /*OPTIONAL*/,
1341 /*IN*/ ULONG Protect,
1342 /*IN*/ ULONG Attributes,
1343 /*IN*/ HANDLE FileHandle);
1349 /*OUT*/ PHANDLE SectionHandle,
1350 /*IN*/ ACCESS_MASK DesiredAccess,
1351 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1352 /*IN*/ PLARGE_INTEGER SectionSize /*OPTIONAL*/,
1353 /*IN*/ ULONG Protect,
1354 /*IN*/ ULONG Attributes,
1355 /*IN*/ HANDLE FileHandle);
1361 /*IN*/ HANDLE SectionHandle,
1362 /*IN*/ SECTION_INFORMATION_CLASS SectionInformationClass,
1363 /*OUT*/ PVOID SectionInformation,
1364 /*IN*/ ULONG SectionInformationLength,
1365 /*OUT*/ PULONG ResultLength /*OPTIONAL*/);
1371 /*IN*/ HANDLE SectionHandle,
1372 /*IN*/ SECTION_INFORMATION_CLASS SectionInformationClass,
1373 /*OUT*/ PVOID SectionInformation,
1374 /*IN*/ ULONG SectionInformationLength,
1375 /*OUT*/ PULONG ResultLength /*OPTIONAL*/);
1381 /*IN*/ HANDLE SectionHandle,
1382 /*IN*/ PLARGE_INTEGER SectionSize);
1388 /*IN*/ HANDLE SectionHandle,
1389 /*IN*/ PLARGE_INTEGER SectionSize);
1394 NtAreMappedFilesTheSame(
1395 /*IN*/ PVOID Address1,
1396 /*IN*/ PVOID Address2);
1401 ZwAreMappedFilesTheSame(
1402 /*IN*/ PVOID Address1,
1403 /*IN*/ PVOID Address2);
1410 typedef struct _USER_STACK {
1411 PVOID FixedStackBase;
1412 PVOID FixedStackLimit;
1413 PVOID ExpandableStackBase;
1414 PVOID ExpandableStackLimit;
1415 PVOID ExpandableStackBottom;
1416 } USER_STACK, *PUSER_STACK;
1422 /*OUT*/ PHANDLE ThreadHandle,
1423 /*IN*/ ACCESS_MASK DesiredAccess,
1424 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1425 /*IN*/ HANDLE ProcessHandle,
1426 /*OUT*/ PCLIENT_ID ClientId,
1427 /*IN*/ PCONTEXT ThreadContext,
1428 /*IN*/ PUSER_STACK UserStack,
1429 /*IN*/ BOOLEAN CreateSuspended);
1435 /*OUT*/ PHANDLE ThreadHandle,
1436 /*IN*/ ACCESS_MASK DesiredAccess,
1437 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1438 /*IN*/ HANDLE ProcessHandle,
1439 /*OUT*/ PCLIENT_ID ClientId,
1440 /*IN*/ PCONTEXT ThreadContext,
1441 /*IN*/ PUSER_STACK UserStack,
1442 /*IN*/ BOOLEAN CreateSuspended);
1448 /*OUT*/ PHANDLE ThreadHandle,
1449 /*IN*/ ACCESS_MASK DesiredAccess,
1450 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1451 /*IN*/ PCLIENT_ID ClientId);
1457 /*OUT*/ PHANDLE ThreadHandle,
1458 /*IN*/ ACCESS_MASK DesiredAccess,
1459 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1460 /*IN*/ PCLIENT_ID ClientId);
1466 /*IN*/ HANDLE ThreadHandle /*OPTIONAL*/,
1467 /*IN*/ NTSTATUS ExitStatus);
1473 /*IN*/ HANDLE ThreadHandle /*OPTIONAL*/,
1474 /*IN*/ NTSTATUS ExitStatus);
1479 NtQueryInformationThread(
1480 /*IN*/ HANDLE ThreadHandle,
1481 /*IN*/ THREADINFOCLASS ThreadInformationClass,
1482 /*OUT*/ PVOID ThreadInformation,
1483 /*IN*/ ULONG ThreadInformationLength,
1484 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1489 ZwQueryInformationThread(
1490 /*IN*/ HANDLE ThreadHandle,
1491 /*IN*/ THREADINFOCLASS ThreadInformationClass,
1492 /*OUT*/ PVOID ThreadInformation,
1493 /*IN*/ ULONG ThreadInformationLength,
1494 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1499 NtSetInformationThread(
1500 /*IN*/ HANDLE ThreadHandle,
1501 /*IN*/ THREADINFOCLASS ThreadInformationClass,
1502 /*IN*/ PVOID ThreadInformation,
1503 /*IN*/ ULONG ThreadInformationLength);
1508 ZwSetInformationThread(
1509 /*IN*/ HANDLE ThreadHandle,
1510 /*IN*/ THREADINFOCLASS ThreadInformationClass,
1511 /*IN*/ PVOID ThreadInformation,
1512 /*IN*/ ULONG ThreadInformationLength);
1514 typedef struct _THREAD_BASIC_INFORMATION {
1515 NTSTATUS ExitStatus;
1516 PNT_TIB TebBaseAddress;
1518 KAFFINITY AffinityMask;
1520 KPRIORITY BasePriority;
1521 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
1523 typedef struct _KERNEL_USER_TIMES {
1524 LARGE_INTEGER CreateTime;
1525 LARGE_INTEGER ExitTime;
1526 LARGE_INTEGER KernelTime;
1527 LARGE_INTEGER UserTime;
1528 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
1534 /*IN*/ HANDLE ThreadHandle,
1535 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1541 /*IN*/ HANDLE ThreadHandle,
1542 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1548 /*IN*/ HANDLE ThreadHandle,
1549 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1555 /*IN*/ HANDLE ThreadHandle,
1556 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1562 /*IN*/ HANDLE ThreadHandle,
1563 /*OUT*/ PCONTEXT Context);
1569 /*IN*/ HANDLE ThreadHandle,
1570 /*OUT*/ PCONTEXT Context);
1576 /*IN*/ HANDLE ThreadHandle,
1577 /*IN*/ PCONTEXT Context);
1583 /*IN*/ HANDLE ThreadHandle,
1584 /*IN*/ PCONTEXT Context);
1590 /*IN*/ HANDLE ThreadHandle,
1591 /*IN*/ PKNORMAL_ROUTINE ApcRoutine,
1592 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
1593 /*IN*/ PVOID Argument1 /*OPTIONAL*/,
1594 /*IN*/ PVOID Argument2 /*OPTIONAL*/);
1600 /*IN*/ HANDLE ThreadHandle,
1601 /*IN*/ PKNORMAL_ROUTINE ApcRoutine,
1602 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
1603 /*IN*/ PVOID Argument1 /*OPTIONAL*/,
1604 /*IN*/ PVOID Argument2 /*OPTIONAL*/);
1622 /*IN*/ HANDLE ThreadHandle);
1628 /*IN*/ HANDLE ThreadHandle);
1633 NtAlertResumeThread(
1634 /*IN*/ HANDLE ThreadHandle,
1635 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1640 ZwAlertResumeThread(
1641 /*IN*/ HANDLE ThreadHandle,
1642 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/);
1647 NtRegisterThreadTerminatePort(
1648 /*IN*/ HANDLE PortHandle);
1653 ZwRegisterThreadTerminatePort(
1654 /*IN*/ HANDLE PortHandle);
1659 NtImpersonateThread(
1660 /*IN*/ HANDLE ThreadHandle,
1661 /*IN*/ HANDLE TargetThreadHandle,
1662 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos);
1667 ZwImpersonateThread(
1668 /*IN*/ HANDLE ThreadHandle,
1669 /*IN*/ HANDLE TargetThreadHandle,
1670 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos);
1675 NtImpersonateAnonymousToken(
1676 /*IN*/ HANDLE ThreadHandle);
1681 ZwImpersonateAnonymousToken(
1682 /*IN*/ HANDLE ThreadHandle);
1693 /*OUT*/ PHANDLE ProcessHandle,
1694 /*IN*/ ACCESS_MASK DesiredAccess,
1695 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1696 /*IN*/ HANDLE InheritFromProcessHandle,
1697 /*IN*/ BOOLEAN InheritHandles,
1698 /*IN*/ HANDLE SectionHandle /*OPTIONAL*/,
1699 /*IN*/ HANDLE DebugPort /*OPTIONAL*/,
1700 /*IN*/ HANDLE ExceptionPort /*OPTIONAL*/);
1706 /*OUT*/ PHANDLE ProcessHandle,
1707 /*IN*/ ACCESS_MASK DesiredAccess,
1708 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
1709 /*IN*/ HANDLE InheritFromProcessHandle,
1710 /*IN*/ BOOLEAN InheritHandles,
1711 /*IN*/ HANDLE SectionHandle /*OPTIONAL*/,
1712 /*IN*/ HANDLE DebugPort /*OPTIONAL*/,
1713 /*IN*/ HANDLE ExceptionPort /*OPTIONAL*/);
1719 /*IN*/ HANDLE ProcessHandle /*OPTIONAL*/,
1720 /*IN*/ NTSTATUS ExitStatus);
1726 /*IN*/ HANDLE ProcessHandle /*OPTIONAL*/,
1727 /*IN*/ NTSTATUS ExitStatus);
1732 NtQueryInformationProcess(
1733 /*IN*/ HANDLE ProcessHandle,
1734 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
1735 /*OUT*/ PVOID ProcessInformation,
1736 /*IN*/ ULONG ProcessInformationLength,
1737 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1742 ZwQueryInformationProcess(
1743 /*IN*/ HANDLE ProcessHandle,
1744 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
1745 /*OUT*/ PVOID ProcessInformation,
1746 /*IN*/ ULONG ProcessInformationLength,
1747 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
1752 NtSetInformationProcess(
1753 /*IN*/ HANDLE ProcessHandle,
1754 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
1755 /*IN*/ PVOID ProcessInformation,
1756 /*IN*/ ULONG ProcessInformationLength);
1761 ZwSetInformationProcess(
1762 /*IN*/ HANDLE ProcessHandle,
1763 /*IN*/ PROCESSINFOCLASS ProcessInformationClass,
1764 /*IN*/ PVOID ProcessInformation,
1765 /*IN*/ ULONG ProcessInformationLength);
1767 typedef struct _PROCESS_BASIC_INFORMATION {
1768 NTSTATUS ExitStatus;
1769 PPEB PebBaseAddress;
1770 KAFFINITY AffinityMask;
1771 KPRIORITY BasePriority;
1772 ULONG UniqueProcessId;
1773 ULONG InheritedFromUniqueProcessId;
1774 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
1776 typedef struct _PROCESS_ACCESS_TOKEN {
1779 } PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN;
1781 /* DefaultHardErrorMode constants */
1782 /* also in winbase.h */
1783 #define SEM_FAILCRITICALERRORS 0x0001
1784 #define SEM_NOGPFAULTERRORBOX 0x0002
1785 #define SEM_NOALIGNMENTFAULTEXCEPT 0x0004
1786 #define SEM_NOOPENFILEERRORBOX 0x8000
1788 typedef struct _POOLED_USAGE_AND_LIMITS {
1789 ULONG PeakPagedPoolUsage;
1790 ULONG PagedPoolUsage;
1791 ULONG PagedPoolLimit;
1792 ULONG PeakNonPagedPoolUsage;
1793 ULONG NonPagedPoolUsage;
1794 ULONG NonPagedPoolLimit;
1795 ULONG PeakPagefileUsage;
1796 ULONG PagefileUsage;
1797 ULONG PagefileLimit;
1798 } POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS;
1800 typedef struct _PROCESS_WS_WATCH_INFORMATION {
1803 } PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION;
1805 /* PROCESS_PRIORITY_CLASS.PriorityClass constants */
1809 #define PC_REALTIME 4
1810 #define PC_BELOW_NORMAL 5
1811 #define PC_ABOVE_NORMAL 6
1813 typedef struct _PROCESS_PRIORITY_CLASS {
1815 UCHAR PriorityClass;
1816 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
1818 /* PROCESS_DEVICEMAP_INFORMATION.DriveType constants */
1819 #define DRIVE_UNKNOWN 0
1820 #define DRIVE_NO_ROOT_DIR 1
1821 #define DRIVE_REMOVABLE 2
1822 #define DRIVE_FIXED 3
1823 #define DRIVE_REMOTE 4
1824 #define DRIVE_CDROM 5
1825 #define DRIVE_RAMDISK 6
1827 typedef struct _PROCESS_DEVICEMAP_INFORMATION {
1828 _ANONYMOUS_UNION union {
1830 HANDLE DirectoryHandle;
1834 UCHAR DriveType[32];
1837 } PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION;
1839 typedef struct _PROCESS_SESSION_INFORMATION {
1841 } PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
1843 typedef struct _RTL_USER_PROCESS_PARAMETERS {
1844 ULONG AllocationSize;
1853 UNICODE_STRING CurrentDirectoryName;
1854 HANDLE CurrentDirectoryHandle;
1855 UNICODE_STRING DllPath;
1856 UNICODE_STRING ImagePathName;
1857 UNICODE_STRING CommandLine;
1863 ULONG dwXCountChars;
1864 ULONG dwYCountChars;
1865 ULONG dwFillAttribute;
1868 UNICODE_STRING WindowTitle;
1869 UNICODE_STRING DesktopInfo;
1870 UNICODE_STRING ShellInfo;
1871 UNICODE_STRING RuntimeInfo;
1872 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
1876 RtlCreateProcessParameters(
1877 /*OUT*/ PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
1878 /*IN*/ PUNICODE_STRING ImageFile,
1879 /*IN*/ PUNICODE_STRING DllPath /*OPTIONAL*/,
1880 /*IN*/ PUNICODE_STRING CurrentDirectory /*OPTIONAL*/,
1881 /*IN*/ PUNICODE_STRING CommandLine /*OPTIONAL*/,
1882 /*IN*/ PWSTR Environment /*OPTIONAL*/,
1883 /*IN*/ PUNICODE_STRING WindowTitle /*OPTIONAL*/,
1884 /*IN*/ PUNICODE_STRING DesktopInfo /*OPTIONAL*/,
1885 /*IN*/ PUNICODE_STRING ShellInfo /*OPTIONAL*/,
1886 /*IN*/ PUNICODE_STRING RuntimeInfo /*OPTIONAL*/);
1890 RtlDestroyProcessParameters(
1891 /*IN*/ PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1893 typedef struct _DEBUG_BUFFER {
1894 HANDLE SectionHandle;
1896 PVOID RemoteSectionBase;
1897 ULONG SectionBaseDelta;
1898 HANDLE EventPairHandle;
1900 HANDLE RemoteThreadHandle;
1901 ULONG InfoClassMask;
1903 ULONG AllocatedSize;
1905 PVOID ModuleInformation;
1906 PVOID BackTraceInformation;
1907 PVOID HeapInformation;
1908 PVOID LockInformation;
1910 } DEBUG_BUFFER, *PDEBUG_BUFFER;
1914 RtlCreateQueryDebugBuffer(
1916 /*IN*/ BOOLEAN EventPair);
1918 /* RtlQueryProcessDebugInformation.DebugInfoClassMask constants */
1919 #define PDI_MODULES 0x01
1920 #define PDI_BACKTRACE 0x02
1921 #define PDI_HEAPS 0x04
1922 #define PDI_HEAP_TAGS 0x08
1923 #define PDI_HEAP_BLOCKS 0x10
1924 #define PDI_LOCKS 0x20
1928 RtlQueryProcessDebugInformation(
1929 /*IN*/ ULONG ProcessId,
1930 /*IN*/ ULONG DebugInfoClassMask,
1931 /*IN OUT*/ PDEBUG_BUFFER DebugBuffer);
1935 RtlDestroyQueryDebugBuffer(
1936 /*IN*/ PDEBUG_BUFFER DebugBuffer);
1938 /* DEBUG_MODULE_INFORMATION.Flags constants */
1939 #define LDRP_STATIC_LINK 0x00000002
1940 #define LDRP_IMAGE_DLL 0x00000004
1941 #define LDRP_LOAD_IN_PROGRESS 0x00001000
1942 #define LDRP_UNLOAD_IN_PROGRESS 0x00002000
1943 #define LDRP_ENTRY_PROCESSED 0x00004000
1944 #define LDRP_ENTRY_INSERTED 0x00008000
1945 #define LDRP_CURRENT_LOAD 0x00010000
1946 #define LDRP_FAILED_BUILTIN_LOAD 0x00020000
1947 #define LDRP_DONT_CALL_FOR_THREADS 0x00040000
1948 #define LDRP_PROCESS_ATTACH_CALLED 0x00080000
1949 #define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000
1950 #define LDRP_IMAGE_NOT_AT_BASE 0x00200000
1951 #define LDRP_WX86_IGNORE_MACHINETYPE 0x00400000
1953 typedef struct _DEBUG_MODULE_INFORMATION {
1961 USHORT ModuleNameOffset;
1962 CHAR ImageName[256];
1963 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
1965 typedef struct _DEBUG_HEAP_INFORMATION {
1977 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
1979 typedef struct _DEBUG_LOCK_INFORMATION {
1982 USHORT CreatorBackTraceIndex;
1983 ULONG OwnerThreadId;
1985 ULONG ContentionCount;
1987 ULONG RecursionCount;
1988 ULONG NumberOfSharedWaiters;
1989 ULONG NumberOfExclusiveWaiters;
1990 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
2000 /*OUT*/ PHANDLE JobHandle,
2001 /*IN*/ ACCESS_MASK DesiredAccess,
2002 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2008 /*OUT*/ PHANDLE JobHandle,
2009 /*IN*/ ACCESS_MASK DesiredAccess,
2010 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2016 /*OUT*/ PHANDLE JobHandle,
2017 /*IN*/ ACCESS_MASK DesiredAccess,
2018 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2024 /*OUT*/ PHANDLE JobHandle,
2025 /*IN*/ ACCESS_MASK DesiredAccess,
2026 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2031 NtTerminateJobObject(
2032 /*IN*/ HANDLE JobHandle,
2033 /*IN*/ NTSTATUS ExitStatus);
2038 ZwTerminateJobObject(
2039 /*IN*/ HANDLE JobHandle,
2040 /*IN*/ NTSTATUS ExitStatus);
2045 NtAssignProcessToJobObject(
2046 /*IN*/ HANDLE JobHandle,
2047 /*IN*/ HANDLE ProcessHandle);
2052 ZwAssignProcessToJobObject(
2053 /*IN*/ HANDLE JobHandle,
2054 /*IN*/ HANDLE ProcessHandle);
2059 NtQueryInformationJobObject(
2060 /*IN*/ HANDLE JobHandle,
2061 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass,
2062 /*OUT*/ PVOID JobInformation,
2063 /*IN*/ ULONG JobInformationLength,
2064 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2069 ZwQueryInformationJobObject(
2070 /*IN*/ HANDLE JobHandle,
2071 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass,
2072 /*OUT*/ PVOID JobInformation,
2073 /*IN*/ ULONG JobInformationLength,
2074 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2079 NtSetInformationJobObject(
2080 /*IN*/ HANDLE JobHandle,
2081 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass,
2082 /*IN*/ PVOID JobInformation,
2083 /*IN*/ ULONG JobInformationLength);
2088 ZwSetInformationJobObject(
2089 /*IN*/ HANDLE JobHandle,
2090 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass,
2091 /*IN*/ PVOID JobInformation,
2092 /*IN*/ ULONG JobInformationLength);
2101 /*OUT*/ PHANDLE TokenHandle,
2102 /*IN*/ ACCESS_MASK DesiredAccess,
2103 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2104 /*IN*/ TOKEN_TYPE Type,
2105 /*IN*/ PLUID AuthenticationId,
2106 /*IN*/ PLARGE_INTEGER ExpirationTime,
2107 /*IN*/ PTOKEN_USER User,
2108 /*IN*/ PTOKEN_GROUPS Groups,
2109 /*IN*/ PTOKEN_PRIVILEGES Privileges,
2110 /*IN*/ PTOKEN_OWNER Owner,
2111 /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup,
2112 /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl,
2113 /*IN*/ PTOKEN_SOURCE Source
2120 /*OUT*/ PHANDLE TokenHandle,
2121 /*IN*/ ACCESS_MASK DesiredAccess,
2122 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2123 /*IN*/ TOKEN_TYPE Type,
2124 /*IN*/ PLUID AuthenticationId,
2125 /*IN*/ PLARGE_INTEGER ExpirationTime,
2126 /*IN*/ PTOKEN_USER User,
2127 /*IN*/ PTOKEN_GROUPS Groups,
2128 /*IN*/ PTOKEN_PRIVILEGES Privileges,
2129 /*IN*/ PTOKEN_OWNER Owner,
2130 /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup,
2131 /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl,
2132 /*IN*/ PTOKEN_SOURCE Source
2139 /*IN*/ HANDLE ProcessHandle,
2140 /*IN*/ ACCESS_MASK DesiredAccess,
2141 /*OUT*/ PHANDLE TokenHandle);
2147 /*IN*/ HANDLE ProcessHandle,
2148 /*IN*/ ACCESS_MASK DesiredAccess,
2149 /*OUT*/ PHANDLE TokenHandle);
2155 /*IN*/ HANDLE ThreadHandle,
2156 /*IN*/ ACCESS_MASK DesiredAccess,
2157 /*IN*/ BOOLEAN OpenAsSelf,
2158 /*OUT*/ PHANDLE TokenHandle);
2164 /*IN*/ HANDLE ThreadHandle,
2165 /*IN*/ ACCESS_MASK DesiredAccess,
2166 /*IN*/ BOOLEAN OpenAsSelf,
2167 /*OUT*/ PHANDLE TokenHandle);
2173 /*IN*/ HANDLE ExistingTokenHandle,
2174 /*IN*/ ACCESS_MASK DesiredAccess,
2175 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2176 /*IN*/ BOOLEAN EffectiveOnly,
2177 /*IN*/ TOKEN_TYPE TokenType,
2178 /*OUT*/ PHANDLE NewTokenHandle);
2184 /*IN*/ HANDLE ExistingTokenHandle,
2185 /*IN*/ ACCESS_MASK DesiredAccess,
2186 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2187 /*IN*/ BOOLEAN EffectiveOnly,
2188 /*IN*/ TOKEN_TYPE TokenType,
2189 /*OUT*/ PHANDLE NewTokenHandle);
2195 /*IN*/ HANDLE ExistingTokenHandle,
2197 /*IN*/ PTOKEN_GROUPS SidsToDisable,
2198 /*IN*/ PTOKEN_PRIVILEGES PrivilegesToDelete,
2199 /*IN*/ PTOKEN_GROUPS SidsToRestricted,
2200 /*OUT*/ PHANDLE NewTokenHandle);
2206 /*IN*/ HANDLE ExistingTokenHandle,
2208 /*IN*/ PTOKEN_GROUPS SidsToDisable,
2209 /*IN*/ PTOKEN_PRIVILEGES PrivilegesToDelete,
2210 /*IN*/ PTOKEN_GROUPS SidsToRestricted,
2211 /*OUT*/ PHANDLE NewTokenHandle);
2216 NtAdjustPrivilegesToken(
2217 /*IN*/ HANDLE TokenHandle,
2218 /*IN*/ BOOLEAN DisableAllPrivileges,
2219 /*IN*/ PTOKEN_PRIVILEGES NewState,
2220 /*IN*/ ULONG BufferLength,
2221 /*OUT*/ PTOKEN_PRIVILEGES PreviousState /*OPTIONAL*/,
2222 /*OUT*/ PULONG ReturnLength);
2227 ZwAdjustPrivilegesToken(
2228 /*IN*/ HANDLE TokenHandle,
2229 /*IN*/ BOOLEAN DisableAllPrivileges,
2230 /*IN*/ PTOKEN_PRIVILEGES NewState,
2231 /*IN*/ ULONG BufferLength,
2232 /*OUT*/ PTOKEN_PRIVILEGES PreviousState /*OPTIONAL*/,
2233 /*OUT*/ PULONG ReturnLength);
2238 NtAdjustGroupsToken(
2239 /*IN*/ HANDLE TokenHandle,
2240 /*IN*/ BOOLEAN ResetToDefault,
2241 /*IN*/ PTOKEN_GROUPS NewState,
2242 /*IN*/ ULONG BufferLength,
2243 /*OUT*/ PTOKEN_GROUPS PreviousState /*OPTIONAL*/,
2244 /*OUT*/ PULONG ReturnLength);
2249 ZwAdjustGroupsToken(
2250 /*IN*/ HANDLE TokenHandle,
2251 /*IN*/ BOOLEAN ResetToDefault,
2252 /*IN*/ PTOKEN_GROUPS NewState,
2253 /*IN*/ ULONG BufferLength,
2254 /*OUT*/ PTOKEN_GROUPS PreviousState /*OPTIONAL*/,
2255 /*OUT*/ PULONG ReturnLength);
2260 NtQueryInformationToken(
2261 /*IN*/ HANDLE TokenHandle,
2262 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
2263 /*OUT*/ PVOID TokenInformation,
2264 /*IN*/ ULONG TokenInformationLength,
2265 /*OUT*/ PULONG ReturnLength);
2270 ZwQueryInformationToken(
2271 /*IN*/ HANDLE TokenHandle,
2272 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
2273 /*OUT*/ PVOID TokenInformation,
2274 /*IN*/ ULONG TokenInformationLength,
2275 /*OUT*/ PULONG ReturnLength);
2280 NtSetInformationToken(
2281 /*IN*/ HANDLE TokenHandle,
2282 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
2283 /*IN*/ PVOID TokenInformation,
2284 /*IN*/ ULONG TokenInformationLength);
2289 ZwSetInformationToken(
2290 /*IN*/ HANDLE TokenHandle,
2291 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass,
2292 /*IN*/ PVOID TokenInformation,
2293 /*IN*/ ULONG TokenInformationLength);
2304 /*OUT*/ PLARGE_INTEGER CurrentTime);
2310 /*OUT*/ PLARGE_INTEGER CurrentTime);
2316 /*IN*/ PLARGE_INTEGER NewTime,
2317 /*OUT*/ PLARGE_INTEGER OldTime /*OPTIONAL*/);
2323 /*IN*/ PLARGE_INTEGER NewTime,
2324 /*OUT*/ PLARGE_INTEGER OldTime /*OPTIONAL*/);
2329 NtQueryPerformanceCounter(
2330 /*OUT*/ PLARGE_INTEGER PerformanceCount,
2331 /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/);
2336 ZwQueryPerformanceCounter(
2337 /*OUT*/ PLARGE_INTEGER PerformanceCount,
2338 /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/);
2343 NtQueryTimerResolution(
2344 /*OUT*/ PULONG CoarsestResolution,
2345 /*OUT*/ PULONG FinestResolution,
2346 /*OUT*/ PULONG ActualResolution);
2351 ZwQueryTimerResolution(
2352 /*OUT*/ PULONG CoarsestResolution,
2353 /*OUT*/ PULONG FinestResolution,
2354 /*OUT*/ PULONG ActualResolution);
2360 /*IN*/ BOOLEAN Alertable,
2361 /*IN*/ PLARGE_INTEGER Interval);
2367 /*IN*/ BOOLEAN Alertable,
2368 /*IN*/ PLARGE_INTEGER Interval);
2397 /* Execution profiling */
2403 /*OUT*/ PHANDLE ProfileHandle,
2404 /*IN*/ HANDLE ProcessHandle,
2407 /*IN*/ ULONG BucketShift,
2408 /*IN*/ PULONG Buffer,
2409 /*IN*/ ULONG BufferLength,
2410 /*IN*/ KPROFILE_SOURCE Source,
2411 /*IN*/ ULONG ProcessorMask);
2417 /*OUT*/ PHANDLE ProfileHandle,
2418 /*IN*/ HANDLE ProcessHandle,
2421 /*IN*/ ULONG BucketShift,
2422 /*IN*/ PULONG Buffer,
2423 /*IN*/ ULONG BufferLength,
2424 /*IN*/ KPROFILE_SOURCE Source,
2425 /*IN*/ ULONG ProcessorMask);
2430 NtSetIntervalProfile(
2431 /*IN*/ ULONG Interval,
2432 /*IN*/ KPROFILE_SOURCE Source);
2437 ZwSetIntervalProfile(
2438 /*IN*/ ULONG Interval,
2439 /*IN*/ KPROFILE_SOURCE Source);
2444 NtQueryIntervalProfile(
2445 /*IN*/ KPROFILE_SOURCE Source,
2446 /*OUT*/ PULONG Interval);
2451 ZwQueryIntervalProfile(
2452 /*IN*/ KPROFILE_SOURCE Source,
2453 /*OUT*/ PULONG Interval);
2459 /*IN*/ HANDLE ProfileHandle);
2465 /*IN*/ HANDLE ProfileHandle);
2471 /*IN*/ HANDLE ProfileHandle);
2477 /*IN*/ HANDLE ProfileHandle);
2479 /* Local Procedure Call (LPC) */
2481 typedef struct _LPC_MESSAGE {
2485 USHORT VirtualRangesOffset;
2489 UCHAR Data[ANYSIZE_ARRAY];
2490 } LPC_MESSAGE, *PLPC_MESSAGE;
2492 #define LPC_MESSAGE_BASE_SIZE 24
2494 typedef enum _LPC_TYPE {
2505 LPC_CONNECTION_REQUEST,
2506 LPC_CONNECTION_REFUSED,
2510 typedef struct _LPC_SECTION_WRITE {
2512 HANDLE SectionHandle;
2513 ULONG SectionOffset;
2516 PVOID TargetViewBase;
2517 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
2519 typedef struct _LPC_SECTION_READ {
2523 } LPC_SECTION_READ, *PLPC_SECTION_READ;
2529 /*OUT*/ PHANDLE PortHandle,
2530 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2531 /*IN*/ ULONG MaxDataSize,
2532 /*IN*/ ULONG MaxMessageSize,
2533 /*IN*/ ULONG Reserved);
2539 /*OUT*/ PHANDLE PortHandle,
2540 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2541 /*IN*/ ULONG MaxDataSize,
2542 /*IN*/ ULONG MaxMessageSize,
2543 /*IN*/ ULONG Reserved);
2548 NtCreateWaitablePort(
2549 /*OUT*/ PHANDLE PortHandle,
2550 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2551 /*IN*/ ULONG MaxDataSize,
2552 /*IN*/ ULONG MaxMessageSize,
2553 /*IN*/ ULONG Reserved);
2558 ZwCreateWaitablePort(
2559 /*OUT*/ PHANDLE PortHandle,
2560 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes,
2561 /*IN*/ ULONG MaxDataSize,
2562 /*IN*/ ULONG MaxMessageSize,
2563 /*IN*/ ULONG Reserved);
2569 /*OUT*/ PHANDLE PortHandle,
2570 /*IN*/ PUNICODE_STRING PortName,
2571 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos,
2572 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/,
2573 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/,
2574 /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/,
2575 /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/,
2576 /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/);
2582 /*OUT*/ PHANDLE PortHandle,
2583 /*IN*/ PUNICODE_STRING PortName,
2584 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos,
2585 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/,
2586 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/,
2587 /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/,
2588 /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/,
2589 /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/);
2595 /*IN*/ HANDLE PortHandle,
2596 /*OUT*/ PLPC_MESSAGE Message);
2602 /*IN*/ HANDLE PortHandle,
2603 /*OUT*/ PLPC_MESSAGE Message);
2608 NtAcceptConnectPort(
2609 /*OUT*/ PHANDLE PortHandle,
2610 /*IN*/ ULONG PortIdentifier,
2611 /*IN*/ PLPC_MESSAGE Message,
2612 /*IN*/ BOOLEAN Accept,
2613 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/,
2614 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/);
2619 ZwAcceptConnectPort(
2620 /*OUT*/ PHANDLE PortHandle,
2621 /*IN*/ ULONG PortIdentifier,
2622 /*IN*/ PLPC_MESSAGE Message,
2623 /*IN*/ BOOLEAN Accept,
2624 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/,
2625 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/);
2630 NtCompleteConnectPort(
2631 /*IN*/ HANDLE PortHandle);
2636 ZwCompleteConnectPort(
2637 /*IN*/ HANDLE PortHandle);
2643 /*IN*/ HANDLE PortHandle,
2644 /*IN*/ PLPC_MESSAGE RequestMessage);
2650 /*IN*/ HANDLE PortHandle,
2651 /*IN*/ PLPC_MESSAGE RequestMessage);
2656 NtRequestWaitReplyPort(
2657 /*IN*/ HANDLE PortHandle,
2658 /*IN*/ PLPC_MESSAGE RequestMessage,
2659 /*OUT*/ PLPC_MESSAGE ReplyMessage);
2664 ZwRequestWaitReplyPort(
2665 /*IN*/ HANDLE PortHandle,
2666 /*IN*/ PLPC_MESSAGE RequestMessage,
2667 /*OUT*/ PLPC_MESSAGE ReplyMessage);
2673 /*IN*/ HANDLE PortHandle,
2674 /*IN*/ PLPC_MESSAGE ReplyMessage);
2680 /*IN*/ HANDLE PortHandle,
2681 /*IN*/ PLPC_MESSAGE ReplyMessage);
2686 NtReplyWaitReplyPort(
2687 /*IN*/ HANDLE PortHandle,
2688 /*IN OUT*/ PLPC_MESSAGE ReplyMessage);
2693 ZwReplyWaitReplyPort(
2694 /*IN*/ HANDLE PortHandle,
2695 /*IN OUT*/ PLPC_MESSAGE ReplyMessage);
2700 NtReplyWaitReceivePort(
2701 /*IN*/ HANDLE PortHandle,
2702 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/,
2703 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/,
2704 /*OUT*/ PLPC_MESSAGE Message);
2709 ZwReplyWaitReceivePort(
2710 /*IN*/ HANDLE PortHandle,
2711 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/,
2712 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/,
2713 /*OUT*/ PLPC_MESSAGE Message);
2718 NtReplyWaitReceivePortEx(
2719 /*IN*/ HANDLE PortHandle,
2720 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/,
2721 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/,
2722 /*OUT*/ PLPC_MESSAGE Message,
2723 /*IN*/ PLARGE_INTEGER Timeout);
2728 ZwReplyWaitReceivePortEx(
2729 /*IN*/ HANDLE PortHandle,
2730 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/,
2731 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/,
2732 /*OUT*/ PLPC_MESSAGE Message,
2733 /*IN*/ PLARGE_INTEGER Timeout);
2739 /*IN*/ HANDLE PortHandle,
2740 /*IN*/ PLPC_MESSAGE Message,
2742 /*OUT*/ PVOID Buffer,
2743 /*IN*/ ULONG BufferLength,
2744 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2750 /*IN*/ HANDLE PortHandle,
2751 /*IN*/ PLPC_MESSAGE Message,
2753 /*OUT*/ PVOID Buffer,
2754 /*IN*/ ULONG BufferLength,
2755 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2761 /*IN*/ HANDLE PortHandle,
2762 /*IN*/ PLPC_MESSAGE Message,
2764 /*IN*/ PVOID Buffer,
2765 /*IN*/ ULONG BufferLength,
2766 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2772 /*IN*/ HANDLE PortHandle,
2773 /*IN*/ PLPC_MESSAGE Message,
2775 /*IN*/ PVOID Buffer,
2776 /*IN*/ ULONG BufferLength,
2777 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2779 typedef enum _PORT_INFORMATION_CLASS {
2780 PortBasicInformation
2781 } PORT_INFORMATION_CLASS;
2786 NtQueryInformationPort(
2787 /*IN*/ HANDLE PortHandle,
2788 /*IN*/ PORT_INFORMATION_CLASS PortInformationClass,
2789 /*OUT*/ PVOID PortInformation,
2790 /*IN*/ ULONG PortInformationLength,
2791 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2796 ZwQueryInformationPort(
2797 /*IN*/ HANDLE PortHandle,
2798 /*IN*/ PORT_INFORMATION_CLASS PortInformationClass,
2799 /*OUT*/ PVOID PortInformation,
2800 /*IN*/ ULONG PortInformationLength,
2801 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
2806 NtImpersonateClientOfPort(
2807 /*IN*/ HANDLE PortHandle,
2808 /*IN*/ PLPC_MESSAGE Message);
2813 ZwImpersonateClientOfPort(
2814 /*IN*/ HANDLE PortHandle,
2815 /*IN*/ PLPC_MESSAGE Message);
2826 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2832 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);
2838 /*IN*/ HANDLE FileHandle,
2839 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
2845 /*IN*/ HANDLE FileHandle,
2846 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
2852 /*IN*/ HANDLE FileHandle,
2853 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
2859 /*IN*/ HANDLE FileHandle,
2860 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);
2866 /*IN*/ HANDLE FileHandle,
2867 /*IN*/ HANDLE Event /*OPTIONAL*/,
2868 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
2869 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
2870 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
2871 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer,
2872 /*IN*/ ULONG Length,
2873 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
2874 /*IN*/ PULONG Key /*OPTIONAL*/);
2880 /*IN*/ HANDLE FileHandle,
2881 /*IN*/ HANDLE Event /*OPTIONAL*/,
2882 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
2883 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
2884 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
2885 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer,
2886 /*IN*/ ULONG Length,
2887 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
2888 /*IN*/ PULONG Key /*OPTIONAL*/);
2894 /*IN*/ HANDLE FileHandle,
2895 /*IN*/ HANDLE Event /*OPTIONAL*/,
2896 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
2897 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
2898 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
2899 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer,
2900 /*IN*/ ULONG Length,
2901 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
2902 /*IN*/ PULONG Key /*OPTIONAL*/);
2908 /*IN*/ HANDLE FileHandle,
2909 /*IN*/ HANDLE Event /*OPTIONAL*/,
2910 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
2911 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
2912 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
2913 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer,
2914 /*IN*/ ULONG Length,
2915 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/,
2916 /*IN*/ PULONG Key /*OPTIONAL*/);
2927 /*IN*/ HANDLE KeyHandle,
2928 /*IN*/ HANDLE FileHandle);
2934 /*IN*/ HANDLE KeyHandle,
2935 /*IN*/ HANDLE FileHandle);
2941 /*IN*/ HANDLE KeyHandle1,
2942 /*IN*/ HANDLE KeyHandle2,
2943 /*IN*/ HANDLE FileHandle);
2949 /*IN*/ HANDLE KeyHandle1,
2950 /*IN*/ HANDLE KeyHandle2,
2951 /*IN*/ HANDLE FileHandle);
2957 /*IN*/ HANDLE KeyHandle,
2958 /*IN*/ HANDLE FileHandle,
2959 /*IN*/ ULONG Flags);
2965 /*IN*/ HANDLE KeyHandle,
2966 /*IN*/ HANDLE FileHandle,
2967 /*IN*/ ULONG Flags);
2973 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
2974 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes);
2980 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
2981 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes);
2987 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
2988 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes,
2989 /*IN*/ ULONG Flags);
2995 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
2996 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes,
2997 /*IN*/ ULONG Flags);
3003 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes);
3009 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes);
3015 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3016 /*OUT*/ PULONG NumberOfKeys);
3022 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3023 /*OUT*/ PULONG NumberOfKeys);
3029 /*IN*/ POBJECT_ATTRIBUTES NewFileObjectAttributes,
3030 /*IN*/ HANDLE KeyHandle,
3031 /*IN*/ POBJECT_ATTRIBUTES OldFileObjectAttributes);
3037 /*IN*/ POBJECT_ATTRIBUTES NewFileObjectAttributes,
3038 /*IN*/ HANDLE KeyHandle,
3039 /*IN*/ POBJECT_ATTRIBUTES OldFileObjectAttributes);
3041 typedef enum _KEY_SET_INFORMATION_CLASS {
3042 KeyLastWriteTimeInformation
3043 } KEY_SET_INFORMATION_CLASS;
3048 NtSetInformationKey(
3049 /*IN*/ HANDLE KeyHandle,
3050 /*IN*/ KEY_SET_INFORMATION_CLASS KeyInformationClass,
3051 /*IN*/ PVOID KeyInformation,
3052 /*IN*/ ULONG KeyInformationLength);
3057 ZwSetInformationKey(
3058 /*IN*/ HANDLE KeyHandle,
3059 /*IN*/ KEY_SET_INFORMATION_CLASS KeyInformationClass,
3060 /*IN*/ PVOID KeyInformation,
3061 /*IN*/ ULONG KeyInformationLength);
3063 typedef struct _KEY_LAST_WRITE_TIME_INFORMATION {
3064 LARGE_INTEGER LastWriteTime;
3065 } KEY_LAST_WRITE_TIME_INFORMATION, *PKEY_LAST_WRITE_TIME_INFORMATION;
3067 typedef struct _KEY_NAME_INFORMATION {
3070 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
3076 /*IN*/ HANDLE KeyHandle,
3077 /*IN*/ HANDLE EventHandle /*OPTIONAL*/,
3078 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
3079 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
3080 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
3081 /*IN*/ ULONG NotifyFilter,
3082 /*IN*/ BOOLEAN WatchSubtree,
3083 /*IN*/ PVOID Buffer,
3084 /*IN*/ ULONG BufferLength,
3085 /*IN*/ BOOLEAN Asynchronous);
3091 /*IN*/ HANDLE KeyHandle,
3092 /*IN*/ HANDLE EventHandle /*OPTIONAL*/,
3093 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
3094 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
3095 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
3096 /*IN*/ ULONG NotifyFilter,
3097 /*IN*/ BOOLEAN WatchSubtree,
3098 /*IN*/ PVOID Buffer,
3099 /*IN*/ ULONG BufferLength,
3100 /*IN*/ BOOLEAN Asynchronous);
3102 /* ZwNotifyChangeMultipleKeys.Flags constants */
3103 #define REG_MONITOR_SINGLE_KEY 0x00
3104 #define REG_MONITOR_SECOND_KEY 0x01
3109 NtNotifyChangeMultipleKeys(
3110 /*IN*/ HANDLE KeyHandle,
3112 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3113 /*IN*/ HANDLE EventHandle /*OPTIONAL*/,
3114 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
3115 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
3116 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
3117 /*IN*/ ULONG NotifyFilter,
3118 /*IN*/ BOOLEAN WatchSubtree,
3119 /*IN*/ PVOID Buffer,
3120 /*IN*/ ULONG BufferLength,
3121 /*IN*/ BOOLEAN Asynchronous);
3126 ZwNotifyChangeMultipleKeys(
3127 /*IN*/ HANDLE KeyHandle,
3129 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes,
3130 /*IN*/ HANDLE EventHandle /*OPTIONAL*/,
3131 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/,
3132 /*IN*/ PVOID ApcContext /*OPTIONAL*/,
3133 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock,
3134 /*IN*/ ULONG NotifyFilter,
3135 /*IN*/ BOOLEAN WatchSubtree,
3136 /*IN*/ PVOID Buffer,
3137 /*IN*/ ULONG BufferLength,
3138 /*IN*/ BOOLEAN Asynchronous);
3143 NtQueryMultipleValueKey(
3144 /*IN*/ HANDLE KeyHandle,
3145 /*IN OUT*/ PKEY_VALUE_ENTRY ValueList,
3146 /*IN*/ ULONG NumberOfValues,
3147 /*OUT*/ PVOID Buffer,
3148 /*IN OUT*/ PULONG Length,
3149 /*OUT*/ PULONG ReturnLength);
3154 ZwQueryMultipleValueKey(
3155 /*IN*/ HANDLE KeyHandle,
3156 /*IN OUT*/ PKEY_VALUE_ENTRY ValueList,
3157 /*IN*/ ULONG NumberOfValues,
3158 /*OUT*/ PVOID Buffer,
3159 /*IN OUT*/ PULONG Length,
3160 /*OUT*/ PULONG ReturnLength);
3165 NtInitializeRegistry(
3166 /*IN*/ BOOLEAN Setup);
3171 ZwInitializeRegistry(
3172 /*IN*/ BOOLEAN Setup);
3177 /* Security and auditing */
3183 /*IN*/ HANDLE TokenHandle,
3184 /*IN*/ PPRIVILEGE_SET RequiredPrivileges,
3185 /*OUT*/ PBOOLEAN Result);
3191 /*IN*/ HANDLE TokenHandle,
3192 /*IN*/ PPRIVILEGE_SET RequiredPrivileges,
3193 /*OUT*/ PBOOLEAN Result);
3198 NtPrivilegeObjectAuditAlarm(
3199 /*IN*/ PUNICODE_STRING SubsystemName,
3200 /*IN*/ PVOID HandleId,
3201 /*IN*/ HANDLE TokenHandle,
3202 /*IN*/ ACCESS_MASK DesiredAccess,
3203 /*IN*/ PPRIVILEGE_SET Privileges,
3204 /*IN*/ BOOLEAN AccessGranted);
3209 ZwPrivilegeObjectAuditAlarm(
3210 /*IN*/ PUNICODE_STRING SubsystemName,
3211 /*IN*/ PVOID HandleId,
3212 /*IN*/ HANDLE TokenHandle,
3213 /*IN*/ ACCESS_MASK DesiredAccess,
3214 /*IN*/ PPRIVILEGE_SET Privileges,
3215 /*IN*/ BOOLEAN AccessGranted);
3221 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3222 /*IN*/ HANDLE TokenHandle,
3223 /*IN*/ ACCESS_MASK DesiredAccess,
3224 /*IN*/ PGENERIC_MAPPING GenericMapping,
3225 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3226 /*IN*/ PULONG PrivilegeSetLength,
3227 /*OUT*/ PACCESS_MASK GrantedAccess,
3228 /*OUT*/ PBOOLEAN AccessStatus);
3234 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3235 /*IN*/ HANDLE TokenHandle,
3236 /*IN*/ ACCESS_MASK DesiredAccess,
3237 /*IN*/ PGENERIC_MAPPING GenericMapping,
3238 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3239 /*IN*/ PULONG PrivilegeSetLength,
3240 /*OUT*/ PACCESS_MASK GrantedAccess,
3241 /*OUT*/ PBOOLEAN AccessStatus);
3246 NtAccessCheckAndAuditAlarm(
3247 /*IN*/ PUNICODE_STRING SubsystemName,
3248 /*IN*/ PVOID HandleId,
3249 /*IN*/ PUNICODE_STRING ObjectTypeName,
3250 /*IN*/ PUNICODE_STRING ObjectName,
3251 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3252 /*IN*/ ACCESS_MASK DesiredAccess,
3253 /*IN*/ PGENERIC_MAPPING GenericMapping,
3254 /*IN*/ BOOLEAN ObjectCreation,
3255 /*OUT*/ PACCESS_MASK GrantedAccess,
3256 /*OUT*/ PBOOLEAN AccessStatus,
3257 /*OUT*/ PBOOLEAN GenerateOnClose);
3262 ZwAccessCheckAndAuditAlarm(
3263 /*IN*/ PUNICODE_STRING SubsystemName,
3264 /*IN*/ PVOID HandleId,
3265 /*IN*/ PUNICODE_STRING ObjectTypeName,
3266 /*IN*/ PUNICODE_STRING ObjectName,
3267 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3268 /*IN*/ ACCESS_MASK DesiredAccess,
3269 /*IN*/ PGENERIC_MAPPING GenericMapping,
3270 /*IN*/ BOOLEAN ObjectCreation,
3271 /*OUT*/ PACCESS_MASK GrantedAccess,
3272 /*OUT*/ PBOOLEAN AccessStatus,
3273 /*OUT*/ PBOOLEAN GenerateOnClose);
3278 NtAccessCheckByType(
3279 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3280 /*IN*/ PSID PrincipalSelfSid,
3281 /*IN*/ HANDLE TokenHandle,
3282 /*IN*/ ULONG DesiredAccess,
3283 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3284 /*IN*/ ULONG ObjectTypeListLength,
3285 /*IN*/ PGENERIC_MAPPING GenericMapping,
3286 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3287 /*IN*/ PULONG PrivilegeSetLength,
3288 /*OUT*/ PACCESS_MASK GrantedAccess,
3289 /*OUT*/ PULONG AccessStatus);
3294 ZwAccessCheckByType(
3295 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3296 /*IN*/ PSID PrincipalSelfSid,
3297 /*IN*/ HANDLE TokenHandle,
3298 /*IN*/ ULONG DesiredAccess,
3299 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3300 /*IN*/ ULONG ObjectTypeListLength,
3301 /*IN*/ PGENERIC_MAPPING GenericMapping,
3302 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3303 /*IN*/ PULONG PrivilegeSetLength,
3304 /*OUT*/ PACCESS_MASK GrantedAccess,
3305 /*OUT*/ PULONG AccessStatus);
3307 typedef enum _AUDIT_EVENT_TYPE {
3308 AuditEventObjectAccess,
3309 AuditEventDirectoryServiceAccess
3310 } AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE;
3315 NtAccessCheckByTypeAndAuditAlarm(
3316 /*IN*/ PUNICODE_STRING SubsystemName,
3317 /*IN*/ PVOID HandleId,
3318 /*IN*/ PUNICODE_STRING ObjectTypeName,
3319 /*IN*/ PUNICODE_STRING ObjectName,
3320 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3321 /*IN*/ PSID PrincipalSelfSid,
3322 /*IN*/ ACCESS_MASK DesiredAccess,
3323 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3325 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3326 /*IN*/ ULONG ObjectTypeListLength,
3327 /*IN*/ PGENERIC_MAPPING GenericMapping,
3328 /*IN*/ BOOLEAN ObjectCreation,
3329 /*OUT*/ PACCESS_MASK GrantedAccess,
3330 /*OUT*/ PULONG AccessStatus,
3331 /*OUT*/ PBOOLEAN GenerateOnClose);
3336 ZwAccessCheckByTypeAndAuditAlarm(
3337 /*IN*/ PUNICODE_STRING SubsystemName,
3338 /*IN*/ PVOID HandleId,
3339 /*IN*/ PUNICODE_STRING ObjectTypeName,
3340 /*IN*/ PUNICODE_STRING ObjectName,
3341 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3342 /*IN*/ PSID PrincipalSelfSid,
3343 /*IN*/ ACCESS_MASK DesiredAccess,
3344 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3346 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3347 /*IN*/ ULONG ObjectTypeListLength,
3348 /*IN*/ PGENERIC_MAPPING GenericMapping,
3349 /*IN*/ BOOLEAN ObjectCreation,
3350 /*OUT*/ PACCESS_MASK GrantedAccess,
3351 /*OUT*/ PULONG AccessStatus,
3352 /*OUT*/ PBOOLEAN GenerateOnClose);
3357 NtAccessCheckByTypeResultList(
3358 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3359 /*IN*/ PSID PrincipalSelfSid,
3360 /*IN*/ HANDLE TokenHandle,
3361 /*IN*/ ACCESS_MASK DesiredAccess,
3362 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3363 /*IN*/ ULONG ObjectTypeListLength,
3364 /*IN*/ PGENERIC_MAPPING GenericMapping,
3365 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3366 /*IN*/ PULONG PrivilegeSetLength,
3367 /*OUT*/ PACCESS_MASK GrantedAccessList,
3368 /*OUT*/ PULONG AccessStatusList);
3373 ZwAccessCheckByTypeResultList(
3374 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3375 /*IN*/ PSID PrincipalSelfSid,
3376 /*IN*/ HANDLE TokenHandle,
3377 /*IN*/ ACCESS_MASK DesiredAccess,
3378 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3379 /*IN*/ ULONG ObjectTypeListLength,
3380 /*IN*/ PGENERIC_MAPPING GenericMapping,
3381 /*IN*/ PPRIVILEGE_SET PrivilegeSet,
3382 /*IN*/ PULONG PrivilegeSetLength,
3383 /*OUT*/ PACCESS_MASK GrantedAccessList,
3384 /*OUT*/ PULONG AccessStatusList);
3389 NtAccessCheckByTypeResultListAndAuditAlarm(
3390 /*IN*/ PUNICODE_STRING SubsystemName,
3391 /*IN*/ PVOID HandleId,
3392 /*IN*/ PUNICODE_STRING ObjectTypeName,
3393 /*IN*/ PUNICODE_STRING ObjectName,
3394 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3395 /*IN*/ PSID PrincipalSelfSid,
3396 /*IN*/ ACCESS_MASK DesiredAccess,
3397 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3399 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3400 /*IN*/ ULONG ObjectTypeListLength,
3401 /*IN*/ PGENERIC_MAPPING GenericMapping,
3402 /*IN*/ BOOLEAN ObjectCreation,
3403 /*OUT*/ PACCESS_MASK GrantedAccessList,
3404 /*OUT*/ PULONG AccessStatusList,
3405 /*OUT*/ PULONG GenerateOnClose);
3410 ZwAccessCheckByTypeResultListAndAuditAlarm(
3411 /*IN*/ PUNICODE_STRING SubsystemName,
3412 /*IN*/ PVOID HandleId,
3413 /*IN*/ PUNICODE_STRING ObjectTypeName,
3414 /*IN*/ PUNICODE_STRING ObjectName,
3415 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3416 /*IN*/ PSID PrincipalSelfSid,
3417 /*IN*/ ACCESS_MASK DesiredAccess,
3418 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3420 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3421 /*IN*/ ULONG ObjectTypeListLength,
3422 /*IN*/ PGENERIC_MAPPING GenericMapping,
3423 /*IN*/ BOOLEAN ObjectCreation,
3424 /*OUT*/ PACCESS_MASK GrantedAccessList,
3425 /*OUT*/ PULONG AccessStatusList,
3426 /*OUT*/ PULONG GenerateOnClose);
3431 NtAccessCheckByTypeResultListAndAuditAlarmByHandle(
3432 /*IN*/ PUNICODE_STRING SubsystemName,
3433 /*IN*/ PVOID HandleId,
3434 /*IN*/ HANDLE TokenHandle,
3435 /*IN*/ PUNICODE_STRING ObjectTypeName,
3436 /*IN*/ PUNICODE_STRING ObjectName,
3437 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3438 /*IN*/ PSID PrincipalSelfSid,
3439 /*IN*/ ACCESS_MASK DesiredAccess,
3440 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3442 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3443 /*IN*/ ULONG ObjectTypeListLength,
3444 /*IN*/ PGENERIC_MAPPING GenericMapping,
3445 /*IN*/ BOOLEAN ObjectCreation,
3446 /*OUT*/ PACCESS_MASK GrantedAccessList,
3447 /*OUT*/ PULONG AccessStatusList,
3448 /*OUT*/ PULONG GenerateOnClose);
3453 ZwAccessCheckByTypeResultListAndAuditAlarmByHandle(
3454 /*IN*/ PUNICODE_STRING SubsystemName,
3455 /*IN*/ PVOID HandleId,
3456 /*IN*/ HANDLE TokenHandle,
3457 /*IN*/ PUNICODE_STRING ObjectTypeName,
3458 /*IN*/ PUNICODE_STRING ObjectName,
3459 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3460 /*IN*/ PSID PrincipalSelfSid,
3461 /*IN*/ ACCESS_MASK DesiredAccess,
3462 /*IN*/ AUDIT_EVENT_TYPE AuditType,
3464 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList,
3465 /*IN*/ ULONG ObjectTypeListLength,
3466 /*IN*/ PGENERIC_MAPPING GenericMapping,
3467 /*IN*/ BOOLEAN ObjectCreation,
3468 /*OUT*/ PACCESS_MASK GrantedAccessList,
3469 /*OUT*/ PULONG AccessStatusList,
3470 /*OUT*/ PULONG GenerateOnClose);
3475 NtOpenObjectAuditAlarm(
3476 /*IN*/ PUNICODE_STRING SubsystemName,
3477 /*IN*/ PVOID *HandleId,
3478 /*IN*/ PUNICODE_STRING ObjectTypeName,
3479 /*IN*/ PUNICODE_STRING ObjectName,
3480 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3481 /*IN*/ HANDLE TokenHandle,
3482 /*IN*/ ACCESS_MASK DesiredAccess,
3483 /*IN*/ ACCESS_MASK GrantedAccess,
3484 /*IN*/ PPRIVILEGE_SET Privileges /*OPTIONAL*/,
3485 /*IN*/ BOOLEAN ObjectCreation,
3486 /*IN*/ BOOLEAN AccessGranted,
3487 /*OUT*/ PBOOLEAN GenerateOnClose);
3492 ZwOpenObjectAuditAlarm(
3493 /*IN*/ PUNICODE_STRING SubsystemName,
3494 /*IN*/ PVOID *HandleId,
3495 /*IN*/ PUNICODE_STRING ObjectTypeName,
3496 /*IN*/ PUNICODE_STRING ObjectName,
3497 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor,
3498 /*IN*/ HANDLE TokenHandle,
3499 /*IN*/ ACCESS_MASK DesiredAccess,
3500 /*IN*/ ACCESS_MASK GrantedAccess,
3501 /*IN*/ PPRIVILEGE_SET Privileges /*OPTIONAL*/,
3502 /*IN*/ BOOLEAN ObjectCreation,
3503 /*IN*/ BOOLEAN AccessGranted,
3504 /*OUT*/ PBOOLEAN GenerateOnClose);
3509 NtCloseObjectAuditAlarm(
3510 /*IN*/ PUNICODE_STRING SubsystemName,
3511 /*IN*/ PVOID HandleId,
3512 /*IN*/ BOOLEAN GenerateOnClose);
3517 ZwCloseObjectAuditAlarm(
3518 /*IN*/ PUNICODE_STRING SubsystemName,
3519 /*IN*/ PVOID HandleId,
3520 /*IN*/ BOOLEAN GenerateOnClose);
3525 NtDeleteObjectAuditAlarm(
3526 /*IN*/ PUNICODE_STRING SubsystemName,
3527 /*IN*/ PVOID HandleId,
3528 /*IN*/ BOOLEAN GenerateOnClose);
3533 ZwDeleteObjectAuditAlarm(
3534 /*IN*/ PUNICODE_STRING SubsystemName,
3535 /*IN*/ PVOID HandleId,
3536 /*IN*/ BOOLEAN GenerateOnClose);
3541 /* Plug and play and power management */
3546 ZwRequestWakeupLatency(
3547 /*IN*/ LATENCY_TIME Latency);
3552 ZwRequestDeviceWakeup(
3553 /*IN*/ HANDLE DeviceHandle);
3558 ZwCancelDeviceWakeupRequest(
3559 /*IN*/ HANDLE DeviceHandle);
3564 ZwIsSystemResumeAutomatic(
3570 ZwSetThreadExecutionState(
3571 /*IN*/ EXECUTION_STATE ExecutionState,
3572 /*OUT*/ PEXECUTION_STATE PreviousExecutionState);
3577 ZwGetDevicePowerState(
3578 /*IN*/ HANDLE DeviceHandle,
3579 /*OUT*/ PDEVICE_POWER_STATE DevicePowerState);
3584 ZwSetSystemPowerState(
3585 /*IN*/ POWER_ACTION SystemAction,
3586 /*IN*/ SYSTEM_POWER_STATE MinSystemState,
3587 /*IN*/ ULONG Flags);
3592 ZwInitiatePowerAction(
3593 /*IN*/ POWER_ACTION SystemAction,
3594 /*IN*/ SYSTEM_POWER_STATE MinSystemState,
3596 /*IN*/ BOOLEAN Asynchronous);
3602 /*IN*/ POWER_INFORMATION_LEVEL PowerInformationLevel,
3603 /*IN*/ PVOID InputBuffer /*OPTIONAL*/,
3604 /*IN*/ ULONG InputBufferLength,
3605 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/,
3606 /*IN*/ ULONG OutputBufferLength);
3612 /*IN*/ ULONG ControlCode,
3613 /*IN OUT*/ PVOID Buffer,
3614 /*IN*/ ULONG BufferLength);
3620 /*IN*/ ULONG ControlCode,
3621 /*IN OUT*/ PVOID Buffer,
3622 /*IN*/ ULONG BufferLength);
3628 /*IN*/ ULONG Reserved1,
3629 /*IN*/ ULONG Reserved2,
3630 /*OUT*/ PVOID Buffer,
3631 /*IN*/ ULONG BufferLength);
3637 /*IN*/ ULONG Reserved1,
3638 /*IN*/ ULONG Reserved2,
3639 /*OUT*/ PVOID Buffer,
3640 /*IN*/ ULONG BufferLength);
3651 /*IN*/ PEXCEPTION_RECORD ExceptionRecord,
3652 /*IN*/ PCONTEXT Context,
3653 /*IN*/ BOOLEAN SearchFrames);
3659 /*IN*/ PEXCEPTION_RECORD ExceptionRecord,
3660 /*IN*/ PCONTEXT Context,
3661 /*IN*/ BOOLEAN SearchFrames);
3667 /*IN*/ PCONTEXT Context,
3668 /*IN*/ BOOLEAN TestAlert);
3674 /*IN*/ PCONTEXT Context,
3675 /*IN*/ BOOLEAN TestAlert);
3681 /*IN*/ ULONG RoutineIndex,
3682 /*IN*/ PVOID Argument,
3683 /*IN*/ ULONG ArgumentLength,
3684 /*OUT*/ PVOID *Result /*OPTIONAL*/,
3685 /*OUT*/ PULONG ResultLength /*OPTIONAL*/);
3690 NtSetLowWaitHighThread(
3696 ZwSetLowWaitHighThread(
3702 NtSetHighWaitLowThread(
3708 ZwSetHighWaitLowThread(
3715 /*IN*/ PUNICODE_STRING DriverServiceName);
3721 /*IN*/ PUNICODE_STRING DriverServiceName);
3727 /*IN*/ PUNICODE_STRING DriverServiceName);
3733 /*IN*/ PUNICODE_STRING DriverServiceName);
3738 NtFlushInstructionCache(
3739 /*IN*/ HANDLE ProcessHandle,
3740 /*IN*/ PVOID BaseAddress /*OPTIONAL*/,
3741 /*IN*/ ULONG FlushSize);
3746 ZwFlushInstructionCache(
3747 /*IN*/ HANDLE ProcessHandle,
3748 /*IN*/ PVOID BaseAddress /*OPTIONAL*/,
3749 /*IN*/ ULONG FlushSize);
3766 NtQueryDefaultLocale(
3767 /*IN*/ BOOLEAN ThreadOrSystem,
3768 /*OUT*/ PLCID Locale);
3773 ZwQueryDefaultLocale(
3774 /*IN*/ BOOLEAN ThreadOrSystem,
3775 /*OUT*/ PLCID Locale);
3781 /*IN*/ BOOLEAN ThreadOrSystem,
3782 /*IN*/ LCID Locale);
3788 /*IN*/ BOOLEAN ThreadOrSystem,
3789 /*IN*/ LCID Locale);
3794 NtQueryDefaultUILanguage(
3795 /*OUT*/ PLANGID LanguageId);
3800 ZwQueryDefaultUILanguage(
3801 /*OUT*/ PLANGID LanguageId);
3806 NtSetDefaultUILanguage(
3807 /*IN*/ LANGID LanguageId);
3812 ZwSetDefaultUILanguage(
3813 /*IN*/ LANGID LanguageId);
3818 NtQueryInstallUILanguage(
3819 /*OUT*/ PLANGID LanguageId);
3824 ZwQueryInstallUILanguage(
3825 /*OUT*/ PLANGID LanguageId);
3830 NtAllocateLocallyUniqueId(
3831 /*OUT*/ PLUID Luid);
3837 /*OUT*/ PLARGE_INTEGER UuidLastTimeAllocated,
3838 /*OUT*/ PULONG UuidDeltaTime,
3839 /*OUT*/ PULONG UuidSequenceNumber,
3840 /*OUT*/ PUCHAR UuidSeed);
3846 /*OUT*/ PLARGE_INTEGER UuidLastTimeAllocated,
3847 /*OUT*/ PULONG UuidDeltaTime,
3848 /*OUT*/ PULONG UuidSequenceNumber,
3849 /*OUT*/ PUCHAR UuidSeed);
3855 /*IN*/ PUCHAR UuidSeed);
3861 /*IN*/ PUCHAR UuidSeed);
3863 typedef enum _HARDERROR_RESPONSE_OPTION {
3864 OptionAbortRetryIgnore,
3870 OptionShutdownSystem
3871 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
3873 typedef enum _HARDERROR_RESPONSE {
3874 ResponseReturnToCaller,
3883 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
3889 /*IN*/ NTSTATUS Status,
3890 /*IN*/ ULONG NumberOfArguments,
3891 /*IN*/ ULONG StringArgumentsMask,
3892 /*IN*/ PULONG Arguments,
3893 /*IN*/ HARDERROR_RESPONSE_OPTION ResponseOption,
3894 /*OUT*/ PHARDERROR_RESPONSE Response);
3900 /*IN*/ NTSTATUS Status,
3901 /*IN*/ ULONG NumberOfArguments,
3902 /*IN*/ ULONG StringArgumentsMask,
3903 /*IN*/ PULONG Arguments,
3904 /*IN*/ HARDERROR_RESPONSE_OPTION ResponseOption,
3905 /*OUT*/ PHARDERROR_RESPONSE Response);
3910 NtSetDefaultHardErrorPort(
3911 /*IN*/ HANDLE PortHandle);
3916 ZwSetDefaultHardErrorPort(
3917 /*IN*/ HANDLE PortHandle);
3923 /*IN*/ PUNICODE_STRING String);
3929 /*IN*/ PUNICODE_STRING String);
3935 /*IN*/ PUNICODE_STRING FileName,
3936 /*IN*/ PULARGE_INTEGER InitialSize,
3937 /*IN*/ PULARGE_INTEGER MaximumSize,
3938 /*IN*/ ULONG Reserved);
3944 /*IN*/ PUNICODE_STRING FileName,
3945 /*IN*/ PULARGE_INTEGER InitialSize,
3946 /*IN*/ PULARGE_INTEGER MaximumSize,
3947 /*IN*/ ULONG Reserved);
3949 typedef USHORT RTL_ATOM, *PRTL_ATOM;
3955 /*IN*/ PWSTR AtomName,
3956 /*IN*/ ULONG AtomNameLength,
3957 /*OUT*/ PRTL_ATOM Atom);
3963 /*IN*/ PWSTR AtomName,
3964 /*IN*/ ULONG AtomNameLength,
3965 /*OUT*/ PRTL_ATOM Atom);
3971 /*IN*/ PWSTR AtomName,
3972 /*IN*/ ULONG AtomNameLength,
3973 /*OUT*/ PRTL_ATOM Atom);
3979 /*IN*/ PWSTR AtomName,
3980 /*IN*/ ULONG AtomNameLength,
3981 /*OUT*/ PRTL_ATOM Atom);
3987 /*IN*/ RTL_ATOM Atom);
3993 /*IN*/ RTL_ATOM Atom);
3995 typedef enum _ATOM_INFORMATION_CLASS {
3996 AtomBasicInformation,
3998 } ATOM_INFORMATION_CLASS;
4003 NtQueryInformationAtom(
4004 /*IN*/ RTL_ATOM Atom,
4005 /*IN*/ ATOM_INFORMATION_CLASS AtomInformationClass,
4006 /*OUT*/ PVOID AtomInformation,
4007 /*IN*/ ULONG AtomInformationLength,
4008 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
4013 ZwQueryInformationAtom(
4014 /*IN*/ RTL_ATOM Atom,
4015 /*IN*/ ATOM_INFORMATION_CLASS AtomInformationClass,
4016 /*OUT*/ PVOID AtomInformation,
4017 /*IN*/ ULONG AtomInformationLength,
4018 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);
4020 typedef struct _ATOM_BASIC_INFORMATION {
4021 USHORT ReferenceCount;
4025 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
4027 typedef struct _ATOM_LIST_INFORMATION {
4028 ULONG NumberOfAtoms;
4030 } ATOM_LIST_INFORMATION, *PATOM_LIST_INFORMATION;
4036 /*IN*/ ULONG Selector1,
4037 /*IN*/ LDT_ENTRY LdtEntry1,
4038 /*IN*/ ULONG Selector2,
4039 /*IN*/ LDT_ENTRY LdtEntry2);
4045 /*IN*/ ULONG Selector1,
4046 /*IN*/ LDT_ENTRY LdtEntry1,
4047 /*IN*/ ULONG Selector2,
4048 /*IN*/ LDT_ENTRY LdtEntry2);
4054 /*IN*/ ULONG ControlCode,
4055 /*IN*/ PVOID ControlData);
4061 /*IN*/ ULONG ControlCode,
4062 /*IN*/ PVOID ControlData);
4070 #endif /* __NTAPI_H */