Embed:
(wiki syntax)
Show/hide line numbers
ntapi.h
00001 /* 00002 * ntapi.h 00003 * 00004 * Windows NT Native API 00005 * 00006 * Most structures in this file is obtained from Windows NT/2000 Native API 00007 * Reference by Gary Nebbett, ISBN 1578701996. 00008 * 00009 * This file is part of the w32api package. 00010 * 00011 * Contributors: 00012 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00013 * 00014 * THIS SOFTWARE IS NOT COPYRIGHTED 00015 * 00016 * This source code is offered for use in the public domain. You may 00017 * use, modify or distribute it freely. 00018 * 00019 * This code is distributed in the hope that it will be useful but 00020 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00021 * DISCLAIMED. This includes but is not limited to warranties of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00023 * 00024 */ 00025 00026 #ifndef __NTAPI_H 00027 #define __NTAPI_H 00028 00029 #if __GNUC__ >= 3 00030 #pragma GCC system_header 00031 #endif 00032 00033 #ifdef __cplusplus 00034 extern "C" { 00035 #endif 00036 00037 #include <stdarg.h> 00038 #include <winbase.h> 00039 #include "ntddk.h" 00040 #include "ntpoapi.h" 00041 00042 #pragma pack(push,4) 00043 00044 typedef struct _PEB *PPEB; 00045 00046 /* FIXME: Unknown definitions */ 00047 typedef PVOID POBJECT_TYPE_LIST; 00048 typedef PVOID PEXECUTION_STATE; 00049 typedef PVOID PLANGID; 00050 00051 #ifndef NtCurrentProcess 00052 #define NtCurrentProcess() ((HANDLE)0xFFFFFFFF) 00053 #endif /* NtCurrentProcess */ 00054 #ifndef NtCurrentThread 00055 #define NtCurrentThread() ((HANDLE)0xFFFFFFFE) 00056 #endif /* NtCurrentThread */ 00057 00058 /* System information and control */ 00059 00060 typedef enum _SYSTEM_INFORMATION_CLASS { 00061 SystemInformationClassMin = 0, 00062 SystemBasicInformation = 0, 00063 SystemProcessorInformation = 1, 00064 SystemPerformanceInformation = 2, 00065 SystemTimeOfDayInformation = 3, 00066 SystemPathInformation = 4, 00067 SystemNotImplemented1 = 4, 00068 SystemProcessInformation = 5, 00069 SystemProcessesAndThreadsInformation = 5, 00070 SystemCallCountInfoInformation = 6, 00071 SystemCallCounts = 6, 00072 SystemDeviceInformation = 7, 00073 SystemConfigurationInformation = 7, 00074 SystemProcessorPerformanceInformation = 8, 00075 SystemProcessorTimes = 8, 00076 SystemFlagsInformation = 9, 00077 SystemGlobalFlag = 9, 00078 SystemCallTimeInformation = 10, 00079 SystemNotImplemented2 = 10, 00080 SystemModuleInformation = 11, 00081 SystemLocksInformation = 12, 00082 SystemLockInformation = 12, 00083 SystemStackTraceInformation = 13, 00084 SystemNotImplemented3 = 13, 00085 SystemPagedPoolInformation = 14, 00086 SystemNotImplemented4 = 14, 00087 SystemNonPagedPoolInformation = 15, 00088 SystemNotImplemented5 = 15, 00089 SystemHandleInformation = 16, 00090 SystemObjectInformation = 17, 00091 SystemPageFileInformation = 18, 00092 SystemPagefileInformation = 18, 00093 SystemVdmInstemulInformation = 19, 00094 SystemInstructionEmulationCounts = 19, 00095 SystemVdmBopInformation = 20, 00096 SystemInvalidInfoClass1 = 20, 00097 SystemFileCacheInformation = 21, 00098 SystemCacheInformation = 21, 00099 SystemPoolTagInformation = 22, 00100 SystemInterruptInformation = 23, 00101 SystemProcessorStatistics = 23, 00102 SystemDpcBehaviourInformation = 24, 00103 SystemDpcInformation = 24, 00104 SystemFullMemoryInformation = 25, 00105 SystemNotImplemented6 = 25, 00106 SystemLoadImage = 26, 00107 SystemUnloadImage = 27, 00108 SystemTimeAdjustmentInformation = 28, 00109 SystemTimeAdjustment = 28, 00110 SystemSummaryMemoryInformation = 29, 00111 SystemNotImplemented7 = 29, 00112 SystemNextEventIdInformation = 30, 00113 SystemNotImplemented8 = 30, 00114 SystemEventIdsInformation = 31, 00115 SystemNotImplemented9 = 31, 00116 SystemCrashDumpInformation = 32, 00117 SystemExceptionInformation = 33, 00118 SystemCrashDumpStateInformation = 34, 00119 SystemKernelDebuggerInformation = 35, 00120 SystemContextSwitchInformation = 36, 00121 SystemRegistryQuotaInformation = 37, 00122 SystemLoadAndCallImage = 38, 00123 SystemPrioritySeparation = 39, 00124 SystemPlugPlayBusInformation = 40, 00125 SystemNotImplemented10 = 40, 00126 SystemDockInformation = 41, 00127 SystemNotImplemented11 = 41, 00128 /* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */ 00129 SystemInvalidInfoClass2 = 42, 00130 SystemProcessorSpeedInformation = 43, 00131 SystemInvalidInfoClass3 = 43, 00132 SystemCurrentTimeZoneInformation = 44, 00133 SystemTimeZoneInformation = 44, 00134 SystemLookasideInformation = 45, 00135 SystemSetTimeSlipEvent = 46, 00136 SystemCreateSession = 47, 00137 SystemDeleteSession = 48, 00138 SystemInvalidInfoClass4 = 49, 00139 SystemRangeStartInformation = 50, 00140 SystemVerifierInformation = 51, 00141 SystemAddVerifier = 52, 00142 SystemSessionProcessesInformation = 53, 00143 SystemInformationClassMax 00144 } SYSTEM_INFORMATION_CLASS; 00145 00146 typedef struct _SYSTEM_BASIC_INFORMATION { 00147 ULONG Unknown; 00148 ULONG MaximumIncrement; 00149 ULONG PhysicalPageSize; 00150 ULONG NumberOfPhysicalPages; 00151 ULONG LowestPhysicalPage; 00152 ULONG HighestPhysicalPage; 00153 ULONG AllocationGranularity; 00154 ULONG LowestUserAddress; 00155 ULONG HighestUserAddress; 00156 ULONG ActiveProcessors; 00157 UCHAR NumberProcessors; 00158 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; 00159 00160 typedef struct _SYSTEM_PROCESSOR_INFORMATION { 00161 USHORT ProcessorArchitecture; 00162 USHORT ProcessorLevel; 00163 USHORT ProcessorRevision; 00164 USHORT Unknown; 00165 ULONG FeatureBits; 00166 } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION; 00167 00168 typedef struct _SYSTEM_PERFORMANCE_INFORMATION { 00169 LARGE_INTEGER IdleTime; 00170 LARGE_INTEGER ReadTransferCount; 00171 LARGE_INTEGER WriteTransferCount; 00172 LARGE_INTEGER OtherTransferCount; 00173 ULONG ReadOperationCount; 00174 ULONG WriteOperationCount; 00175 ULONG OtherOperationCount; 00176 ULONG AvailablePages; 00177 ULONG TotalCommittedPages; 00178 ULONG TotalCommitLimit; 00179 ULONG PeakCommitment; 00180 ULONG PageFaults; 00181 ULONG WriteCopyFaults; 00182 ULONG TransitionFaults; 00183 ULONG CacheTransitionFaults; 00184 ULONG DemandZeroFaults; 00185 ULONG PagesRead; 00186 ULONG PageReadIos; 00187 ULONG CacheReads; 00188 ULONG CacheIos; 00189 ULONG PagefilePagesWritten; 00190 ULONG PagefilePageWriteIos; 00191 ULONG MappedFilePagesWritten; 00192 ULONG MappedFilePageWriteIos; 00193 ULONG PagedPoolUsage; 00194 ULONG NonPagedPoolUsage; 00195 ULONG PagedPoolAllocs; 00196 ULONG PagedPoolFrees; 00197 ULONG NonPagedPoolAllocs; 00198 ULONG NonPagedPoolFrees; 00199 ULONG TotalFreeSystemPtes; 00200 ULONG SystemCodePage; 00201 ULONG TotalSystemDriverPages; 00202 ULONG TotalSystemCodePages; 00203 ULONG SmallNonPagedLookasideListAllocateHits; 00204 ULONG SmallPagedLookasideListAllocateHits; 00205 ULONG Reserved3; 00206 ULONG MmSystemCachePage; 00207 ULONG PagedPoolPage; 00208 ULONG SystemDriverPage; 00209 ULONG FastReadNoWait; 00210 ULONG FastReadWait; 00211 ULONG FastReadResourceMiss; 00212 ULONG FastReadNotPossible; 00213 ULONG FastMdlReadNoWait; 00214 ULONG FastMdlReadWait; 00215 ULONG FastMdlReadResourceMiss; 00216 ULONG FastMdlReadNotPossible; 00217 ULONG MapDataNoWait; 00218 ULONG MapDataWait; 00219 ULONG MapDataNoWaitMiss; 00220 ULONG MapDataWaitMiss; 00221 ULONG PinMappedDataCount; 00222 ULONG PinReadNoWait; 00223 ULONG PinReadWait; 00224 ULONG PinReadNoWaitMiss; 00225 ULONG PinReadWaitMiss; 00226 ULONG CopyReadNoWait; 00227 ULONG CopyReadWait; 00228 ULONG CopyReadNoWaitMiss; 00229 ULONG CopyReadWaitMiss; 00230 ULONG MdlReadNoWait; 00231 ULONG MdlReadWait; 00232 ULONG MdlReadNoWaitMiss; 00233 ULONG MdlReadWaitMiss; 00234 ULONG ReadAheadIos; 00235 ULONG LazyWriteIos; 00236 ULONG LazyWritePages; 00237 ULONG DataFlushes; 00238 ULONG DataPages; 00239 ULONG ContextSwitches; 00240 ULONG FirstLevelTbFills; 00241 ULONG SecondLevelTbFills; 00242 ULONG SystemCalls; 00243 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; 00244 00245 typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION { 00246 LARGE_INTEGER BootTime; 00247 LARGE_INTEGER CurrentTime; 00248 LARGE_INTEGER TimeZoneBias; 00249 ULONG CurrentTimeZoneId; 00250 } SYSTEM_TIME_OF_DAY_INFORMATION, *PSYSTEM_TIME_OF_DAY_INFORMATION; 00251 00252 typedef struct _VM_COUNTERS { 00253 ULONG PeakVirtualSize; 00254 ULONG VirtualSize; 00255 ULONG PageFaultCount; 00256 ULONG PeakWorkingSetSize; 00257 ULONG WorkingSetSize; 00258 ULONG QuotaPeakPagedPoolUsage; 00259 ULONG QuotaPagedPoolUsage; 00260 ULONG QuotaPeakNonPagedPoolUsage; 00261 ULONG QuotaNonPagedPoolUsage; 00262 ULONG PagefileUsage; 00263 ULONG PeakPagefileUsage; 00264 } VM_COUNTERS; 00265 00266 typedef enum _THREAD_STATE { 00267 StateInitialized, 00268 StateReady, 00269 StateRunning, 00270 StateStandby, 00271 StateTerminated, 00272 StateWait, 00273 StateTransition, 00274 StateUnknown 00275 } THREAD_STATE; 00276 00277 typedef struct _SYSTEM_THREADS { 00278 LARGE_INTEGER KernelTime; 00279 LARGE_INTEGER UserTime; 00280 LARGE_INTEGER CreateTime; 00281 ULONG WaitTime; 00282 PVOID StartAddress; 00283 CLIENT_ID ClientId; 00284 KPRIORITY Priority; 00285 KPRIORITY BasePriority; 00286 ULONG ContextSwitchCount; 00287 THREAD_STATE State; 00288 KWAIT_REASON WaitReason; 00289 } SYSTEM_THREADS, *PSYSTEM_THREADS; 00290 00291 typedef struct _SYSTEM_PROCESSES { 00292 ULONG NextEntryDelta; 00293 ULONG ThreadCount; 00294 ULONG Reserved1[6]; 00295 LARGE_INTEGER CreateTime; 00296 LARGE_INTEGER UserTime; 00297 LARGE_INTEGER KernelTime; 00298 UNICODE_STRING ProcessName; 00299 KPRIORITY BasePriority; 00300 ULONG ProcessId; 00301 ULONG InheritedFromProcessId; 00302 ULONG HandleCount; 00303 ULONG Reserved2[2]; 00304 VM_COUNTERS VmCounters; 00305 IO_COUNTERS IoCounters; 00306 SYSTEM_THREADS Threads[1]; 00307 } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES; 00308 00309 typedef struct _SYSTEM_CALLS_INFORMATION { 00310 ULONG Size; 00311 ULONG NumberOfDescriptorTables; 00312 ULONG NumberOfRoutinesInTable[1]; 00313 ULONG CallCounts[ANYSIZE_ARRAY]; 00314 } SYSTEM_CALLS_INFORMATION, *PSYSTEM_CALLS_INFORMATION; 00315 00316 typedef struct _SYSTEM_CONFIGURATION_INFORMATION { 00317 ULONG DiskCount; 00318 ULONG FloppyCount; 00319 ULONG CdRomCount; 00320 ULONG TapeCount; 00321 ULONG SerialCount; 00322 ULONG ParallelCount; 00323 } SYSTEM_CONFIGURATION_INFORMATION, *PSYSTEM_CONFIGURATION_INFORMATION; 00324 00325 typedef struct _SYSTEM_PROCESSOR_TIMES { 00326 LARGE_INTEGER IdleTime; 00327 LARGE_INTEGER KernelTime; 00328 LARGE_INTEGER UserTime; 00329 LARGE_INTEGER DpcTime; 00330 LARGE_INTEGER InterruptTime; 00331 ULONG InterruptCount; 00332 } SYSTEM_PROCESSOR_TIMES, *PSYSTEM_PROCESSOR_TIMES; 00333 00334 /* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */ 00335 #define FLG_STOP_ON_EXCEPTION 0x00000001 00336 #define FLG_SHOW_LDR_SNAPS 0x00000002 00337 #define FLG_DEBUG_INITIAL_COMMAND 0x00000004 00338 #define FLG_STOP_ON_HUNG_GUI 0x00000008 00339 #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010 00340 #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020 00341 #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040 00342 #define FLG_HEAP_VALIDATE_ALL 0x00000080 00343 #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100 00344 #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200 00345 #define FLG_POOL_ENABLE_TAGGING 0x00000400 00346 #define FLG_HEAP_ENABLE_TAGGING 0x00000800 00347 #define FLG_USER_STACK_TRACE_DB 0x00001000 00348 #define FLG_KERNEL_STACK_TRACE_DB 0x00002000 00349 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000 00350 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000 00351 #define FLG_IGNORE_DEBUG_PRIV 0x00010000 00352 #define FLG_ENABLE_CSRDEBUG 0x00020000 00353 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000 00354 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000 00355 #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000 00356 #define FLG_HEAP_DISABLE_COALESCING 0x00200000 00357 #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000 00358 #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000 00359 #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000 00360 00361 typedef struct _SYSTEM_GLOBAL_FLAG { 00362 ULONG GlobalFlag; 00363 } SYSTEM_GLOBAL_FLAG, *PSYSTEM_GLOBAL_FLAG; 00364 00365 typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY { 00366 ULONG Unknown1; 00367 ULONG Unknown2; 00368 PVOID Base; 00369 ULONG Size; 00370 ULONG Flags; 00371 USHORT Index; 00372 /* Length of module name not including the path, this 00373 field contains valid value only for NTOSKRNL module */ 00374 USHORT NameLength; 00375 USHORT LoadCount; 00376 USHORT PathLength; 00377 CHAR ImageName[256]; 00378 } SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY; 00379 00380 typedef struct _SYSTEM_MODULE_INFORMATION { 00381 ULONG Count; 00382 SYSTEM_MODULE_INFORMATION_ENTRY Module[1]; 00383 } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; 00384 00385 typedef struct _SYSTEM_LOCK_INFORMATION { 00386 PVOID Address; 00387 USHORT Type; 00388 USHORT Reserved1; 00389 ULONG ExclusiveOwnerThreadId; 00390 ULONG ActiveCount; 00391 ULONG ContentionCount; 00392 ULONG Reserved2[2]; 00393 ULONG NumberOfSharedWaiters; 00394 ULONG NumberOfExclusiveWaiters; 00395 } SYSTEM_LOCK_INFORMATION, *PSYSTEM_LOCK_INFORMATION; 00396 00397 /*SYSTEM_HANDLE_INFORMATION.Flags cosntants */ 00398 #define PROTECT_FROM_CLOSE 0x01 00399 #define INHERIT 0x02 00400 00401 typedef struct _SYSTEM_HANDLE_INFORMATION { 00402 ULONG ProcessId; 00403 UCHAR ObjectTypeNumber; 00404 UCHAR Flags; 00405 USHORT Handle; 00406 PVOID Object; 00407 ACCESS_MASK GrantedAccess; 00408 } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; 00409 00410 typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION { 00411 ULONG NextEntryOffset; 00412 ULONG ObjectCount; 00413 ULONG HandleCount; 00414 ULONG TypeNumber; 00415 ULONG InvalidAttributes; 00416 GENERIC_MAPPING GenericMapping; 00417 ACCESS_MASK ValidAccessMask; 00418 POOL_TYPE PoolType; 00419 UCHAR Unknown; 00420 UNICODE_STRING Name; 00421 } SYSTEM_OBJECT_TYPE_INFORMATION, *PSYSTEM_OBJECT_TYPE_INFORMATION; 00422 00423 /* SYSTEM_OBJECT_INFORMATION.Flags constants */ 00424 #define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY 0x40 00425 #define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20 00426 #define FLG_SYSOBJINFO_PERMANENT 0x10 00427 #define FLG_SYSOBJINFO_EXCLUSIVE 0x08 00428 #define FLG_SYSOBJINFO_CREATOR_INFO 0x04 00429 #define FLG_SYSOBJINFO_KERNEL_MODE 0x02 00430 00431 typedef struct _SYSTEM_OBJECT_INFORMATION { 00432 ULONG NextEntryOffset; 00433 PVOID Object; 00434 ULONG CreatorProcessId; 00435 USHORT Unknown; 00436 USHORT Flags; 00437 ULONG PointerCount; 00438 ULONG HandleCount; 00439 ULONG PagedPoolUsage; 00440 ULONG NonPagedPoolUsage; 00441 ULONG ExclusiveProcessId; 00442 PSECURITY_DESCRIPTOR SecurityDescriptor; 00443 UNICODE_STRING Name; 00444 } SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION; 00445 00446 typedef struct _SYSTEM_PAGEFILE_INFORMATION { 00447 ULONG NextEntryOffset; 00448 ULONG CurrentSize; 00449 ULONG TotalUsed; 00450 ULONG PeakUsed; 00451 UNICODE_STRING FileName; 00452 } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION; 00453 00454 typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION { 00455 ULONG SegmentNotPresent; 00456 ULONG TwoByteOpcode; 00457 ULONG ESprefix; 00458 ULONG CSprefix; 00459 ULONG SSprefix; 00460 ULONG DSprefix; 00461 ULONG FSPrefix; 00462 ULONG GSprefix; 00463 ULONG OPER32prefix; 00464 ULONG ADDR32prefix; 00465 ULONG INSB; 00466 ULONG INSW; 00467 ULONG OUTSB; 00468 ULONG OUTSW; 00469 ULONG PUSHFD; 00470 ULONG POPFD; 00471 ULONG INTnn; 00472 ULONG INTO; 00473 ULONG IRETD; 00474 ULONG INBimm; 00475 ULONG INWimm; 00476 ULONG OUTBimm; 00477 ULONG OUTWimm; 00478 ULONG INB; 00479 ULONG INW; 00480 ULONG OUTB; 00481 ULONG OUTW; 00482 ULONG LOCKprefix; 00483 ULONG REPNEprefix; 00484 ULONG REPprefix; 00485 ULONG HLT; 00486 ULONG CLI; 00487 ULONG STI; 00488 ULONG GenericInvalidOpcode; 00489 } SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION; 00490 00491 typedef struct _SYSTEM_POOL_TAG_INFORMATION { 00492 CHAR Tag[4]; 00493 ULONG PagedPoolAllocs; 00494 ULONG PagedPoolFrees; 00495 ULONG PagedPoolUsage; 00496 ULONG NonPagedPoolAllocs; 00497 ULONG NonPagedPoolFrees; 00498 ULONG NonPagedPoolUsage; 00499 } SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION; 00500 00501 typedef struct _SYSTEM_PROCESSOR_STATISTICS { 00502 ULONG ContextSwitches; 00503 ULONG DpcCount; 00504 ULONG DpcRequestRate; 00505 ULONG TimeIncrement; 00506 ULONG DpcBypassCount; 00507 ULONG ApcBypassCount; 00508 } SYSTEM_PROCESSOR_STATISTICS, *PSYSTEM_PROCESSOR_STATISTICS; 00509 00510 typedef struct _SYSTEM_DPC_INFORMATION { 00511 ULONG Reserved; 00512 ULONG MaximumDpcQueueDepth; 00513 ULONG MinimumDpcRate; 00514 ULONG AdjustDpcThreshold; 00515 ULONG IdealDpcRate; 00516 } SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION; 00517 00518 typedef struct _SYSTEM_LOAD_IMAGE { 00519 UNICODE_STRING ModuleName; 00520 PVOID ModuleBase; 00521 PVOID SectionPointer; 00522 PVOID EntryPoint; 00523 PVOID ExportDirectory; 00524 } SYSTEM_LOAD_IMAGE, *PSYSTEM_LOAD_IMAGE; 00525 00526 typedef struct _SYSTEM_UNLOAD_IMAGE { 00527 PVOID ModuleBase; 00528 } SYSTEM_UNLOAD_IMAGE, *PSYSTEM_UNLOAD_IMAGE; 00529 00530 typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT { 00531 ULONG TimeAdjustment; 00532 ULONG MaximumIncrement; 00533 BOOLEAN TimeSynchronization; 00534 } SYSTEM_QUERY_TIME_ADJUSTMENT, *PSYSTEM_QUERY_TIME_ADJUSTMENT; 00535 00536 typedef struct _SYSTEM_SET_TIME_ADJUSTMENT { 00537 ULONG TimeAdjustment; 00538 BOOLEAN TimeSynchronization; 00539 } SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT; 00540 00541 typedef struct _SYSTEM_CRASH_DUMP_INFORMATION { 00542 HANDLE CrashDumpSectionHandle; 00543 HANDLE Unknown; 00544 } SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION; 00545 00546 typedef struct _SYSTEM_EXCEPTION_INFORMATION { 00547 ULONG AlignmentFixupCount; 00548 ULONG ExceptionDispatchCount; 00549 ULONG FloatingEmulationCount; 00550 ULONG Reserved; 00551 } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION; 00552 00553 typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION { 00554 ULONG CrashDumpSectionExists; 00555 ULONG Unknown; 00556 } SYSTEM_CRASH_DUMP_STATE_INFORMATION, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION; 00557 00558 typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION { 00559 BOOLEAN DebuggerEnabled; 00560 BOOLEAN DebuggerNotPresent; 00561 } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; 00562 00563 typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION { 00564 ULONG ContextSwitches; 00565 ULONG ContextSwitchCounters[11]; 00566 } SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION; 00567 00568 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { 00569 ULONG RegistryQuota; 00570 ULONG RegistryQuotaInUse; 00571 ULONG PagedPoolSize; 00572 } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; 00573 00574 typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE { 00575 UNICODE_STRING ModuleName; 00576 } SYSTEM_LOAD_AND_CALL_IMAGE, *PSYSTEM_LOAD_AND_CALL_IMAGE; 00577 00578 typedef struct _SYSTEM_PRIORITY_SEPARATION { 00579 ULONG PrioritySeparation; 00580 } SYSTEM_PRIORITY_SEPARATION, *PSYSTEM_PRIORITY_SEPARATION; 00581 00582 typedef struct _SYSTEM_TIME_ZONE_INFORMATION { 00583 LONG Bias; 00584 WCHAR StandardName[32]; 00585 LARGE_INTEGER StandardDate; 00586 LONG StandardBias; 00587 WCHAR DaylightName[32]; 00588 LARGE_INTEGER DaylightDate; 00589 LONG DaylightBias; 00590 } SYSTEM_TIME_ZONE_INFORMATION, *PSYSTEM_TIME_ZONE_INFORMATION; 00591 00592 typedef struct _SYSTEM_LOOKASIDE_INFORMATION { 00593 USHORT Depth; 00594 USHORT MaximumDepth; 00595 ULONG TotalAllocates; 00596 ULONG AllocateMisses; 00597 ULONG TotalFrees; 00598 ULONG FreeMisses; 00599 POOL_TYPE Type; 00600 ULONG Tag; 00601 ULONG Size; 00602 } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION; 00603 00604 typedef struct _SYSTEM_SET_TIME_SLIP_EVENT { 00605 HANDLE TimeSlipEvent; 00606 } SYSTEM_SET_TIME_SLIP_EVENT, *PSYSTEM_SET_TIME_SLIP_EVENT; 00607 00608 typedef struct _SYSTEM_CREATE_SESSION { 00609 ULONG SessionId; 00610 } SYSTEM_CREATE_SESSION, *PSYSTEM_CREATE_SESSION; 00611 00612 typedef struct _SYSTEM_DELETE_SESSION { 00613 ULONG SessionId; 00614 } SYSTEM_DELETE_SESSION, *PSYSTEM_DELETE_SESSION; 00615 00616 typedef struct _SYSTEM_RANGE_START_INFORMATION { 00617 PVOID SystemRangeStart; 00618 } SYSTEM_RANGE_START_INFORMATION, *PSYSTEM_RANGE_START_INFORMATION; 00619 00620 typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION { 00621 ULONG SessionId; 00622 ULONG BufferSize; 00623 PVOID Buffer; 00624 } SYSTEM_SESSION_PROCESSES_INFORMATION, *PSYSTEM_SESSION_PROCESSES_INFORMATION; 00625 00626 typedef struct _SYSTEM_POOL_BLOCK { 00627 BOOLEAN Allocated; 00628 USHORT Unknown; 00629 ULONG Size; 00630 CHAR Tag[4]; 00631 } SYSTEM_POOL_BLOCK, *PSYSTEM_POOL_BLOCK; 00632 00633 typedef struct _SYSTEM_POOL_BLOCKS_INFORMATION { 00634 ULONG PoolSize; 00635 PVOID PoolBase; 00636 USHORT Unknown; 00637 ULONG NumberOfBlocks; 00638 SYSTEM_POOL_BLOCK PoolBlocks[1]; 00639 } SYSTEM_POOL_BLOCKS_INFORMATION, *PSYSTEM_POOL_BLOCKS_INFORMATION; 00640 00641 typedef struct _SYSTEM_MEMORY_USAGE { 00642 PVOID Name; 00643 USHORT Valid; 00644 USHORT Standby; 00645 USHORT Modified; 00646 USHORT PageTables; 00647 } SYSTEM_MEMORY_USAGE, *PSYSTEM_MEMORY_USAGE; 00648 00649 typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION { 00650 ULONG Reserved; 00651 PVOID EndOfData; 00652 SYSTEM_MEMORY_USAGE MemoryUsage[1]; 00653 } SYSTEM_MEMORY_USAGE_INFORMATION, *PSYSTEM_MEMORY_USAGE_INFORMATION; 00654 00655 NTOSAPI 00656 NTSTATUS 00657 NTAPI 00658 NtQuerySystemInformation( 00659 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, 00660 /*IN OUT*/ PVOID SystemInformation, 00661 /*IN*/ ULONG SystemInformationLength, 00662 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00663 00664 NTOSAPI 00665 NTSTATUS 00666 NTAPI 00667 ZwQuerySystemInformation( 00668 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, 00669 /*IN OUT*/ PVOID SystemInformation, 00670 /*IN*/ ULONG SystemInformationLength, 00671 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00672 00673 NTOSAPI 00674 NTAPI 00675 NTSTATUS 00676 NtQueryFullAttributesFile( 00677 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 00678 /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation); 00679 00680 NTOSAPI 00681 NTAPI 00682 NTSTATUS 00683 ZwQueryFullAttributesFile( 00684 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 00685 /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation); 00686 00687 NTOSAPI 00688 NTSTATUS 00689 NTAPI 00690 NtSetSystemInformation( 00691 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, 00692 /*IN OUT*/ PVOID SystemInformation, 00693 /*IN*/ ULONG SystemInformationLength); 00694 00695 NTOSAPI 00696 NTSTATUS 00697 NTAPI 00698 ZwSetSystemInformation( 00699 /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, 00700 /*IN OUT*/ PVOID SystemInformation, 00701 /*IN*/ ULONG SystemInformationLength); 00702 00703 NTOSAPI 00704 NTSTATUS 00705 NTAPI 00706 NtQuerySystemEnvironmentValue( 00707 /*IN*/ PUNICODE_STRING Name, 00708 /*OUT*/ PVOID Value, 00709 /*IN*/ ULONG ValueLength, 00710 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00711 00712 NTOSAPI 00713 NTSTATUS 00714 NTAPI 00715 ZwQuerySystemEnvironmentValue( 00716 /*IN*/ PUNICODE_STRING Name, 00717 /*OUT*/ PVOID Value, 00718 /*IN*/ ULONG ValueLength, 00719 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00720 00721 NTOSAPI 00722 NTSTATUS 00723 NTAPI 00724 NtSetSystemEnvironmentValue( 00725 /*IN*/ PUNICODE_STRING Name, 00726 /*IN*/ PUNICODE_STRING Value); 00727 00728 NTOSAPI 00729 NTSTATUS 00730 NTAPI 00731 ZwSetSystemEnvironmentValue( 00732 /*IN*/ PUNICODE_STRING Name, 00733 /*IN*/ PUNICODE_STRING Value); 00734 00735 typedef enum _SHUTDOWN_ACTION { 00736 ShutdownNoReboot, 00737 ShutdownReboot, 00738 ShutdownPowerOff 00739 } SHUTDOWN_ACTION; 00740 00741 NTOSAPI 00742 NTSTATUS 00743 NTAPI 00744 NtShutdownSystem( 00745 /*IN*/ SHUTDOWN_ACTION Action); 00746 00747 NTOSAPI 00748 NTSTATUS 00749 NTAPI 00750 ZwShutdownSystem( 00751 /*IN*/ SHUTDOWN_ACTION Action); 00752 00753 typedef enum _DEBUG_CONTROL_CODE { 00754 DebugGetTraceInformation = 1, 00755 DebugSetInternalBreakpoint, 00756 DebugSetSpecialCall, 00757 DebugClearSpecialCalls, 00758 DebugQuerySpecialCalls, 00759 DebugDbgBreakPoint, 00760 DebugMaximum 00761 } DEBUG_CONTROL_CODE; 00762 00763 00764 NTOSAPI 00765 NTSTATUS 00766 NTAPI 00767 NtSystemDebugControl( 00768 /*IN*/ DEBUG_CONTROL_CODE ControlCode, 00769 /*IN*/ PVOID InputBuffer /*OPTIONAL*/, 00770 /*IN*/ ULONG InputBufferLength, 00771 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/, 00772 /*IN*/ ULONG OutputBufferLength, 00773 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00774 00775 NTOSAPI 00776 NTSTATUS 00777 NTAPI 00778 ZwSystemDebugControl( 00779 /*IN*/ DEBUG_CONTROL_CODE ControlCode, 00780 /*IN*/ PVOID InputBuffer /*OPTIONAL*/, 00781 /*IN*/ ULONG InputBufferLength, 00782 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/, 00783 /*IN*/ ULONG OutputBufferLength, 00784 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00785 00786 00787 00788 /* Objects, Object directories, and symbolic links */ 00789 00790 typedef enum _OBJECT_INFORMATION_CLASS { 00791 ObjectBasicInformation, 00792 ObjectNameInformation, 00793 ObjectTypeInformation, 00794 ObjectAllTypesInformation, 00795 ObjectHandleInformation 00796 } OBJECT_INFORMATION_CLASS; 00797 00798 NTOSAPI 00799 NTSTATUS 00800 NTAPI 00801 NtQueryObject( 00802 /*IN*/ HANDLE ObjectHandle, 00803 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass, 00804 /*OUT*/ PVOID ObjectInformation, 00805 /*IN*/ ULONG ObjectInformationLength, 00806 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00807 00808 NTOSAPI 00809 NTSTATUS 00810 NTAPI 00811 ZwQueryObject( 00812 /*IN*/ HANDLE ObjectHandle, 00813 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass, 00814 /*OUT*/ PVOID ObjectInformation, 00815 /*IN*/ ULONG ObjectInformationLength, 00816 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00817 00818 NTOSAPI 00819 NTSTATUS 00820 NTAPI 00821 NtSetInformationObject( 00822 /*IN*/ HANDLE ObjectHandle, 00823 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass, 00824 /*IN*/ PVOID ObjectInformation, 00825 /*IN*/ ULONG ObjectInformationLength); 00826 00827 NTOSAPI 00828 NTSTATUS 00829 NTAPI 00830 ZwSetInformationObject( 00831 /*IN*/ HANDLE ObjectHandle, 00832 /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass, 00833 /*IN*/ PVOID ObjectInformation, 00834 /*IN*/ ULONG ObjectInformationLength); 00835 00836 /* OBJECT_BASIC_INFORMATION.Attributes constants */ 00837 /* also in winbase.h */ 00838 #define HANDLE_FLAG_INHERIT 0x01 00839 #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02 00840 /* end winbase.h */ 00841 #define PERMANENT 0x10 00842 #define EXCLUSIVE 0x20 00843 00844 typedef struct _OBJECT_BASIC_INFORMATION { 00845 ULONG Attributes; 00846 ACCESS_MASK GrantedAccess; 00847 ULONG HandleCount; 00848 ULONG PointerCount; 00849 ULONG PagedPoolUsage; 00850 ULONG NonPagedPoolUsage; 00851 ULONG Reserved[3]; 00852 ULONG NameInformationLength; 00853 ULONG TypeInformationLength; 00854 ULONG SecurityDescriptorLength; 00855 LARGE_INTEGER CreateTime; 00856 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; 00857 #if 0 00858 /* FIXME: Enable later */ 00859 typedef struct _OBJECT_TYPE_INFORMATION { 00860 UNICODE_STRING Name; 00861 ULONG ObjectCount; 00862 ULONG HandleCount; 00863 ULONG Reserved1[4]; 00864 ULONG PeakObjectCount; 00865 ULONG PeakHandleCount; 00866 ULONG Reserved2[4]; 00867 ULONG InvalidAttributes; 00868 GENERIC_MAPPING GenericMapping; 00869 ULONG ValidAccess; 00870 UCHAR Unknown; 00871 BOOLEAN MaintainHandleDatabase; 00872 POOL_TYPE PoolType; 00873 ULONG PagedPoolUsage; 00874 ULONG NonPagedPoolUsage; 00875 } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; 00876 00877 typedef struct _OBJECT_ALL_TYPES_INFORMATION { 00878 ULONG NumberOfTypes; 00879 OBJECT_TYPE_INFORMATION TypeInformation; 00880 } OBJECT_ALL_TYPES_INFORMATION, *POBJECT_ALL_TYPES_INFORMATION; 00881 #endif 00882 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION { 00883 BOOLEAN Inherit; 00884 BOOLEAN ProtectFromClose; 00885 } OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION; 00886 00887 NTOSAPI 00888 NTSTATUS 00889 NTAPI 00890 NtDuplicateObject( 00891 /*IN*/ HANDLE SourceProcessHandle, 00892 /*IN*/ HANDLE SourceHandle, 00893 /*IN*/ HANDLE TargetProcessHandle, 00894 /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/, 00895 /*IN*/ ACCESS_MASK DesiredAccess, 00896 /*IN*/ ULONG Attributes, 00897 /*IN*/ ULONG Options); 00898 00899 NTOSAPI 00900 NTSTATUS 00901 NTAPI 00902 ZwDuplicateObject( 00903 /*IN*/ HANDLE SourceProcessHandle, 00904 /*IN*/ HANDLE SourceHandle, 00905 /*IN*/ HANDLE TargetProcessHandle, 00906 /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/, 00907 /*IN*/ ACCESS_MASK DesiredAccess, 00908 /*IN*/ ULONG Attributes, 00909 /*IN*/ ULONG Options); 00910 00911 NTOSAPI 00912 NTSTATUS 00913 NTAPI 00914 NtQuerySecurityObject( 00915 /*IN*/ HANDLE Handle, 00916 /*IN*/ SECURITY_INFORMATION SecurityInformation, 00917 /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 00918 /*IN*/ ULONG SecurityDescriptorLength, 00919 /*OUT*/ PULONG ReturnLength); 00920 00921 NTOSAPI 00922 NTSTATUS 00923 NTAPI 00924 ZwQuerySecurityObject( 00925 /*IN*/ HANDLE Handle, 00926 /*IN*/ SECURITY_INFORMATION SecurityInformation, 00927 /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 00928 /*IN*/ ULONG SecurityDescriptorLength, 00929 /*OUT*/ PULONG ReturnLength); 00930 00931 NTOSAPI 00932 NTSTATUS 00933 NTAPI 00934 NtSetSecurityObject( 00935 /*IN*/ HANDLE Handle, 00936 /*IN*/ SECURITY_INFORMATION SecurityInformation, 00937 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor); 00938 00939 NTOSAPI 00940 NTSTATUS 00941 NTAPI 00942 ZwSetSecurityObject( 00943 /*IN*/ HANDLE Handle, 00944 /*IN*/ SECURITY_INFORMATION SecurityInformation, 00945 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor); 00946 00947 NTOSAPI 00948 NTSTATUS 00949 NTAPI 00950 NtOpenDirectoryObject( 00951 /*OUT*/ PHANDLE DirectoryHandle, 00952 /*IN*/ ACCESS_MASK DesiredAccess, 00953 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); 00954 00955 NTOSAPI 00956 NTSTATUS 00957 NTAPI 00958 ZwOpenDirectoryObject( 00959 /*OUT*/ PHANDLE DirectoryHandle, 00960 /*IN*/ ACCESS_MASK DesiredAccess, 00961 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); 00962 00963 NTOSAPI 00964 NTSTATUS 00965 NTAPI 00966 NtQueryDirectoryObject( 00967 /*IN*/ HANDLE DirectoryHandle, 00968 /*OUT*/ PVOID Buffer, 00969 /*IN*/ ULONG BufferLength, 00970 /*IN*/ BOOLEAN ReturnSingleEntry, 00971 /*IN*/ BOOLEAN RestartScan, 00972 /*IN OUT*/ PULONG Context, 00973 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00974 00975 NTOSAPI 00976 NTSTATUS 00977 NTAPI 00978 ZwQueryDirectoryObject( 00979 /*IN*/ HANDLE DirectoryHandle, 00980 /*OUT*/ PVOID Buffer, 00981 /*IN*/ ULONG BufferLength, 00982 /*IN*/ BOOLEAN ReturnSingleEntry, 00983 /*IN*/ BOOLEAN RestartScan, 00984 /*IN OUT*/ PULONG Context, 00985 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 00986 00987 typedef struct _DIRECTORY_BASIC_INFORMATION { 00988 UNICODE_STRING ObjectName; 00989 UNICODE_STRING ObjectTypeName; 00990 } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION; 00991 00992 NTOSAPI 00993 NTSTATUS 00994 NTAPI 00995 NtCreateSymbolicLinkObject( 00996 /*OUT*/ PHANDLE SymbolicLinkHandle, 00997 /*IN*/ ACCESS_MASK DesiredAccess, 00998 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 00999 /*IN*/ PUNICODE_STRING TargetName); 01000 01001 NTOSAPI 01002 NTSTATUS 01003 NTAPI 01004 ZwCreateSymbolicLinkObject( 01005 /*OUT*/ PHANDLE SymbolicLinkHandle, 01006 /*IN*/ ACCESS_MASK DesiredAccess, 01007 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01008 /*IN*/ PUNICODE_STRING TargetName); 01009 01010 01011 01012 01013 /* Virtual memory */ 01014 01015 typedef enum _MEMORY_INFORMATION_CLASS { 01016 MemoryBasicInformation, 01017 MemoryWorkingSetList, 01018 MemorySectionName, 01019 MemoryBasicVlmInformation 01020 } MEMORY_INFORMATION_CLASS; 01021 01022 NTOSAPI 01023 NTSTATUS 01024 NTAPI 01025 NtAllocateVirtualMemory( 01026 /*IN*/ HANDLE ProcessHandle, 01027 /*IN OUT*/ PVOID *BaseAddress, 01028 /*IN*/ ULONG ZeroBits, 01029 /*IN OUT*/ PULONG AllocationSize, 01030 /*IN*/ ULONG AllocationType, 01031 /*IN*/ ULONG Protect); 01032 01033 NTOSAPI 01034 NTSTATUS 01035 NTAPI 01036 ZwAllocateVirtualMemory( 01037 /*IN*/ HANDLE ProcessHandle, 01038 /*IN OUT*/ PVOID *BaseAddress, 01039 /*IN*/ ULONG ZeroBits, 01040 /*IN OUT*/ PULONG AllocationSize, 01041 /*IN*/ ULONG AllocationType, 01042 /*IN*/ ULONG Protect); 01043 01044 NTOSAPI 01045 NTSTATUS 01046 NTAPI 01047 NtFreeVirtualMemory( 01048 /*IN*/ HANDLE ProcessHandle, 01049 /*IN OUT*/ PVOID *BaseAddress, 01050 /*IN OUT*/ PULONG FreeSize, 01051 /*IN*/ ULONG FreeType); 01052 01053 NTOSAPI 01054 NTSTATUS 01055 NTAPI 01056 ZwFreeVirtualMemory( 01057 /*IN*/ HANDLE ProcessHandle, 01058 /*IN OUT*/ PVOID *BaseAddress, 01059 /*IN OUT*/ PULONG FreeSize, 01060 /*IN*/ ULONG FreeType); 01061 01062 NTOSAPI 01063 NTSTATUS 01064 NTAPI 01065 NtQueryVirtualMemory( 01066 /*IN*/ HANDLE ProcessHandle, 01067 /*IN*/ PVOID BaseAddress, 01068 /*IN*/ MEMORY_INFORMATION_CLASS MemoryInformationClass, 01069 /*OUT*/ PVOID MemoryInformation, 01070 /*IN*/ ULONG MemoryInformationLength, 01071 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01072 01073 NTOSAPI 01074 NTSTATUS 01075 NTAPI 01076 ZwQueryVirtualMemory( 01077 /*IN*/ HANDLE ProcessHandle, 01078 /*IN*/ PVOID BaseAddress, 01079 /*IN*/ MEMORY_INFORMATION_CLASS MemoryInformationClass, 01080 /*OUT*/ PVOID MemoryInformation, 01081 /*IN*/ ULONG MemoryInformationLength, 01082 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01083 01084 /* MEMORY_WORKING_SET_LIST.WorkingSetList constants */ 01085 #define WSLE_PAGE_READONLY 0x001 01086 #define WSLE_PAGE_EXECUTE 0x002 01087 #define WSLE_PAGE_READWRITE 0x004 01088 #define WSLE_PAGE_EXECUTE_READ 0x003 01089 #define WSLE_PAGE_WRITECOPY 0x005 01090 #define WSLE_PAGE_EXECUTE_READWRITE 0x006 01091 #define WSLE_PAGE_EXECUTE_WRITECOPY 0x007 01092 #define WSLE_PAGE_SHARE_COUNT_MASK 0x0E0 01093 #define WSLE_PAGE_SHAREABLE 0x100 01094 01095 typedef struct _MEMORY_WORKING_SET_LIST { 01096 ULONG NumberOfPages; 01097 ULONG WorkingSetList[1]; 01098 } MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST; 01099 01100 typedef struct _MEMORY_SECTION_NAME { 01101 UNICODE_STRING SectionFileName; 01102 } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME; 01103 01104 /* Zw[Lock|Unlock]VirtualMemory.LockType constants */ 01105 #define LOCK_VM_IN_WSL 0x01 01106 #define LOCK_VM_IN_RAM 0x02 01107 01108 NTOSAPI 01109 NTSTATUS 01110 NTAPI 01111 NtLockVirtualMemory( 01112 /*IN*/ HANDLE ProcessHandle, 01113 /*IN OUT*/ PVOID *BaseAddress, 01114 /*IN OUT*/ PULONG LockSize, 01115 /*IN*/ ULONG LockType); 01116 01117 NTOSAPI 01118 NTSTATUS 01119 NTAPI 01120 ZwLockVirtualMemory( 01121 /*IN*/ HANDLE ProcessHandle, 01122 /*IN OUT*/ PVOID *BaseAddress, 01123 /*IN OUT*/ PULONG LockSize, 01124 /*IN*/ ULONG LockType); 01125 01126 NTOSAPI 01127 NTSTATUS 01128 NTAPI 01129 NtUnlockVirtualMemory( 01130 /*IN*/ HANDLE ProcessHandle, 01131 /*IN OUT*/ PVOID *BaseAddress, 01132 /*IN OUT*/ PULONG LockSize, 01133 /*IN*/ ULONG LockType); 01134 01135 NTOSAPI 01136 NTSTATUS 01137 NTAPI 01138 ZwUnlockVirtualMemory( 01139 /*IN*/ HANDLE ProcessHandle, 01140 /*IN OUT*/ PVOID *BaseAddress, 01141 /*IN OUT*/ PULONG LockSize, 01142 /*IN*/ ULONG LockType); 01143 01144 NTOSAPI 01145 NTSTATUS 01146 NTAPI 01147 NtReadVirtualMemory( 01148 /*IN*/ HANDLE ProcessHandle, 01149 /*IN*/ PVOID BaseAddress, 01150 /*OUT*/ PVOID Buffer, 01151 /*IN*/ ULONG BufferLength, 01152 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01153 01154 NTOSAPI 01155 NTSTATUS 01156 NTAPI 01157 ZwReadVirtualMemory( 01158 /*IN*/ HANDLE ProcessHandle, 01159 /*IN*/ PVOID BaseAddress, 01160 /*OUT*/ PVOID Buffer, 01161 /*IN*/ ULONG BufferLength, 01162 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01163 01164 NTOSAPI 01165 NTSTATUS 01166 NTAPI 01167 NtWriteVirtualMemory( 01168 /*IN*/ HANDLE ProcessHandle, 01169 /*IN*/ PVOID BaseAddress, 01170 /*IN*/ PVOID Buffer, 01171 /*IN*/ ULONG BufferLength, 01172 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01173 01174 NTOSAPI 01175 NTSTATUS 01176 NTAPI 01177 ZwWriteVirtualMemory( 01178 /*IN*/ HANDLE ProcessHandle, 01179 /*IN*/ PVOID BaseAddress, 01180 /*IN*/ PVOID Buffer, 01181 /*IN*/ ULONG BufferLength, 01182 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01183 01184 NTOSAPI 01185 NTSTATUS 01186 NTAPI 01187 NtProtectVirtualMemory( 01188 /*IN*/ HANDLE ProcessHandle, 01189 /*IN OUT*/ PVOID *BaseAddress, 01190 /*IN OUT*/ PULONG ProtectSize, 01191 /*IN*/ ULONG NewProtect, 01192 /*OUT*/ PULONG OldProtect); 01193 01194 NTOSAPI 01195 NTSTATUS 01196 NTAPI 01197 ZwProtectVirtualMemory( 01198 /*IN*/ HANDLE ProcessHandle, 01199 /*IN OUT*/ PVOID *BaseAddress, 01200 /*IN OUT*/ PULONG ProtectSize, 01201 /*IN*/ ULONG NewProtect, 01202 /*OUT*/ PULONG OldProtect); 01203 01204 NTOSAPI 01205 NTSTATUS 01206 NTAPI 01207 NtFlushVirtualMemory( 01208 /*IN*/ HANDLE ProcessHandle, 01209 /*IN OUT*/ PVOID *BaseAddress, 01210 /*IN OUT*/ PULONG FlushSize, 01211 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); 01212 01213 NTOSAPI 01214 NTSTATUS 01215 NTAPI 01216 ZwFlushVirtualMemory( 01217 /*IN*/ HANDLE ProcessHandle, 01218 /*IN OUT*/ PVOID *BaseAddress, 01219 /*IN OUT*/ PULONG FlushSize, 01220 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); 01221 01222 NTOSAPI 01223 NTSTATUS 01224 NTAPI 01225 NtAllocateUserPhysicalPages( 01226 /*IN*/ HANDLE ProcessHandle, 01227 /*IN*/ PULONG NumberOfPages, 01228 /*OUT*/ PULONG PageFrameNumbers); 01229 01230 NTOSAPI 01231 NTSTATUS 01232 NTAPI 01233 ZwAllocateUserPhysicalPages( 01234 /*IN*/ HANDLE ProcessHandle, 01235 /*IN*/ PULONG NumberOfPages, 01236 /*OUT*/ PULONG PageFrameNumbers); 01237 01238 NTOSAPI 01239 NTSTATUS 01240 NTAPI 01241 NtFreeUserPhysicalPages( 01242 /*IN*/ HANDLE ProcessHandle, 01243 /*IN OUT*/ PULONG NumberOfPages, 01244 /*IN*/ PULONG PageFrameNumbers); 01245 01246 NTOSAPI 01247 NTSTATUS 01248 NTAPI 01249 ZwFreeUserPhysicalPages( 01250 /*IN*/ HANDLE ProcessHandle, 01251 /*IN OUT*/ PULONG NumberOfPages, 01252 /*IN*/ PULONG PageFrameNumbers); 01253 01254 NTOSAPI 01255 NTSTATUS 01256 NTAPI 01257 NtMapUserPhysicalPages( 01258 /*IN*/ PVOID BaseAddress, 01259 /*IN*/ PULONG NumberOfPages, 01260 /*IN*/ PULONG PageFrameNumbers); 01261 01262 NTOSAPI 01263 NTSTATUS 01264 NTAPI 01265 ZwMapUserPhysicalPages( 01266 /*IN*/ PVOID BaseAddress, 01267 /*IN*/ PULONG NumberOfPages, 01268 /*IN*/ PULONG PageFrameNumbers); 01269 01270 NTOSAPI 01271 NTSTATUS 01272 NTAPI 01273 NtMapUserPhysicalPagesScatter( 01274 /*IN*/ PVOID *BaseAddresses, 01275 /*IN*/ PULONG NumberOfPages, 01276 /*IN*/ PULONG PageFrameNumbers); 01277 01278 NTOSAPI 01279 NTSTATUS 01280 NTAPI 01281 ZwMapUserPhysicalPagesScatter( 01282 /*IN*/ PVOID *BaseAddresses, 01283 /*IN*/ PULONG NumberOfPages, 01284 /*IN*/ PULONG PageFrameNumbers); 01285 01286 NTOSAPI 01287 NTSTATUS 01288 NTAPI 01289 NtGetWriteWatch( 01290 /*IN*/ HANDLE ProcessHandle, 01291 /*IN*/ ULONG Flags, 01292 /*IN*/ PVOID BaseAddress, 01293 /*IN*/ ULONG RegionSize, 01294 /*OUT*/ PULONG Buffer, 01295 /*IN OUT*/ PULONG BufferEntries, 01296 /*OUT*/ PULONG Granularity); 01297 01298 NTOSAPI 01299 NTSTATUS 01300 NTAPI 01301 ZwGetWriteWatch( 01302 /*IN*/ HANDLE ProcessHandle, 01303 /*IN*/ ULONG Flags, 01304 /*IN*/ PVOID BaseAddress, 01305 /*IN*/ ULONG RegionSize, 01306 /*OUT*/ PULONG Buffer, 01307 /*IN OUT*/ PULONG BufferEntries, 01308 /*OUT*/ PULONG Granularity); 01309 01310 NTOSAPI 01311 NTSTATUS 01312 NTAPI 01313 NtResetWriteWatch( 01314 /*IN*/ HANDLE ProcessHandle, 01315 /*IN*/ PVOID BaseAddress, 01316 /*IN*/ ULONG RegionSize); 01317 01318 NTOSAPI 01319 NTSTATUS 01320 NTAPI 01321 ZwResetWriteWatch( 01322 /*IN*/ HANDLE ProcessHandle, 01323 /*IN*/ PVOID BaseAddress, 01324 /*IN*/ ULONG RegionSize); 01325 01326 01327 01328 01329 /* Sections */ 01330 01331 typedef enum _SECTION_INFORMATION_CLASS { 01332 SectionBasicInformation, 01333 SectionImageInformation 01334 } SECTION_INFORMATION_CLASS; 01335 01336 NTOSAPI 01337 NTSTATUS 01338 NTAPI 01339 NtCreateSection( 01340 /*OUT*/ PHANDLE SectionHandle, 01341 /*IN*/ ACCESS_MASK DesiredAccess, 01342 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01343 /*IN*/ PLARGE_INTEGER SectionSize /*OPTIONAL*/, 01344 /*IN*/ ULONG Protect, 01345 /*IN*/ ULONG Attributes, 01346 /*IN*/ HANDLE FileHandle); 01347 01348 NTOSAPI 01349 NTSTATUS 01350 NTAPI 01351 ZwCreateSection( 01352 /*OUT*/ PHANDLE SectionHandle, 01353 /*IN*/ ACCESS_MASK DesiredAccess, 01354 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01355 /*IN*/ PLARGE_INTEGER SectionSize /*OPTIONAL*/, 01356 /*IN*/ ULONG Protect, 01357 /*IN*/ ULONG Attributes, 01358 /*IN*/ HANDLE FileHandle); 01359 01360 NTOSAPI 01361 NTSTATUS 01362 NTAPI 01363 NtQuerySection( 01364 /*IN*/ HANDLE SectionHandle, 01365 /*IN*/ SECTION_INFORMATION_CLASS SectionInformationClass, 01366 /*OUT*/ PVOID SectionInformation, 01367 /*IN*/ ULONG SectionInformationLength, 01368 /*OUT*/ PULONG ResultLength /*OPTIONAL*/); 01369 01370 NTOSAPI 01371 NTSTATUS 01372 NTAPI 01373 ZwQuerySection( 01374 /*IN*/ HANDLE SectionHandle, 01375 /*IN*/ SECTION_INFORMATION_CLASS SectionInformationClass, 01376 /*OUT*/ PVOID SectionInformation, 01377 /*IN*/ ULONG SectionInformationLength, 01378 /*OUT*/ PULONG ResultLength /*OPTIONAL*/); 01379 01380 NTOSAPI 01381 NTSTATUS 01382 NTAPI 01383 NtExtendSection( 01384 /*IN*/ HANDLE SectionHandle, 01385 /*IN*/ PLARGE_INTEGER SectionSize); 01386 01387 NTOSAPI 01388 NTSTATUS 01389 NTAPI 01390 ZwExtendSection( 01391 /*IN*/ HANDLE SectionHandle, 01392 /*IN*/ PLARGE_INTEGER SectionSize); 01393 01394 NTOSAPI 01395 NTSTATUS 01396 NTAPI 01397 NtAreMappedFilesTheSame( 01398 /*IN*/ PVOID Address1, 01399 /*IN*/ PVOID Address2); 01400 01401 NTOSAPI 01402 NTSTATUS 01403 NTAPI 01404 ZwAreMappedFilesTheSame( 01405 /*IN*/ PVOID Address1, 01406 /*IN*/ PVOID Address2); 01407 01408 01409 01410 01411 /* Threads */ 01412 01413 typedef struct _USER_STACK { 01414 PVOID FixedStackBase; 01415 PVOID FixedStackLimit; 01416 PVOID ExpandableStackBase; 01417 PVOID ExpandableStackLimit; 01418 PVOID ExpandableStackBottom; 01419 } USER_STACK, *PUSER_STACK; 01420 01421 NTOSAPI 01422 NTSTATUS 01423 NTAPI 01424 NtCreateThread( 01425 /*OUT*/ PHANDLE ThreadHandle, 01426 /*IN*/ ACCESS_MASK DesiredAccess, 01427 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01428 /*IN*/ HANDLE ProcessHandle, 01429 /*OUT*/ PCLIENT_ID ClientId, 01430 /*IN*/ PCONTEXT ThreadContext, 01431 /*IN*/ PUSER_STACK UserStack, 01432 /*IN*/ BOOLEAN CreateSuspended); 01433 01434 NTOSAPI 01435 NTSTATUS 01436 NTAPI 01437 ZwCreateThread( 01438 /*OUT*/ PHANDLE ThreadHandle, 01439 /*IN*/ ACCESS_MASK DesiredAccess, 01440 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01441 /*IN*/ HANDLE ProcessHandle, 01442 /*OUT*/ PCLIENT_ID ClientId, 01443 /*IN*/ PCONTEXT ThreadContext, 01444 /*IN*/ PUSER_STACK UserStack, 01445 /*IN*/ BOOLEAN CreateSuspended); 01446 01447 NTOSAPI 01448 NTSTATUS 01449 NTAPI 01450 NtOpenThread( 01451 /*OUT*/ PHANDLE ThreadHandle, 01452 /*IN*/ ACCESS_MASK DesiredAccess, 01453 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01454 /*IN*/ PCLIENT_ID ClientId); 01455 01456 NTOSAPI 01457 NTSTATUS 01458 NTAPI 01459 ZwOpenThread( 01460 /*OUT*/ PHANDLE ThreadHandle, 01461 /*IN*/ ACCESS_MASK DesiredAccess, 01462 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01463 /*IN*/ PCLIENT_ID ClientId); 01464 01465 NTOSAPI 01466 NTSTATUS 01467 NTAPI 01468 NtTerminateThread( 01469 /*IN*/ HANDLE ThreadHandle /*OPTIONAL*/, 01470 /*IN*/ NTSTATUS ExitStatus); 01471 01472 NTOSAPI 01473 NTSTATUS 01474 NTAPI 01475 ZwTerminateThread( 01476 /*IN*/ HANDLE ThreadHandle /*OPTIONAL*/, 01477 /*IN*/ NTSTATUS ExitStatus); 01478 01479 NTOSAPI 01480 NTSTATUS 01481 NTAPI 01482 NtQueryInformationThread( 01483 /*IN*/ HANDLE ThreadHandle, 01484 /*IN*/ THREADINFOCLASS ThreadInformationClass, 01485 /*OUT*/ PVOID ThreadInformation, 01486 /*IN*/ ULONG ThreadInformationLength, 01487 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01488 01489 NTOSAPI 01490 NTSTATUS 01491 NTAPI 01492 ZwQueryInformationThread( 01493 /*IN*/ HANDLE ThreadHandle, 01494 /*IN*/ THREADINFOCLASS ThreadInformationClass, 01495 /*OUT*/ PVOID ThreadInformation, 01496 /*IN*/ ULONG ThreadInformationLength, 01497 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01498 01499 NTOSAPI 01500 NTSTATUS 01501 NTAPI 01502 NtSetInformationThread( 01503 /*IN*/ HANDLE ThreadHandle, 01504 /*IN*/ THREADINFOCLASS ThreadInformationClass, 01505 /*IN*/ PVOID ThreadInformation, 01506 /*IN*/ ULONG ThreadInformationLength); 01507 01508 NTOSAPI 01509 NTSTATUS 01510 NTAPI 01511 ZwSetInformationThread( 01512 /*IN*/ HANDLE ThreadHandle, 01513 /*IN*/ THREADINFOCLASS ThreadInformationClass, 01514 /*IN*/ PVOID ThreadInformation, 01515 /*IN*/ ULONG ThreadInformationLength); 01516 01517 typedef struct _THREAD_BASIC_INFORMATION { 01518 NTSTATUS ExitStatus; 01519 PNT_TIB TebBaseAddress; 01520 CLIENT_ID ClientId; 01521 KAFFINITY AffinityMask; 01522 KPRIORITY Priority; 01523 KPRIORITY BasePriority; 01524 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; 01525 01526 typedef struct _KERNEL_USER_TIMES { 01527 LARGE_INTEGER CreateTime; 01528 LARGE_INTEGER ExitTime; 01529 LARGE_INTEGER KernelTime; 01530 LARGE_INTEGER UserTime; 01531 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; 01532 01533 NTOSAPI 01534 NTSTATUS 01535 NTAPI 01536 NtSuspendThread( 01537 /*IN*/ HANDLE ThreadHandle, 01538 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); 01539 01540 NTOSAPI 01541 NTSTATUS 01542 NTAPI 01543 ZwSuspendThread( 01544 /*IN*/ HANDLE ThreadHandle, 01545 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); 01546 01547 NTOSAPI 01548 NTSTATUS 01549 NTAPI 01550 NtResumeThread( 01551 /*IN*/ HANDLE ThreadHandle, 01552 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); 01553 01554 NTOSAPI 01555 NTSTATUS 01556 NTAPI 01557 ZwResumeThread( 01558 /*IN*/ HANDLE ThreadHandle, 01559 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); 01560 01561 NTOSAPI 01562 NTSTATUS 01563 NTAPI 01564 NtGetContextThread( 01565 /*IN*/ HANDLE ThreadHandle, 01566 /*OUT*/ PCONTEXT Context); 01567 01568 NTOSAPI 01569 NTSTATUS 01570 NTAPI 01571 ZwGetContextThread( 01572 /*IN*/ HANDLE ThreadHandle, 01573 /*OUT*/ PCONTEXT Context); 01574 01575 NTOSAPI 01576 NTSTATUS 01577 NTAPI 01578 NtSetContextThread( 01579 /*IN*/ HANDLE ThreadHandle, 01580 /*IN*/ PCONTEXT Context); 01581 01582 NTOSAPI 01583 NTSTATUS 01584 NTAPI 01585 ZwSetContextThread( 01586 /*IN*/ HANDLE ThreadHandle, 01587 /*IN*/ PCONTEXT Context); 01588 01589 NTOSAPI 01590 NTSTATUS 01591 NTAPI 01592 NtQueueApcThread( 01593 /*IN*/ HANDLE ThreadHandle, 01594 /*IN*/ PKNORMAL_ROUTINE ApcRoutine, 01595 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 01596 /*IN*/ PVOID Argument1 /*OPTIONAL*/, 01597 /*IN*/ PVOID Argument2 /*OPTIONAL*/); 01598 01599 NTOSAPI 01600 NTSTATUS 01601 NTAPI 01602 ZwQueueApcThread( 01603 /*IN*/ HANDLE ThreadHandle, 01604 /*IN*/ PKNORMAL_ROUTINE ApcRoutine, 01605 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 01606 /*IN*/ PVOID Argument1 /*OPTIONAL*/, 01607 /*IN*/ PVOID Argument2 /*OPTIONAL*/); 01608 01609 NTOSAPI 01610 NTSTATUS 01611 NTAPI 01612 NtTestAlert( 01613 VOID); 01614 01615 NTOSAPI 01616 NTSTATUS 01617 NTAPI 01618 ZwTestAlert( 01619 VOID); 01620 01621 NTOSAPI 01622 NTSTATUS 01623 NTAPI 01624 NtAlertThread( 01625 /*IN*/ HANDLE ThreadHandle); 01626 01627 NTOSAPI 01628 NTSTATUS 01629 NTAPI 01630 ZwAlertThread( 01631 /*IN*/ HANDLE ThreadHandle); 01632 01633 NTOSAPI 01634 NTSTATUS 01635 NTAPI 01636 NtAlertResumeThread( 01637 /*IN*/ HANDLE ThreadHandle, 01638 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); 01639 01640 NTOSAPI 01641 NTSTATUS 01642 NTAPI 01643 ZwAlertResumeThread( 01644 /*IN*/ HANDLE ThreadHandle, 01645 /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); 01646 01647 NTOSAPI 01648 NTSTATUS 01649 NTAPI 01650 NtRegisterThreadTerminatePort( 01651 /*IN*/ HANDLE PortHandle); 01652 01653 NTOSAPI 01654 NTSTATUS 01655 NTAPI 01656 ZwRegisterThreadTerminatePort( 01657 /*IN*/ HANDLE PortHandle); 01658 01659 NTOSAPI 01660 NTSTATUS 01661 NTAPI 01662 NtImpersonateThread( 01663 /*IN*/ HANDLE ThreadHandle, 01664 /*IN*/ HANDLE TargetThreadHandle, 01665 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos); 01666 01667 NTOSAPI 01668 NTSTATUS 01669 NTAPI 01670 ZwImpersonateThread( 01671 /*IN*/ HANDLE ThreadHandle, 01672 /*IN*/ HANDLE TargetThreadHandle, 01673 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos); 01674 01675 NTOSAPI 01676 NTSTATUS 01677 NTAPI 01678 NtImpersonateAnonymousToken( 01679 /*IN*/ HANDLE ThreadHandle); 01680 01681 NTOSAPI 01682 NTSTATUS 01683 NTAPI 01684 ZwImpersonateAnonymousToken( 01685 /*IN*/ HANDLE ThreadHandle); 01686 01687 01688 01689 01690 /* Processes */ 01691 01692 NTOSAPI 01693 NTSTATUS 01694 NTAPI 01695 NtCreateProcess( 01696 /*OUT*/ PHANDLE ProcessHandle, 01697 /*IN*/ ACCESS_MASK DesiredAccess, 01698 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01699 /*IN*/ HANDLE InheritFromProcessHandle, 01700 /*IN*/ BOOLEAN InheritHandles, 01701 /*IN*/ HANDLE SectionHandle /*OPTIONAL*/, 01702 /*IN*/ HANDLE DebugPort /*OPTIONAL*/, 01703 /*IN*/ HANDLE ExceptionPort /*OPTIONAL*/); 01704 01705 NTOSAPI 01706 NTSTATUS 01707 NTAPI 01708 ZwCreateProcess( 01709 /*OUT*/ PHANDLE ProcessHandle, 01710 /*IN*/ ACCESS_MASK DesiredAccess, 01711 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 01712 /*IN*/ HANDLE InheritFromProcessHandle, 01713 /*IN*/ BOOLEAN InheritHandles, 01714 /*IN*/ HANDLE SectionHandle /*OPTIONAL*/, 01715 /*IN*/ HANDLE DebugPort /*OPTIONAL*/, 01716 /*IN*/ HANDLE ExceptionPort /*OPTIONAL*/); 01717 01718 NTOSAPI 01719 NTSTATUS 01720 NTAPI 01721 NtTerminateProcess( 01722 /*IN*/ HANDLE ProcessHandle /*OPTIONAL*/, 01723 /*IN*/ NTSTATUS ExitStatus); 01724 01725 NTOSAPI 01726 NTSTATUS 01727 NTAPI 01728 ZwTerminateProcess( 01729 /*IN*/ HANDLE ProcessHandle /*OPTIONAL*/, 01730 /*IN*/ NTSTATUS ExitStatus); 01731 01732 NTOSAPI 01733 NTSTATUS 01734 NTAPI 01735 NtQueryInformationProcess( 01736 /*IN*/ HANDLE ProcessHandle, 01737 /*IN*/ PROCESSINFOCLASS ProcessInformationClass, 01738 /*OUT*/ PVOID ProcessInformation, 01739 /*IN*/ ULONG ProcessInformationLength, 01740 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01741 01742 NTOSAPI 01743 NTSTATUS 01744 NTAPI 01745 ZwQueryInformationProcess( 01746 /*IN*/ HANDLE ProcessHandle, 01747 /*IN*/ PROCESSINFOCLASS ProcessInformationClass, 01748 /*OUT*/ PVOID ProcessInformation, 01749 /*IN*/ ULONG ProcessInformationLength, 01750 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 01751 01752 NTOSAPI 01753 NTSTATUS 01754 NTAPI 01755 NtSetInformationProcess( 01756 /*IN*/ HANDLE ProcessHandle, 01757 /*IN*/ PROCESSINFOCLASS ProcessInformationClass, 01758 /*IN*/ PVOID ProcessInformation, 01759 /*IN*/ ULONG ProcessInformationLength); 01760 01761 NTOSAPI 01762 NTSTATUS 01763 NTAPI 01764 ZwSetInformationProcess( 01765 /*IN*/ HANDLE ProcessHandle, 01766 /*IN*/ PROCESSINFOCLASS ProcessInformationClass, 01767 /*IN*/ PVOID ProcessInformation, 01768 /*IN*/ ULONG ProcessInformationLength); 01769 01770 typedef struct _PROCESS_BASIC_INFORMATION { 01771 NTSTATUS ExitStatus; 01772 PPEB PebBaseAddress; 01773 KAFFINITY AffinityMask; 01774 KPRIORITY BasePriority; 01775 ULONG UniqueProcessId; 01776 ULONG InheritedFromUniqueProcessId; 01777 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; 01778 01779 typedef struct _PROCESS_ACCESS_TOKEN { 01780 HANDLE Token; 01781 HANDLE Thread; 01782 } PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; 01783 01784 /* DefaultHardErrorMode constants */ 01785 /* also in winbase.h */ 01786 #define SEM_FAILCRITICALERRORS 0x0001 01787 #define SEM_NOGPFAULTERRORBOX 0x0002 01788 #define SEM_NOALIGNMENTFAULTEXCEPT 0x0004 01789 #define SEM_NOOPENFILEERRORBOX 0x8000 01790 /* end winbase.h */ 01791 typedef struct _POOLED_USAGE_AND_LIMITS { 01792 ULONG PeakPagedPoolUsage; 01793 ULONG PagedPoolUsage; 01794 ULONG PagedPoolLimit; 01795 ULONG PeakNonPagedPoolUsage; 01796 ULONG NonPagedPoolUsage; 01797 ULONG NonPagedPoolLimit; 01798 ULONG PeakPagefileUsage; 01799 ULONG PagefileUsage; 01800 ULONG PagefileLimit; 01801 } POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS; 01802 01803 typedef struct _PROCESS_WS_WATCH_INFORMATION { 01804 PVOID FaultingPc; 01805 PVOID FaultingVa; 01806 } PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION; 01807 01808 /* PROCESS_PRIORITY_CLASS.PriorityClass constants */ 01809 #define PC_IDLE 1 01810 #define PC_NORMAL 2 01811 #define PC_HIGH 3 01812 #define PC_REALTIME 4 01813 #define PC_BELOW_NORMAL 5 01814 #define PC_ABOVE_NORMAL 6 01815 01816 typedef struct _PROCESS_PRIORITY_CLASS { 01817 BOOLEAN Foreground; 01818 UCHAR PriorityClass; 01819 } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS; 01820 01821 /* PROCESS_DEVICEMAP_INFORMATION.DriveType constants */ 01822 #define DRIVE_UNKNOWN 0 01823 #define DRIVE_NO_ROOT_DIR 1 01824 #define DRIVE_REMOVABLE 2 01825 #define DRIVE_FIXED 3 01826 #define DRIVE_REMOTE 4 01827 #define DRIVE_CDROM 5 01828 #define DRIVE_RAMDISK 6 01829 01830 typedef struct _PROCESS_DEVICEMAP_INFORMATION { 01831 _ANONYMOUS_UNION union { 01832 struct { 01833 HANDLE DirectoryHandle; 01834 } Set; 01835 struct { 01836 ULONG DriveMap; 01837 UCHAR DriveType[32]; 01838 } Query; 01839 } DUMMYUNIONNAME; 01840 } PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION; 01841 01842 typedef struct _PROCESS_SESSION_INFORMATION { 01843 ULONG SessionId; 01844 } PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; 01845 01846 typedef struct _RTL_USER_PROCESS_PARAMETERS { 01847 ULONG AllocationSize; 01848 ULONG Size; 01849 ULONG Flags; 01850 ULONG DebugFlags; 01851 HANDLE hConsole; 01852 ULONG ProcessGroup; 01853 HANDLE hStdInput; 01854 HANDLE hStdOutput; 01855 HANDLE hStdError; 01856 UNICODE_STRING CurrentDirectoryName; 01857 HANDLE CurrentDirectoryHandle; 01858 UNICODE_STRING DllPath; 01859 UNICODE_STRING ImagePathName; 01860 UNICODE_STRING CommandLine; 01861 PWSTR Environment; 01862 ULONG dwX; 01863 ULONG dwY; 01864 ULONG dwXSize; 01865 ULONG dwYSize; 01866 ULONG dwXCountChars; 01867 ULONG dwYCountChars; 01868 ULONG dwFillAttribute; 01869 ULONG dwFlags; 01870 ULONG wShowWindow; 01871 UNICODE_STRING WindowTitle; 01872 UNICODE_STRING DesktopInfo; 01873 UNICODE_STRING ShellInfo; 01874 UNICODE_STRING RuntimeInfo; 01875 } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS; 01876 01877 NTSTATUS 01878 NTAPI 01879 RtlCreateProcessParameters( 01880 /*OUT*/ PRTL_USER_PROCESS_PARAMETERS *ProcessParameters, 01881 /*IN*/ PUNICODE_STRING ImageFile, 01882 /*IN*/ PUNICODE_STRING DllPath /*OPTIONAL*/, 01883 /*IN*/ PUNICODE_STRING CurrentDirectory /*OPTIONAL*/, 01884 /*IN*/ PUNICODE_STRING CommandLine /*OPTIONAL*/, 01885 /*IN*/ PWSTR Environment /*OPTIONAL*/, 01886 /*IN*/ PUNICODE_STRING WindowTitle /*OPTIONAL*/, 01887 /*IN*/ PUNICODE_STRING DesktopInfo /*OPTIONAL*/, 01888 /*IN*/ PUNICODE_STRING ShellInfo /*OPTIONAL*/, 01889 /*IN*/ PUNICODE_STRING RuntimeInfo /*OPTIONAL*/); 01890 01891 NTSTATUS 01892 NTAPI 01893 RtlDestroyProcessParameters( 01894 /*IN*/ PRTL_USER_PROCESS_PARAMETERS ProcessParameters); 01895 01896 typedef struct _DEBUG_BUFFER { 01897 HANDLE SectionHandle; 01898 PVOID SectionBase; 01899 PVOID RemoteSectionBase; 01900 ULONG SectionBaseDelta; 01901 HANDLE EventPairHandle; 01902 ULONG Unknown[2]; 01903 HANDLE RemoteThreadHandle; 01904 ULONG InfoClassMask; 01905 ULONG SizeOfInfo; 01906 ULONG AllocatedSize; 01907 ULONG SectionSize; 01908 PVOID ModuleInformation; 01909 PVOID BackTraceInformation; 01910 PVOID HeapInformation; 01911 PVOID LockInformation; 01912 PVOID Reserved[8]; 01913 } DEBUG_BUFFER, *PDEBUG_BUFFER; 01914 01915 PDEBUG_BUFFER 01916 NTAPI 01917 RtlCreateQueryDebugBuffer( 01918 /*IN*/ ULONG Size, 01919 /*IN*/ BOOLEAN EventPair); 01920 01921 /* RtlQueryProcessDebugInformation.DebugInfoClassMask constants */ 01922 #define PDI_MODULES 0x01 01923 #define PDI_BACKTRACE 0x02 01924 #define PDI_HEAPS 0x04 01925 #define PDI_HEAP_TAGS 0x08 01926 #define PDI_HEAP_BLOCKS 0x10 01927 #define PDI_LOCKS 0x20 01928 01929 NTSTATUS 01930 NTAPI 01931 RtlQueryProcessDebugInformation( 01932 /*IN*/ ULONG ProcessId, 01933 /*IN*/ ULONG DebugInfoClassMask, 01934 /*IN OUT*/ PDEBUG_BUFFER DebugBuffer); 01935 01936 NTSTATUS 01937 NTAPI 01938 RtlDestroyQueryDebugBuffer( 01939 /*IN*/ PDEBUG_BUFFER DebugBuffer); 01940 01941 /* DEBUG_MODULE_INFORMATION.Flags constants */ 01942 #define LDRP_STATIC_LINK 0x00000002 01943 #define LDRP_IMAGE_DLL 0x00000004 01944 #define LDRP_LOAD_IN_PROGRESS 0x00001000 01945 #define LDRP_UNLOAD_IN_PROGRESS 0x00002000 01946 #define LDRP_ENTRY_PROCESSED 0x00004000 01947 #define LDRP_ENTRY_INSERTED 0x00008000 01948 #define LDRP_CURRENT_LOAD 0x00010000 01949 #define LDRP_FAILED_BUILTIN_LOAD 0x00020000 01950 #define LDRP_DONT_CALL_FOR_THREADS 0x00040000 01951 #define LDRP_PROCESS_ATTACH_CALLED 0x00080000 01952 #define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000 01953 #define LDRP_IMAGE_NOT_AT_BASE 0x00200000 01954 #define LDRP_WX86_IGNORE_MACHINETYPE 0x00400000 01955 01956 typedef struct _DEBUG_MODULE_INFORMATION { 01957 ULONG Reserved[2]; 01958 ULONG Base; 01959 ULONG Size; 01960 ULONG Flags; 01961 USHORT Index; 01962 USHORT Unknown; 01963 USHORT LoadCount; 01964 USHORT ModuleNameOffset; 01965 CHAR ImageName[256]; 01966 } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION; 01967 01968 typedef struct _DEBUG_HEAP_INFORMATION { 01969 ULONG Base; 01970 ULONG Flags; 01971 USHORT Granularity; 01972 USHORT Unknown; 01973 ULONG Allocated; 01974 ULONG Committed; 01975 ULONG TagCount; 01976 ULONG BlockCount; 01977 ULONG Reserved[7]; 01978 PVOID Tags; 01979 PVOID Blocks; 01980 } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION; 01981 01982 typedef struct _DEBUG_LOCK_INFORMATION { 01983 PVOID Address; 01984 USHORT Type; 01985 USHORT CreatorBackTraceIndex; 01986 ULONG OwnerThreadId; 01987 ULONG ActiveCount; 01988 ULONG ContentionCount; 01989 ULONG EntryCount; 01990 ULONG RecursionCount; 01991 ULONG NumberOfSharedWaiters; 01992 ULONG NumberOfExclusiveWaiters; 01993 } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION; 01994 01995 01996 01997 /* Jobs */ 01998 01999 NTOSAPI 02000 NTSTATUS 02001 NTAPI 02002 NtCreateJobObject( 02003 /*OUT*/ PHANDLE JobHandle, 02004 /*IN*/ ACCESS_MASK DesiredAccess, 02005 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); 02006 02007 NTOSAPI 02008 NTSTATUS 02009 NTAPI 02010 ZwCreateJobObject( 02011 /*OUT*/ PHANDLE JobHandle, 02012 /*IN*/ ACCESS_MASK DesiredAccess, 02013 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); 02014 02015 NTOSAPI 02016 NTSTATUS 02017 NTAPI 02018 NtOpenJobObject( 02019 /*OUT*/ PHANDLE JobHandle, 02020 /*IN*/ ACCESS_MASK DesiredAccess, 02021 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); 02022 02023 NTOSAPI 02024 NTSTATUS 02025 NTAPI 02026 ZwOpenJobObject( 02027 /*OUT*/ PHANDLE JobHandle, 02028 /*IN*/ ACCESS_MASK DesiredAccess, 02029 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); 02030 02031 NTOSAPI 02032 NTSTATUS 02033 NTAPI 02034 NtTerminateJobObject( 02035 /*IN*/ HANDLE JobHandle, 02036 /*IN*/ NTSTATUS ExitStatus); 02037 02038 NTOSAPI 02039 NTSTATUS 02040 NTAPI 02041 ZwTerminateJobObject( 02042 /*IN*/ HANDLE JobHandle, 02043 /*IN*/ NTSTATUS ExitStatus); 02044 02045 NTOSAPI 02046 NTSTATUS 02047 NTAPI 02048 NtAssignProcessToJobObject( 02049 /*IN*/ HANDLE JobHandle, 02050 /*IN*/ HANDLE ProcessHandle); 02051 02052 NTOSAPI 02053 NTSTATUS 02054 NTAPI 02055 ZwAssignProcessToJobObject( 02056 /*IN*/ HANDLE JobHandle, 02057 /*IN*/ HANDLE ProcessHandle); 02058 02059 NTOSAPI 02060 NTSTATUS 02061 NTAPI 02062 NtQueryInformationJobObject( 02063 /*IN*/ HANDLE JobHandle, 02064 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass, 02065 /*OUT*/ PVOID JobInformation, 02066 /*IN*/ ULONG JobInformationLength, 02067 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 02068 02069 NTOSAPI 02070 NTSTATUS 02071 NTAPI 02072 ZwQueryInformationJobObject( 02073 /*IN*/ HANDLE JobHandle, 02074 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass, 02075 /*OUT*/ PVOID JobInformation, 02076 /*IN*/ ULONG JobInformationLength, 02077 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 02078 02079 NTOSAPI 02080 NTSTATUS 02081 NTAPI 02082 NtSetInformationJobObject( 02083 /*IN*/ HANDLE JobHandle, 02084 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass, 02085 /*IN*/ PVOID JobInformation, 02086 /*IN*/ ULONG JobInformationLength); 02087 02088 NTOSAPI 02089 NTSTATUS 02090 NTAPI 02091 ZwSetInformationJobObject( 02092 /*IN*/ HANDLE JobHandle, 02093 /*IN*/ JOBOBJECTINFOCLASS JobInformationClass, 02094 /*IN*/ PVOID JobInformation, 02095 /*IN*/ ULONG JobInformationLength); 02096 02097 02098 /* Tokens */ 02099 02100 NTOSAPI 02101 NTSTATUS 02102 NTAPI 02103 NtCreateToken( 02104 /*OUT*/ PHANDLE TokenHandle, 02105 /*IN*/ ACCESS_MASK DesiredAccess, 02106 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 02107 /*IN*/ TOKEN_TYPE Type, 02108 /*IN*/ PLUID AuthenticationId, 02109 /*IN*/ PLARGE_INTEGER ExpirationTime, 02110 /*IN*/ PTOKEN_USER User, 02111 /*IN*/ PTOKEN_GROUPS Groups, 02112 /*IN*/ PTOKEN_PRIVILEGES Privileges, 02113 /*IN*/ PTOKEN_OWNER Owner, 02114 /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup, 02115 /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl, 02116 /*IN*/ PTOKEN_SOURCE Source 02117 ); 02118 02119 NTOSAPI 02120 NTSTATUS 02121 NTAPI 02122 ZwCreateToken( 02123 /*OUT*/ PHANDLE TokenHandle, 02124 /*IN*/ ACCESS_MASK DesiredAccess, 02125 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 02126 /*IN*/ TOKEN_TYPE Type, 02127 /*IN*/ PLUID AuthenticationId, 02128 /*IN*/ PLARGE_INTEGER ExpirationTime, 02129 /*IN*/ PTOKEN_USER User, 02130 /*IN*/ PTOKEN_GROUPS Groups, 02131 /*IN*/ PTOKEN_PRIVILEGES Privileges, 02132 /*IN*/ PTOKEN_OWNER Owner, 02133 /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup, 02134 /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl, 02135 /*IN*/ PTOKEN_SOURCE Source 02136 ); 02137 02138 NTOSAPI 02139 NTSTATUS 02140 NTAPI 02141 NtOpenProcessToken( 02142 /*IN*/ HANDLE ProcessHandle, 02143 /*IN*/ ACCESS_MASK DesiredAccess, 02144 /*OUT*/ PHANDLE TokenHandle); 02145 02146 NTOSAPI 02147 NTSTATUS 02148 NTAPI 02149 ZwOpenProcessToken( 02150 /*IN*/ HANDLE ProcessHandle, 02151 /*IN*/ ACCESS_MASK DesiredAccess, 02152 /*OUT*/ PHANDLE TokenHandle); 02153 02154 NTOSAPI 02155 NTSTATUS 02156 NTAPI 02157 NtOpenThreadToken( 02158 /*IN*/ HANDLE ThreadHandle, 02159 /*IN*/ ACCESS_MASK DesiredAccess, 02160 /*IN*/ BOOLEAN OpenAsSelf, 02161 /*OUT*/ PHANDLE TokenHandle); 02162 02163 NTOSAPI 02164 NTSTATUS 02165 NTAPI 02166 ZwOpenThreadToken( 02167 /*IN*/ HANDLE ThreadHandle, 02168 /*IN*/ ACCESS_MASK DesiredAccess, 02169 /*IN*/ BOOLEAN OpenAsSelf, 02170 /*OUT*/ PHANDLE TokenHandle); 02171 02172 NTOSAPI 02173 NTSTATUS 02174 NTAPI 02175 NtDuplicateToken( 02176 /*IN*/ HANDLE ExistingTokenHandle, 02177 /*IN*/ ACCESS_MASK DesiredAccess, 02178 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 02179 /*IN*/ BOOLEAN EffectiveOnly, 02180 /*IN*/ TOKEN_TYPE TokenType, 02181 /*OUT*/ PHANDLE NewTokenHandle); 02182 02183 NTOSAPI 02184 NTSTATUS 02185 NTAPI 02186 ZwDuplicateToken( 02187 /*IN*/ HANDLE ExistingTokenHandle, 02188 /*IN*/ ACCESS_MASK DesiredAccess, 02189 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 02190 /*IN*/ BOOLEAN EffectiveOnly, 02191 /*IN*/ TOKEN_TYPE TokenType, 02192 /*OUT*/ PHANDLE NewTokenHandle); 02193 02194 NTOSAPI 02195 NTSTATUS 02196 NTAPI 02197 NtFilterToken( 02198 /*IN*/ HANDLE ExistingTokenHandle, 02199 /*IN*/ ULONG Flags, 02200 /*IN*/ PTOKEN_GROUPS SidsToDisable, 02201 /*IN*/ PTOKEN_PRIVILEGES PrivilegesToDelete, 02202 /*IN*/ PTOKEN_GROUPS SidsToRestricted, 02203 /*OUT*/ PHANDLE NewTokenHandle); 02204 02205 NTOSAPI 02206 NTSTATUS 02207 NTAPI 02208 ZwFilterToken( 02209 /*IN*/ HANDLE ExistingTokenHandle, 02210 /*IN*/ ULONG Flags, 02211 /*IN*/ PTOKEN_GROUPS SidsToDisable, 02212 /*IN*/ PTOKEN_PRIVILEGES PrivilegesToDelete, 02213 /*IN*/ PTOKEN_GROUPS SidsToRestricted, 02214 /*OUT*/ PHANDLE NewTokenHandle); 02215 02216 NTOSAPI 02217 NTSTATUS 02218 NTAPI 02219 NtAdjustPrivilegesToken( 02220 /*IN*/ HANDLE TokenHandle, 02221 /*IN*/ BOOLEAN DisableAllPrivileges, 02222 /*IN*/ PTOKEN_PRIVILEGES NewState, 02223 /*IN*/ ULONG BufferLength, 02224 /*OUT*/ PTOKEN_PRIVILEGES PreviousState /*OPTIONAL*/, 02225 /*OUT*/ PULONG ReturnLength); 02226 02227 NTOSAPI 02228 NTSTATUS 02229 NTAPI 02230 ZwAdjustPrivilegesToken( 02231 /*IN*/ HANDLE TokenHandle, 02232 /*IN*/ BOOLEAN DisableAllPrivileges, 02233 /*IN*/ PTOKEN_PRIVILEGES NewState, 02234 /*IN*/ ULONG BufferLength, 02235 /*OUT*/ PTOKEN_PRIVILEGES PreviousState /*OPTIONAL*/, 02236 /*OUT*/ PULONG ReturnLength); 02237 02238 NTOSAPI 02239 NTSTATUS 02240 NTAPI 02241 NtAdjustGroupsToken( 02242 /*IN*/ HANDLE TokenHandle, 02243 /*IN*/ BOOLEAN ResetToDefault, 02244 /*IN*/ PTOKEN_GROUPS NewState, 02245 /*IN*/ ULONG BufferLength, 02246 /*OUT*/ PTOKEN_GROUPS PreviousState /*OPTIONAL*/, 02247 /*OUT*/ PULONG ReturnLength); 02248 02249 NTOSAPI 02250 NTSTATUS 02251 NTAPI 02252 ZwAdjustGroupsToken( 02253 /*IN*/ HANDLE TokenHandle, 02254 /*IN*/ BOOLEAN ResetToDefault, 02255 /*IN*/ PTOKEN_GROUPS NewState, 02256 /*IN*/ ULONG BufferLength, 02257 /*OUT*/ PTOKEN_GROUPS PreviousState /*OPTIONAL*/, 02258 /*OUT*/ PULONG ReturnLength); 02259 02260 NTOSAPI 02261 NTSTATUS 02262 NTAPI 02263 NtQueryInformationToken( 02264 /*IN*/ HANDLE TokenHandle, 02265 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass, 02266 /*OUT*/ PVOID TokenInformation, 02267 /*IN*/ ULONG TokenInformationLength, 02268 /*OUT*/ PULONG ReturnLength); 02269 02270 NTOSAPI 02271 NTSTATUS 02272 NTAPI 02273 ZwQueryInformationToken( 02274 /*IN*/ HANDLE TokenHandle, 02275 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass, 02276 /*OUT*/ PVOID TokenInformation, 02277 /*IN*/ ULONG TokenInformationLength, 02278 /*OUT*/ PULONG ReturnLength); 02279 02280 NTOSAPI 02281 NTSTATUS 02282 NTAPI 02283 NtSetInformationToken( 02284 /*IN*/ HANDLE TokenHandle, 02285 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass, 02286 /*IN*/ PVOID TokenInformation, 02287 /*IN*/ ULONG TokenInformationLength); 02288 02289 NTOSAPI 02290 NTSTATUS 02291 NTAPI 02292 ZwSetInformationToken( 02293 /*IN*/ HANDLE TokenHandle, 02294 /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass, 02295 /*IN*/ PVOID TokenInformation, 02296 /*IN*/ ULONG TokenInformationLength); 02297 02298 02299 02300 02301 /* Time */ 02302 02303 NTOSAPI 02304 NTSTATUS 02305 NTAPI 02306 NtQuerySystemTime( 02307 /*OUT*/ PLARGE_INTEGER CurrentTime); 02308 02309 NTOSAPI 02310 NTSTATUS 02311 NTAPI 02312 ZwQuerySystemTime( 02313 /*OUT*/ PLARGE_INTEGER CurrentTime); 02314 02315 NTOSAPI 02316 NTSTATUS 02317 NTAPI 02318 NtSetSystemTime( 02319 /*IN*/ PLARGE_INTEGER NewTime, 02320 /*OUT*/ PLARGE_INTEGER OldTime /*OPTIONAL*/); 02321 02322 NTOSAPI 02323 NTSTATUS 02324 NTAPI 02325 ZwSetSystemTime( 02326 /*IN*/ PLARGE_INTEGER NewTime, 02327 /*OUT*/ PLARGE_INTEGER OldTime /*OPTIONAL*/); 02328 02329 NTOSAPI 02330 NTSTATUS 02331 NTAPI 02332 NtQueryPerformanceCounter( 02333 /*OUT*/ PLARGE_INTEGER PerformanceCount, 02334 /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/); 02335 02336 NTOSAPI 02337 NTSTATUS 02338 NTAPI 02339 ZwQueryPerformanceCounter( 02340 /*OUT*/ PLARGE_INTEGER PerformanceCount, 02341 /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/); 02342 02343 NTOSAPI 02344 NTSTATUS 02345 NTAPI 02346 NtQueryTimerResolution( 02347 /*OUT*/ PULONG CoarsestResolution, 02348 /*OUT*/ PULONG FinestResolution, 02349 /*OUT*/ PULONG ActualResolution); 02350 02351 NTOSAPI 02352 NTSTATUS 02353 NTAPI 02354 ZwQueryTimerResolution( 02355 /*OUT*/ PULONG CoarsestResolution, 02356 /*OUT*/ PULONG FinestResolution, 02357 /*OUT*/ PULONG ActualResolution); 02358 02359 NTOSAPI 02360 NTSTATUS 02361 NTAPI 02362 NtDelayExecution( 02363 /*IN*/ BOOLEAN Alertable, 02364 /*IN*/ PLARGE_INTEGER Interval); 02365 02366 NTOSAPI 02367 NTSTATUS 02368 NTAPI 02369 ZwDelayExecution( 02370 /*IN*/ BOOLEAN Alertable, 02371 /*IN*/ PLARGE_INTEGER Interval); 02372 02373 NTOSAPI 02374 NTSTATUS 02375 NTAPI 02376 NtYieldExecution( 02377 VOID); 02378 02379 NTOSAPI 02380 NTSTATUS 02381 NTAPI 02382 ZwYieldExecution( 02383 VOID); 02384 02385 NTOSAPI 02386 ULONG 02387 NTAPI 02388 NtGetTickCount( 02389 VOID); 02390 02391 NTOSAPI 02392 ULONG 02393 NTAPI 02394 ZwGetTickCount( 02395 VOID); 02396 02397 02398 02399 02400 /* Execution profiling */ 02401 02402 NTOSAPI 02403 NTSTATUS 02404 NTAPI 02405 NtCreateProfile( 02406 /*OUT*/ PHANDLE ProfileHandle, 02407 /*IN*/ HANDLE ProcessHandle, 02408 /*IN*/ PVOID Base, 02409 /*IN*/ ULONG Size, 02410 /*IN*/ ULONG BucketShift, 02411 /*IN*/ PULONG Buffer, 02412 /*IN*/ ULONG BufferLength, 02413 /*IN*/ KPROFILE_SOURCE Source, 02414 /*IN*/ ULONG ProcessorMask); 02415 02416 NTOSAPI 02417 NTSTATUS 02418 NTAPI 02419 ZwCreateProfile( 02420 /*OUT*/ PHANDLE ProfileHandle, 02421 /*IN*/ HANDLE ProcessHandle, 02422 /*IN*/ PVOID Base, 02423 /*IN*/ ULONG Size, 02424 /*IN*/ ULONG BucketShift, 02425 /*IN*/ PULONG Buffer, 02426 /*IN*/ ULONG BufferLength, 02427 /*IN*/ KPROFILE_SOURCE Source, 02428 /*IN*/ ULONG ProcessorMask); 02429 02430 NTOSAPI 02431 NTSTATUS 02432 NTAPI 02433 NtSetIntervalProfile( 02434 /*IN*/ ULONG Interval, 02435 /*IN*/ KPROFILE_SOURCE Source); 02436 02437 NTOSAPI 02438 NTSTATUS 02439 NTAPI 02440 ZwSetIntervalProfile( 02441 /*IN*/ ULONG Interval, 02442 /*IN*/ KPROFILE_SOURCE Source); 02443 02444 NTOSAPI 02445 NTSTATUS 02446 NTAPI 02447 NtQueryIntervalProfile( 02448 /*IN*/ KPROFILE_SOURCE Source, 02449 /*OUT*/ PULONG Interval); 02450 02451 NTOSAPI 02452 NTSTATUS 02453 NTAPI 02454 ZwQueryIntervalProfile( 02455 /*IN*/ KPROFILE_SOURCE Source, 02456 /*OUT*/ PULONG Interval); 02457 02458 NTOSAPI 02459 NTSTATUS 02460 NTAPI 02461 NtStartProfile( 02462 /*IN*/ HANDLE ProfileHandle); 02463 02464 NTOSAPI 02465 NTSTATUS 02466 NTAPI 02467 ZwStartProfile( 02468 /*IN*/ HANDLE ProfileHandle); 02469 02470 NTOSAPI 02471 NTSTATUS 02472 NTAPI 02473 NtStopProfile( 02474 /*IN*/ HANDLE ProfileHandle); 02475 02476 NTOSAPI 02477 NTSTATUS 02478 NTAPI 02479 ZwStopProfile( 02480 /*IN*/ HANDLE ProfileHandle); 02481 02482 /* Local Procedure Call (LPC) */ 02483 02484 typedef struct _LPC_MESSAGE { 02485 USHORT DataSize; 02486 USHORT MessageSize; 02487 USHORT MessageType; 02488 USHORT VirtualRangesOffset; 02489 CLIENT_ID ClientId; 02490 ULONG MessageId; 02491 ULONG SectionSize; 02492 UCHAR Data[ANYSIZE_ARRAY]; 02493 } LPC_MESSAGE, *PLPC_MESSAGE; 02494 02495 #define LPC_MESSAGE_BASE_SIZE 24 02496 02497 typedef enum _LPC_TYPE { 02498 LPC_NEW_MESSAGE, 02499 LPC_REQUEST, 02500 LPC_REPLY, 02501 LPC_DATAGRAM, 02502 LPC_LOST_REPLY, 02503 LPC_PORT_CLOSED, 02504 LPC_CLIENT_DIED, 02505 LPC_EXCEPTION, 02506 LPC_DEBUG_EVENT, 02507 LPC_ERROR_EVENT, 02508 LPC_CONNECTION_REQUEST, 02509 LPC_CONNECTION_REFUSED, 02510 LPC_MAXIMUM 02511 } LPC_TYPE; 02512 02513 typedef struct _LPC_SECTION_WRITE { 02514 ULONG Length; 02515 HANDLE SectionHandle; 02516 ULONG SectionOffset; 02517 ULONG ViewSize; 02518 PVOID ViewBase; 02519 PVOID TargetViewBase; 02520 } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE; 02521 02522 typedef struct _LPC_SECTION_READ { 02523 ULONG Length; 02524 ULONG ViewSize; 02525 PVOID ViewBase; 02526 } LPC_SECTION_READ, *PLPC_SECTION_READ; 02527 02528 NTOSAPI 02529 NTSTATUS 02530 NTAPI 02531 NtCreatePort( 02532 /*OUT*/ PHANDLE PortHandle, 02533 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 02534 /*IN*/ ULONG MaxDataSize, 02535 /*IN*/ ULONG MaxMessageSize, 02536 /*IN*/ ULONG Reserved); 02537 02538 NTOSAPI 02539 NTSTATUS 02540 NTAPI 02541 ZwCreatePort( 02542 /*OUT*/ PHANDLE PortHandle, 02543 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 02544 /*IN*/ ULONG MaxDataSize, 02545 /*IN*/ ULONG MaxMessageSize, 02546 /*IN*/ ULONG Reserved); 02547 02548 NTOSAPI 02549 NTSTATUS 02550 NTAPI 02551 NtCreateWaitablePort( 02552 /*OUT*/ PHANDLE PortHandle, 02553 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 02554 /*IN*/ ULONG MaxDataSize, 02555 /*IN*/ ULONG MaxMessageSize, 02556 /*IN*/ ULONG Reserved); 02557 02558 NTOSAPI 02559 NTSTATUS 02560 NTAPI 02561 ZwCreateWaitablePort( 02562 /*OUT*/ PHANDLE PortHandle, 02563 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, 02564 /*IN*/ ULONG MaxDataSize, 02565 /*IN*/ ULONG MaxMessageSize, 02566 /*IN*/ ULONG Reserved); 02567 02568 NTOSAPI 02569 NTSTATUS 02570 NTAPI 02571 NtConnectPort( 02572 /*OUT*/ PHANDLE PortHandle, 02573 /*IN*/ PUNICODE_STRING PortName, 02574 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos, 02575 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/, 02576 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/, 02577 /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/, 02578 /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/, 02579 /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/); 02580 02581 NTOSAPI 02582 NTSTATUS 02583 NTAPI 02584 ZwConnectPort( 02585 /*OUT*/ PHANDLE PortHandle, 02586 /*IN*/ PUNICODE_STRING PortName, 02587 /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos, 02588 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/, 02589 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/, 02590 /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/, 02591 /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/, 02592 /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/); 02593 02594 NTOSAPI 02595 NTSTATUS 02596 NTAPI 02597 NtListenPort( 02598 /*IN*/ HANDLE PortHandle, 02599 /*OUT*/ PLPC_MESSAGE Message); 02600 02601 NTOSAPI 02602 NTSTATUS 02603 NTAPI 02604 ZwListenPort( 02605 /*IN*/ HANDLE PortHandle, 02606 /*OUT*/ PLPC_MESSAGE Message); 02607 02608 NTOSAPI 02609 NTSTATUS 02610 NTAPI 02611 NtAcceptConnectPort( 02612 /*OUT*/ PHANDLE PortHandle, 02613 /*IN*/ ULONG PortIdentifier, 02614 /*IN*/ PLPC_MESSAGE Message, 02615 /*IN*/ BOOLEAN Accept, 02616 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/, 02617 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/); 02618 02619 NTOSAPI 02620 NTSTATUS 02621 NTAPI 02622 ZwAcceptConnectPort( 02623 /*OUT*/ PHANDLE PortHandle, 02624 /*IN*/ ULONG PortIdentifier, 02625 /*IN*/ PLPC_MESSAGE Message, 02626 /*IN*/ BOOLEAN Accept, 02627 /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/, 02628 /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/); 02629 02630 NTOSAPI 02631 NTSTATUS 02632 NTAPI 02633 NtCompleteConnectPort( 02634 /*IN*/ HANDLE PortHandle); 02635 02636 NTOSAPI 02637 NTSTATUS 02638 NTAPI 02639 ZwCompleteConnectPort( 02640 /*IN*/ HANDLE PortHandle); 02641 02642 NTOSAPI 02643 NTSTATUS 02644 NTAPI 02645 NtRequestPort( 02646 /*IN*/ HANDLE PortHandle, 02647 /*IN*/ PLPC_MESSAGE RequestMessage); 02648 02649 NTOSAPI 02650 NTSTATUS 02651 NTAPI 02652 ZwRequestPort( 02653 /*IN*/ HANDLE PortHandle, 02654 /*IN*/ PLPC_MESSAGE RequestMessage); 02655 02656 NTOSAPI 02657 NTSTATUS 02658 NTAPI 02659 NtRequestWaitReplyPort( 02660 /*IN*/ HANDLE PortHandle, 02661 /*IN*/ PLPC_MESSAGE RequestMessage, 02662 /*OUT*/ PLPC_MESSAGE ReplyMessage); 02663 02664 NTOSAPI 02665 NTSTATUS 02666 NTAPI 02667 ZwRequestWaitReplyPort( 02668 /*IN*/ HANDLE PortHandle, 02669 /*IN*/ PLPC_MESSAGE RequestMessage, 02670 /*OUT*/ PLPC_MESSAGE ReplyMessage); 02671 02672 NTOSAPI 02673 NTSTATUS 02674 NTAPI 02675 NtReplyPort( 02676 /*IN*/ HANDLE PortHandle, 02677 /*IN*/ PLPC_MESSAGE ReplyMessage); 02678 02679 NTOSAPI 02680 NTSTATUS 02681 NTAPI 02682 ZwReplyPort( 02683 /*IN*/ HANDLE PortHandle, 02684 /*IN*/ PLPC_MESSAGE ReplyMessage); 02685 02686 NTOSAPI 02687 NTSTATUS 02688 NTAPI 02689 NtReplyWaitReplyPort( 02690 /*IN*/ HANDLE PortHandle, 02691 /*IN OUT*/ PLPC_MESSAGE ReplyMessage); 02692 02693 NTOSAPI 02694 NTSTATUS 02695 NTAPI 02696 ZwReplyWaitReplyPort( 02697 /*IN*/ HANDLE PortHandle, 02698 /*IN OUT*/ PLPC_MESSAGE ReplyMessage); 02699 02700 NTOSAPI 02701 NTSTATUS 02702 NTAPI 02703 NtReplyWaitReceivePort( 02704 /*IN*/ HANDLE PortHandle, 02705 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/, 02706 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/, 02707 /*OUT*/ PLPC_MESSAGE Message); 02708 02709 NTOSAPI 02710 NTSTATUS 02711 NTAPI 02712 ZwReplyWaitReceivePort( 02713 /*IN*/ HANDLE PortHandle, 02714 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/, 02715 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/, 02716 /*OUT*/ PLPC_MESSAGE Message); 02717 02718 NTOSAPI 02719 NTSTATUS 02720 NTAPI 02721 NtReplyWaitReceivePortEx( 02722 /*IN*/ HANDLE PortHandle, 02723 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/, 02724 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/, 02725 /*OUT*/ PLPC_MESSAGE Message, 02726 /*IN*/ PLARGE_INTEGER Timeout); 02727 02728 NTOSAPI 02729 NTSTATUS 02730 NTAPI 02731 ZwReplyWaitReceivePortEx( 02732 /*IN*/ HANDLE PortHandle, 02733 /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/, 02734 /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/, 02735 /*OUT*/ PLPC_MESSAGE Message, 02736 /*IN*/ PLARGE_INTEGER Timeout); 02737 02738 NTOSAPI 02739 NTSTATUS 02740 NTAPI 02741 NtReadRequestData( 02742 /*IN*/ HANDLE PortHandle, 02743 /*IN*/ PLPC_MESSAGE Message, 02744 /*IN*/ ULONG Index, 02745 /*OUT*/ PVOID Buffer, 02746 /*IN*/ ULONG BufferLength, 02747 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 02748 02749 NTOSAPI 02750 NTSTATUS 02751 NTAPI 02752 ZwReadRequestData( 02753 /*IN*/ HANDLE PortHandle, 02754 /*IN*/ PLPC_MESSAGE Message, 02755 /*IN*/ ULONG Index, 02756 /*OUT*/ PVOID Buffer, 02757 /*IN*/ ULONG BufferLength, 02758 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 02759 02760 NTOSAPI 02761 NTSTATUS 02762 NTAPI 02763 NtWriteRequestData( 02764 /*IN*/ HANDLE PortHandle, 02765 /*IN*/ PLPC_MESSAGE Message, 02766 /*IN*/ ULONG Index, 02767 /*IN*/ PVOID Buffer, 02768 /*IN*/ ULONG BufferLength, 02769 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 02770 02771 NTOSAPI 02772 NTSTATUS 02773 NTAPI 02774 ZwWriteRequestData( 02775 /*IN*/ HANDLE PortHandle, 02776 /*IN*/ PLPC_MESSAGE Message, 02777 /*IN*/ ULONG Index, 02778 /*IN*/ PVOID Buffer, 02779 /*IN*/ ULONG BufferLength, 02780 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 02781 02782 typedef enum _PORT_INFORMATION_CLASS { 02783 PortBasicInformation 02784 } PORT_INFORMATION_CLASS; 02785 02786 NTOSAPI 02787 NTSTATUS 02788 NTAPI 02789 NtQueryInformationPort( 02790 /*IN*/ HANDLE PortHandle, 02791 /*IN*/ PORT_INFORMATION_CLASS PortInformationClass, 02792 /*OUT*/ PVOID PortInformation, 02793 /*IN*/ ULONG PortInformationLength, 02794 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 02795 02796 NTOSAPI 02797 NTSTATUS 02798 NTAPI 02799 ZwQueryInformationPort( 02800 /*IN*/ HANDLE PortHandle, 02801 /*IN*/ PORT_INFORMATION_CLASS PortInformationClass, 02802 /*OUT*/ PVOID PortInformation, 02803 /*IN*/ ULONG PortInformationLength, 02804 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 02805 02806 NTOSAPI 02807 NTSTATUS 02808 NTAPI 02809 NtImpersonateClientOfPort( 02810 /*IN*/ HANDLE PortHandle, 02811 /*IN*/ PLPC_MESSAGE Message); 02812 02813 NTOSAPI 02814 NTSTATUS 02815 NTAPI 02816 ZwImpersonateClientOfPort( 02817 /*IN*/ HANDLE PortHandle, 02818 /*IN*/ PLPC_MESSAGE Message); 02819 02820 02821 02822 02823 /* Files */ 02824 02825 NTOSAPI 02826 NTSTATUS 02827 NTAPI 02828 NtDeleteFile( 02829 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); 02830 02831 NTOSAPI 02832 NTSTATUS 02833 NTAPI 02834 ZwDeleteFile( 02835 /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); 02836 02837 NTOSAPI 02838 NTSTATUS 02839 NTAPI 02840 NtFlushBuffersFile( 02841 /*IN*/ HANDLE FileHandle, 02842 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); 02843 02844 NTOSAPI 02845 NTSTATUS 02846 NTAPI 02847 ZwFlushBuffersFile( 02848 /*IN*/ HANDLE FileHandle, 02849 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); 02850 02851 NTOSAPI 02852 NTSTATUS 02853 NTAPI 02854 NtCancelIoFile( 02855 /*IN*/ HANDLE FileHandle, 02856 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); 02857 02858 NTOSAPI 02859 NTSTATUS 02860 NTAPI 02861 ZwCancelIoFile( 02862 /*IN*/ HANDLE FileHandle, 02863 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); 02864 02865 NTOSAPI 02866 NTSTATUS 02867 NTAPI 02868 NtReadFileScatter( 02869 /*IN*/ HANDLE FileHandle, 02870 /*IN*/ HANDLE Event /*OPTIONAL*/, 02871 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, 02872 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 02873 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, 02874 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer, 02875 /*IN*/ ULONG Length, 02876 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/, 02877 /*IN*/ PULONG Key /*OPTIONAL*/); 02878 02879 NTOSAPI 02880 NTSTATUS 02881 NTAPI 02882 ZwReadFileScatter( 02883 /*IN*/ HANDLE FileHandle, 02884 /*IN*/ HANDLE Event /*OPTIONAL*/, 02885 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, 02886 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 02887 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, 02888 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer, 02889 /*IN*/ ULONG Length, 02890 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/, 02891 /*IN*/ PULONG Key /*OPTIONAL*/); 02892 02893 NTOSAPI 02894 NTSTATUS 02895 NTAPI 02896 NtWriteFileGather( 02897 /*IN*/ HANDLE FileHandle, 02898 /*IN*/ HANDLE Event /*OPTIONAL*/, 02899 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, 02900 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 02901 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, 02902 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer, 02903 /*IN*/ ULONG Length, 02904 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/, 02905 /*IN*/ PULONG Key /*OPTIONAL*/); 02906 02907 NTOSAPI 02908 NTSTATUS 02909 NTAPI 02910 ZwWriteFileGather( 02911 /*IN*/ HANDLE FileHandle, 02912 /*IN*/ HANDLE Event /*OPTIONAL*/, 02913 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, 02914 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 02915 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, 02916 /*IN*/ PFILE_SEGMENT_ELEMENT Buffer, 02917 /*IN*/ ULONG Length, 02918 /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/, 02919 /*IN*/ PULONG Key /*OPTIONAL*/); 02920 02921 02922 02923 02924 /* Registry keys */ 02925 02926 NTOSAPI 02927 NTSTATUS 02928 NTAPI 02929 NtSaveKey( 02930 /*IN*/ HANDLE KeyHandle, 02931 /*IN*/ HANDLE FileHandle); 02932 02933 NTOSAPI 02934 NTSTATUS 02935 NTAPI 02936 ZwSaveKey( 02937 /*IN*/ HANDLE KeyHandle, 02938 /*IN*/ HANDLE FileHandle); 02939 02940 NTOSAPI 02941 NTSTATUS 02942 NTAPI 02943 NtSaveMergedKeys( 02944 /*IN*/ HANDLE KeyHandle1, 02945 /*IN*/ HANDLE KeyHandle2, 02946 /*IN*/ HANDLE FileHandle); 02947 02948 NTOSAPI 02949 NTSTATUS 02950 NTAPI 02951 ZwSaveMergedKeys( 02952 /*IN*/ HANDLE KeyHandle1, 02953 /*IN*/ HANDLE KeyHandle2, 02954 /*IN*/ HANDLE FileHandle); 02955 02956 NTOSAPI 02957 NTSTATUS 02958 NTAPI 02959 NtRestoreKey( 02960 /*IN*/ HANDLE KeyHandle, 02961 /*IN*/ HANDLE FileHandle, 02962 /*IN*/ ULONG Flags); 02963 02964 NTOSAPI 02965 NTSTATUS 02966 NTAPI 02967 ZwRestoreKey( 02968 /*IN*/ HANDLE KeyHandle, 02969 /*IN*/ HANDLE FileHandle, 02970 /*IN*/ ULONG Flags); 02971 02972 NTOSAPI 02973 NTSTATUS 02974 NTAPI 02975 NtLoadKey( 02976 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, 02977 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes); 02978 02979 NTOSAPI 02980 NTSTATUS 02981 NTAPI 02982 ZwLoadKey( 02983 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, 02984 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes); 02985 02986 NTOSAPI 02987 NTSTATUS 02988 NTAPI 02989 NtLoadKey2( 02990 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, 02991 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes, 02992 /*IN*/ ULONG Flags); 02993 02994 NTOSAPI 02995 NTSTATUS 02996 NTAPI 02997 ZwLoadKey2( 02998 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, 02999 /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes, 03000 /*IN*/ ULONG Flags); 03001 03002 NTOSAPI 03003 NTSTATUS 03004 NTAPI 03005 NtUnloadKey( 03006 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes); 03007 03008 NTOSAPI 03009 NTSTATUS 03010 NTAPI 03011 ZwUnloadKey( 03012 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes); 03013 03014 NTOSAPI 03015 NTSTATUS 03016 NTAPI 03017 NtQueryOpenSubKeys( 03018 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, 03019 /*OUT*/ PULONG NumberOfKeys); 03020 03021 NTOSAPI 03022 NTSTATUS 03023 NTAPI 03024 ZwQueryOpenSubKeys( 03025 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, 03026 /*OUT*/ PULONG NumberOfKeys); 03027 03028 NTOSAPI 03029 NTSTATUS 03030 NTAPI 03031 NtReplaceKey( 03032 /*IN*/ POBJECT_ATTRIBUTES NewFileObjectAttributes, 03033 /*IN*/ HANDLE KeyHandle, 03034 /*IN*/ POBJECT_ATTRIBUTES OldFileObjectAttributes); 03035 03036 NTOSAPI 03037 NTSTATUS 03038 NTAPI 03039 ZwReplaceKey( 03040 /*IN*/ POBJECT_ATTRIBUTES NewFileObjectAttributes, 03041 /*IN*/ HANDLE KeyHandle, 03042 /*IN*/ POBJECT_ATTRIBUTES OldFileObjectAttributes); 03043 03044 typedef enum _KEY_SET_INFORMATION_CLASS { 03045 KeyLastWriteTimeInformation 03046 } KEY_SET_INFORMATION_CLASS; 03047 03048 NTOSAPI 03049 NTSTATUS 03050 NTAPI 03051 NtSetInformationKey( 03052 /*IN*/ HANDLE KeyHandle, 03053 /*IN*/ KEY_SET_INFORMATION_CLASS KeyInformationClass, 03054 /*IN*/ PVOID KeyInformation, 03055 /*IN*/ ULONG KeyInformationLength); 03056 03057 NTOSAPI 03058 NTSTATUS 03059 NTAPI 03060 ZwSetInformationKey( 03061 /*IN*/ HANDLE KeyHandle, 03062 /*IN*/ KEY_SET_INFORMATION_CLASS KeyInformationClass, 03063 /*IN*/ PVOID KeyInformation, 03064 /*IN*/ ULONG KeyInformationLength); 03065 03066 typedef struct _KEY_LAST_WRITE_TIME_INFORMATION { 03067 LARGE_INTEGER LastWriteTime; 03068 } KEY_LAST_WRITE_TIME_INFORMATION, *PKEY_LAST_WRITE_TIME_INFORMATION; 03069 03070 typedef struct _KEY_NAME_INFORMATION { 03071 ULONG NameLength; 03072 WCHAR Name[1]; 03073 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION; 03074 03075 NTOSAPI 03076 NTSTATUS 03077 NTAPI 03078 NtNotifyChangeKey( 03079 /*IN*/ HANDLE KeyHandle, 03080 /*IN*/ HANDLE EventHandle /*OPTIONAL*/, 03081 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, 03082 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 03083 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, 03084 /*IN*/ ULONG NotifyFilter, 03085 /*IN*/ BOOLEAN WatchSubtree, 03086 /*IN*/ PVOID Buffer, 03087 /*IN*/ ULONG BufferLength, 03088 /*IN*/ BOOLEAN Asynchronous); 03089 03090 NTOSAPI 03091 NTSTATUS 03092 NTAPI 03093 ZwNotifyChangeKey( 03094 /*IN*/ HANDLE KeyHandle, 03095 /*IN*/ HANDLE EventHandle /*OPTIONAL*/, 03096 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, 03097 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 03098 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, 03099 /*IN*/ ULONG NotifyFilter, 03100 /*IN*/ BOOLEAN WatchSubtree, 03101 /*IN*/ PVOID Buffer, 03102 /*IN*/ ULONG BufferLength, 03103 /*IN*/ BOOLEAN Asynchronous); 03104 03105 /* ZwNotifyChangeMultipleKeys.Flags constants */ 03106 #define REG_MONITOR_SINGLE_KEY 0x00 03107 #define REG_MONITOR_SECOND_KEY 0x01 03108 03109 NTOSAPI 03110 NTSTATUS 03111 NTAPI 03112 NtNotifyChangeMultipleKeys( 03113 /*IN*/ HANDLE KeyHandle, 03114 /*IN*/ ULONG Flags, 03115 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, 03116 /*IN*/ HANDLE EventHandle /*OPTIONAL*/, 03117 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, 03118 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 03119 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, 03120 /*IN*/ ULONG NotifyFilter, 03121 /*IN*/ BOOLEAN WatchSubtree, 03122 /*IN*/ PVOID Buffer, 03123 /*IN*/ ULONG BufferLength, 03124 /*IN*/ BOOLEAN Asynchronous); 03125 03126 NTOSAPI 03127 NTSTATUS 03128 NTAPI 03129 ZwNotifyChangeMultipleKeys( 03130 /*IN*/ HANDLE KeyHandle, 03131 /*IN*/ ULONG Flags, 03132 /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, 03133 /*IN*/ HANDLE EventHandle /*OPTIONAL*/, 03134 /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, 03135 /*IN*/ PVOID ApcContext /*OPTIONAL*/, 03136 /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, 03137 /*IN*/ ULONG NotifyFilter, 03138 /*IN*/ BOOLEAN WatchSubtree, 03139 /*IN*/ PVOID Buffer, 03140 /*IN*/ ULONG BufferLength, 03141 /*IN*/ BOOLEAN Asynchronous); 03142 03143 NTOSAPI 03144 NTSTATUS 03145 NTAPI 03146 NtQueryMultipleValueKey( 03147 /*IN*/ HANDLE KeyHandle, 03148 /*IN OUT*/ PKEY_VALUE_ENTRY ValueList, 03149 /*IN*/ ULONG NumberOfValues, 03150 /*OUT*/ PVOID Buffer, 03151 /*IN OUT*/ PULONG Length, 03152 /*OUT*/ PULONG ReturnLength); 03153 03154 NTOSAPI 03155 NTSTATUS 03156 NTAPI 03157 ZwQueryMultipleValueKey( 03158 /*IN*/ HANDLE KeyHandle, 03159 /*IN OUT*/ PKEY_VALUE_ENTRY ValueList, 03160 /*IN*/ ULONG NumberOfValues, 03161 /*OUT*/ PVOID Buffer, 03162 /*IN OUT*/ PULONG Length, 03163 /*OUT*/ PULONG ReturnLength); 03164 03165 NTOSAPI 03166 NTSTATUS 03167 NTAPI 03168 NtInitializeRegistry( 03169 /*IN*/ BOOLEAN Setup); 03170 03171 NTOSAPI 03172 NTSTATUS 03173 NTAPI 03174 ZwInitializeRegistry( 03175 /*IN*/ BOOLEAN Setup); 03176 03177 03178 03179 03180 /* Security and auditing */ 03181 03182 NTOSAPI 03183 NTSTATUS 03184 NTAPI 03185 NtPrivilegeCheck( 03186 /*IN*/ HANDLE TokenHandle, 03187 /*IN*/ PPRIVILEGE_SET RequiredPrivileges, 03188 /*OUT*/ PBOOLEAN Result); 03189 03190 NTOSAPI 03191 NTSTATUS 03192 NTAPI 03193 ZwPrivilegeCheck( 03194 /*IN*/ HANDLE TokenHandle, 03195 /*IN*/ PPRIVILEGE_SET RequiredPrivileges, 03196 /*OUT*/ PBOOLEAN Result); 03197 03198 NTOSAPI 03199 NTSTATUS 03200 NTAPI 03201 NtPrivilegeObjectAuditAlarm( 03202 /*IN*/ PUNICODE_STRING SubsystemName, 03203 /*IN*/ PVOID HandleId, 03204 /*IN*/ HANDLE TokenHandle, 03205 /*IN*/ ACCESS_MASK DesiredAccess, 03206 /*IN*/ PPRIVILEGE_SET Privileges, 03207 /*IN*/ BOOLEAN AccessGranted); 03208 03209 NTOSAPI 03210 NTSTATUS 03211 NTAPI 03212 ZwPrivilegeObjectAuditAlarm( 03213 /*IN*/ PUNICODE_STRING SubsystemName, 03214 /*IN*/ PVOID HandleId, 03215 /*IN*/ HANDLE TokenHandle, 03216 /*IN*/ ACCESS_MASK DesiredAccess, 03217 /*IN*/ PPRIVILEGE_SET Privileges, 03218 /*IN*/ BOOLEAN AccessGranted); 03219 03220 NTOSAPI 03221 NTSTATUS 03222 NTAPI 03223 NtAccessCheck( 03224 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03225 /*IN*/ HANDLE TokenHandle, 03226 /*IN*/ ACCESS_MASK DesiredAccess, 03227 /*IN*/ PGENERIC_MAPPING GenericMapping, 03228 /*IN*/ PPRIVILEGE_SET PrivilegeSet, 03229 /*IN*/ PULONG PrivilegeSetLength, 03230 /*OUT*/ PACCESS_MASK GrantedAccess, 03231 /*OUT*/ PBOOLEAN AccessStatus); 03232 03233 NTOSAPI 03234 NTSTATUS 03235 NTAPI 03236 ZwAccessCheck( 03237 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03238 /*IN*/ HANDLE TokenHandle, 03239 /*IN*/ ACCESS_MASK DesiredAccess, 03240 /*IN*/ PGENERIC_MAPPING GenericMapping, 03241 /*IN*/ PPRIVILEGE_SET PrivilegeSet, 03242 /*IN*/ PULONG PrivilegeSetLength, 03243 /*OUT*/ PACCESS_MASK GrantedAccess, 03244 /*OUT*/ PBOOLEAN AccessStatus); 03245 03246 NTOSAPI 03247 NTSTATUS 03248 NTAPI 03249 NtAccessCheckAndAuditAlarm( 03250 /*IN*/ PUNICODE_STRING SubsystemName, 03251 /*IN*/ PVOID HandleId, 03252 /*IN*/ PUNICODE_STRING ObjectTypeName, 03253 /*IN*/ PUNICODE_STRING ObjectName, 03254 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03255 /*IN*/ ACCESS_MASK DesiredAccess, 03256 /*IN*/ PGENERIC_MAPPING GenericMapping, 03257 /*IN*/ BOOLEAN ObjectCreation, 03258 /*OUT*/ PACCESS_MASK GrantedAccess, 03259 /*OUT*/ PBOOLEAN AccessStatus, 03260 /*OUT*/ PBOOLEAN GenerateOnClose); 03261 03262 NTOSAPI 03263 NTSTATUS 03264 NTAPI 03265 ZwAccessCheckAndAuditAlarm( 03266 /*IN*/ PUNICODE_STRING SubsystemName, 03267 /*IN*/ PVOID HandleId, 03268 /*IN*/ PUNICODE_STRING ObjectTypeName, 03269 /*IN*/ PUNICODE_STRING ObjectName, 03270 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03271 /*IN*/ ACCESS_MASK DesiredAccess, 03272 /*IN*/ PGENERIC_MAPPING GenericMapping, 03273 /*IN*/ BOOLEAN ObjectCreation, 03274 /*OUT*/ PACCESS_MASK GrantedAccess, 03275 /*OUT*/ PBOOLEAN AccessStatus, 03276 /*OUT*/ PBOOLEAN GenerateOnClose); 03277 03278 NTOSAPI 03279 NTSTATUS 03280 NTAPI 03281 NtAccessCheckByType( 03282 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03283 /*IN*/ PSID PrincipalSelfSid, 03284 /*IN*/ HANDLE TokenHandle, 03285 /*IN*/ ULONG DesiredAccess, 03286 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03287 /*IN*/ ULONG ObjectTypeListLength, 03288 /*IN*/ PGENERIC_MAPPING GenericMapping, 03289 /*IN*/ PPRIVILEGE_SET PrivilegeSet, 03290 /*IN*/ PULONG PrivilegeSetLength, 03291 /*OUT*/ PACCESS_MASK GrantedAccess, 03292 /*OUT*/ PULONG AccessStatus); 03293 03294 NTOSAPI 03295 NTSTATUS 03296 NTAPI 03297 ZwAccessCheckByType( 03298 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03299 /*IN*/ PSID PrincipalSelfSid, 03300 /*IN*/ HANDLE TokenHandle, 03301 /*IN*/ ULONG DesiredAccess, 03302 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03303 /*IN*/ ULONG ObjectTypeListLength, 03304 /*IN*/ PGENERIC_MAPPING GenericMapping, 03305 /*IN*/ PPRIVILEGE_SET PrivilegeSet, 03306 /*IN*/ PULONG PrivilegeSetLength, 03307 /*OUT*/ PACCESS_MASK GrantedAccess, 03308 /*OUT*/ PULONG AccessStatus); 03309 03310 typedef enum _AUDIT_EVENT_TYPE { 03311 AuditEventObjectAccess, 03312 AuditEventDirectoryServiceAccess 03313 } AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE; 03314 03315 NTOSAPI 03316 NTSTATUS 03317 NTAPI 03318 NtAccessCheckByTypeAndAuditAlarm( 03319 /*IN*/ PUNICODE_STRING SubsystemName, 03320 /*IN*/ PVOID HandleId, 03321 /*IN*/ PUNICODE_STRING ObjectTypeName, 03322 /*IN*/ PUNICODE_STRING ObjectName, 03323 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03324 /*IN*/ PSID PrincipalSelfSid, 03325 /*IN*/ ACCESS_MASK DesiredAccess, 03326 /*IN*/ AUDIT_EVENT_TYPE AuditType, 03327 /*IN*/ ULONG Flags, 03328 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03329 /*IN*/ ULONG ObjectTypeListLength, 03330 /*IN*/ PGENERIC_MAPPING GenericMapping, 03331 /*IN*/ BOOLEAN ObjectCreation, 03332 /*OUT*/ PACCESS_MASK GrantedAccess, 03333 /*OUT*/ PULONG AccessStatus, 03334 /*OUT*/ PBOOLEAN GenerateOnClose); 03335 03336 NTOSAPI 03337 NTSTATUS 03338 NTAPI 03339 ZwAccessCheckByTypeAndAuditAlarm( 03340 /*IN*/ PUNICODE_STRING SubsystemName, 03341 /*IN*/ PVOID HandleId, 03342 /*IN*/ PUNICODE_STRING ObjectTypeName, 03343 /*IN*/ PUNICODE_STRING ObjectName, 03344 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03345 /*IN*/ PSID PrincipalSelfSid, 03346 /*IN*/ ACCESS_MASK DesiredAccess, 03347 /*IN*/ AUDIT_EVENT_TYPE AuditType, 03348 /*IN*/ ULONG Flags, 03349 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03350 /*IN*/ ULONG ObjectTypeListLength, 03351 /*IN*/ PGENERIC_MAPPING GenericMapping, 03352 /*IN*/ BOOLEAN ObjectCreation, 03353 /*OUT*/ PACCESS_MASK GrantedAccess, 03354 /*OUT*/ PULONG AccessStatus, 03355 /*OUT*/ PBOOLEAN GenerateOnClose); 03356 03357 NTOSAPI 03358 NTSTATUS 03359 NTAPI 03360 NtAccessCheckByTypeResultList( 03361 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03362 /*IN*/ PSID PrincipalSelfSid, 03363 /*IN*/ HANDLE TokenHandle, 03364 /*IN*/ ACCESS_MASK DesiredAccess, 03365 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03366 /*IN*/ ULONG ObjectTypeListLength, 03367 /*IN*/ PGENERIC_MAPPING GenericMapping, 03368 /*IN*/ PPRIVILEGE_SET PrivilegeSet, 03369 /*IN*/ PULONG PrivilegeSetLength, 03370 /*OUT*/ PACCESS_MASK GrantedAccessList, 03371 /*OUT*/ PULONG AccessStatusList); 03372 03373 NTOSAPI 03374 NTSTATUS 03375 NTAPI 03376 ZwAccessCheckByTypeResultList( 03377 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03378 /*IN*/ PSID PrincipalSelfSid, 03379 /*IN*/ HANDLE TokenHandle, 03380 /*IN*/ ACCESS_MASK DesiredAccess, 03381 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03382 /*IN*/ ULONG ObjectTypeListLength, 03383 /*IN*/ PGENERIC_MAPPING GenericMapping, 03384 /*IN*/ PPRIVILEGE_SET PrivilegeSet, 03385 /*IN*/ PULONG PrivilegeSetLength, 03386 /*OUT*/ PACCESS_MASK GrantedAccessList, 03387 /*OUT*/ PULONG AccessStatusList); 03388 03389 NTOSAPI 03390 NTSTATUS 03391 NTAPI 03392 NtAccessCheckByTypeResultListAndAuditAlarm( 03393 /*IN*/ PUNICODE_STRING SubsystemName, 03394 /*IN*/ PVOID HandleId, 03395 /*IN*/ PUNICODE_STRING ObjectTypeName, 03396 /*IN*/ PUNICODE_STRING ObjectName, 03397 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03398 /*IN*/ PSID PrincipalSelfSid, 03399 /*IN*/ ACCESS_MASK DesiredAccess, 03400 /*IN*/ AUDIT_EVENT_TYPE AuditType, 03401 /*IN*/ ULONG Flags, 03402 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03403 /*IN*/ ULONG ObjectTypeListLength, 03404 /*IN*/ PGENERIC_MAPPING GenericMapping, 03405 /*IN*/ BOOLEAN ObjectCreation, 03406 /*OUT*/ PACCESS_MASK GrantedAccessList, 03407 /*OUT*/ PULONG AccessStatusList, 03408 /*OUT*/ PULONG GenerateOnClose); 03409 03410 NTOSAPI 03411 NTSTATUS 03412 NTAPI 03413 ZwAccessCheckByTypeResultListAndAuditAlarm( 03414 /*IN*/ PUNICODE_STRING SubsystemName, 03415 /*IN*/ PVOID HandleId, 03416 /*IN*/ PUNICODE_STRING ObjectTypeName, 03417 /*IN*/ PUNICODE_STRING ObjectName, 03418 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03419 /*IN*/ PSID PrincipalSelfSid, 03420 /*IN*/ ACCESS_MASK DesiredAccess, 03421 /*IN*/ AUDIT_EVENT_TYPE AuditType, 03422 /*IN*/ ULONG Flags, 03423 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03424 /*IN*/ ULONG ObjectTypeListLength, 03425 /*IN*/ PGENERIC_MAPPING GenericMapping, 03426 /*IN*/ BOOLEAN ObjectCreation, 03427 /*OUT*/ PACCESS_MASK GrantedAccessList, 03428 /*OUT*/ PULONG AccessStatusList, 03429 /*OUT*/ PULONG GenerateOnClose); 03430 03431 NTOSAPI 03432 NTSTATUS 03433 NTAPI 03434 NtAccessCheckByTypeResultListAndAuditAlarmByHandle( 03435 /*IN*/ PUNICODE_STRING SubsystemName, 03436 /*IN*/ PVOID HandleId, 03437 /*IN*/ HANDLE TokenHandle, 03438 /*IN*/ PUNICODE_STRING ObjectTypeName, 03439 /*IN*/ PUNICODE_STRING ObjectName, 03440 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03441 /*IN*/ PSID PrincipalSelfSid, 03442 /*IN*/ ACCESS_MASK DesiredAccess, 03443 /*IN*/ AUDIT_EVENT_TYPE AuditType, 03444 /*IN*/ ULONG Flags, 03445 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03446 /*IN*/ ULONG ObjectTypeListLength, 03447 /*IN*/ PGENERIC_MAPPING GenericMapping, 03448 /*IN*/ BOOLEAN ObjectCreation, 03449 /*OUT*/ PACCESS_MASK GrantedAccessList, 03450 /*OUT*/ PULONG AccessStatusList, 03451 /*OUT*/ PULONG GenerateOnClose); 03452 03453 NTOSAPI 03454 NTSTATUS 03455 NTAPI 03456 ZwAccessCheckByTypeResultListAndAuditAlarmByHandle( 03457 /*IN*/ PUNICODE_STRING SubsystemName, 03458 /*IN*/ PVOID HandleId, 03459 /*IN*/ HANDLE TokenHandle, 03460 /*IN*/ PUNICODE_STRING ObjectTypeName, 03461 /*IN*/ PUNICODE_STRING ObjectName, 03462 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03463 /*IN*/ PSID PrincipalSelfSid, 03464 /*IN*/ ACCESS_MASK DesiredAccess, 03465 /*IN*/ AUDIT_EVENT_TYPE AuditType, 03466 /*IN*/ ULONG Flags, 03467 /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, 03468 /*IN*/ ULONG ObjectTypeListLength, 03469 /*IN*/ PGENERIC_MAPPING GenericMapping, 03470 /*IN*/ BOOLEAN ObjectCreation, 03471 /*OUT*/ PACCESS_MASK GrantedAccessList, 03472 /*OUT*/ PULONG AccessStatusList, 03473 /*OUT*/ PULONG GenerateOnClose); 03474 03475 NTOSAPI 03476 NTSTATUS 03477 NTAPI 03478 NtOpenObjectAuditAlarm( 03479 /*IN*/ PUNICODE_STRING SubsystemName, 03480 /*IN*/ PVOID *HandleId, 03481 /*IN*/ PUNICODE_STRING ObjectTypeName, 03482 /*IN*/ PUNICODE_STRING ObjectName, 03483 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03484 /*IN*/ HANDLE TokenHandle, 03485 /*IN*/ ACCESS_MASK DesiredAccess, 03486 /*IN*/ ACCESS_MASK GrantedAccess, 03487 /*IN*/ PPRIVILEGE_SET Privileges /*OPTIONAL*/, 03488 /*IN*/ BOOLEAN ObjectCreation, 03489 /*IN*/ BOOLEAN AccessGranted, 03490 /*OUT*/ PBOOLEAN GenerateOnClose); 03491 03492 NTOSAPI 03493 NTSTATUS 03494 NTAPI 03495 ZwOpenObjectAuditAlarm( 03496 /*IN*/ PUNICODE_STRING SubsystemName, 03497 /*IN*/ PVOID *HandleId, 03498 /*IN*/ PUNICODE_STRING ObjectTypeName, 03499 /*IN*/ PUNICODE_STRING ObjectName, 03500 /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, 03501 /*IN*/ HANDLE TokenHandle, 03502 /*IN*/ ACCESS_MASK DesiredAccess, 03503 /*IN*/ ACCESS_MASK GrantedAccess, 03504 /*IN*/ PPRIVILEGE_SET Privileges /*OPTIONAL*/, 03505 /*IN*/ BOOLEAN ObjectCreation, 03506 /*IN*/ BOOLEAN AccessGranted, 03507 /*OUT*/ PBOOLEAN GenerateOnClose); 03508 03509 NTOSAPI 03510 NTSTATUS 03511 NTAPI 03512 NtCloseObjectAuditAlarm( 03513 /*IN*/ PUNICODE_STRING SubsystemName, 03514 /*IN*/ PVOID HandleId, 03515 /*IN*/ BOOLEAN GenerateOnClose); 03516 03517 NTOSAPI 03518 NTSTATUS 03519 NTAPI 03520 ZwCloseObjectAuditAlarm( 03521 /*IN*/ PUNICODE_STRING SubsystemName, 03522 /*IN*/ PVOID HandleId, 03523 /*IN*/ BOOLEAN GenerateOnClose); 03524 03525 NTOSAPI 03526 NTSTATUS 03527 NTAPI 03528 NtDeleteObjectAuditAlarm( 03529 /*IN*/ PUNICODE_STRING SubsystemName, 03530 /*IN*/ PVOID HandleId, 03531 /*IN*/ BOOLEAN GenerateOnClose); 03532 03533 NTOSAPI 03534 NTSTATUS 03535 NTAPI 03536 ZwDeleteObjectAuditAlarm( 03537 /*IN*/ PUNICODE_STRING SubsystemName, 03538 /*IN*/ PVOID HandleId, 03539 /*IN*/ BOOLEAN GenerateOnClose); 03540 03541 03542 03543 03544 /* Plug and play and power management */ 03545 03546 NTOSAPI 03547 NTSTATUS 03548 NTAPI 03549 ZwRequestWakeupLatency( 03550 /*IN*/ LATENCY_TIME Latency); 03551 03552 NTOSAPI 03553 NTSTATUS 03554 NTAPI 03555 ZwRequestDeviceWakeup( 03556 /*IN*/ HANDLE DeviceHandle); 03557 03558 NTOSAPI 03559 NTSTATUS 03560 NTAPI 03561 ZwCancelDeviceWakeupRequest( 03562 /*IN*/ HANDLE DeviceHandle); 03563 03564 NTOSAPI 03565 BOOLEAN 03566 NTAPI 03567 ZwIsSystemResumeAutomatic( 03568 VOID); 03569 03570 NTOSAPI 03571 NTSTATUS 03572 NTAPI 03573 ZwSetThreadExecutionState( 03574 /*IN*/ EXECUTION_STATE ExecutionState, 03575 /*OUT*/ PEXECUTION_STATE PreviousExecutionState); 03576 03577 NTOSAPI 03578 NTSTATUS 03579 NTAPI 03580 ZwGetDevicePowerState( 03581 /*IN*/ HANDLE DeviceHandle, 03582 /*OUT*/ PDEVICE_POWER_STATE DevicePowerState); 03583 03584 NTOSAPI 03585 NTSTATUS 03586 NTAPI 03587 ZwSetSystemPowerState( 03588 /*IN*/ POWER_ACTION SystemAction, 03589 /*IN*/ SYSTEM_POWER_STATE MinSystemState, 03590 /*IN*/ ULONG Flags); 03591 03592 NTOSAPI 03593 NTSTATUS 03594 NTAPI 03595 ZwInitiatePowerAction( 03596 /*IN*/ POWER_ACTION SystemAction, 03597 /*IN*/ SYSTEM_POWER_STATE MinSystemState, 03598 /*IN*/ ULONG Flags, 03599 /*IN*/ BOOLEAN Asynchronous); 03600 03601 NTOSAPI 03602 NTSTATUS 03603 NTAPI 03604 ZwPowerInformation( 03605 /*IN*/ POWER_INFORMATION_LEVEL PowerInformationLevel, 03606 /*IN*/ PVOID InputBuffer /*OPTIONAL*/, 03607 /*IN*/ ULONG InputBufferLength, 03608 /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/, 03609 /*IN*/ ULONG OutputBufferLength); 03610 03611 NTOSAPI 03612 NTSTATUS 03613 NTAPI 03614 NtPlugPlayControl( 03615 /*IN*/ ULONG ControlCode, 03616 /*IN OUT*/ PVOID Buffer, 03617 /*IN*/ ULONG BufferLength); 03618 03619 NTOSAPI 03620 NTSTATUS 03621 NTAPI 03622 ZwPlugPlayControl( 03623 /*IN*/ ULONG ControlCode, 03624 /*IN OUT*/ PVOID Buffer, 03625 /*IN*/ ULONG BufferLength); 03626 03627 NTOSAPI 03628 NTSTATUS 03629 NTAPI 03630 NtGetPlugPlayEvent( 03631 /*IN*/ ULONG Reserved1, 03632 /*IN*/ ULONG Reserved2, 03633 /*OUT*/ PVOID Buffer, 03634 /*IN*/ ULONG BufferLength); 03635 03636 NTOSAPI 03637 NTSTATUS 03638 NTAPI 03639 ZwGetPlugPlayEvent( 03640 /*IN*/ ULONG Reserved1, 03641 /*IN*/ ULONG Reserved2, 03642 /*OUT*/ PVOID Buffer, 03643 /*IN*/ ULONG BufferLength); 03644 03645 03646 03647 03648 /* Miscellany */ 03649 03650 NTOSAPI 03651 NTSTATUS 03652 NTAPI 03653 NtRaiseException( 03654 /*IN*/ PEXCEPTION_RECORD ExceptionRecord, 03655 /*IN*/ PCONTEXT Context, 03656 /*IN*/ BOOLEAN SearchFrames); 03657 03658 NTOSAPI 03659 NTSTATUS 03660 NTAPI 03661 ZwRaiseException( 03662 /*IN*/ PEXCEPTION_RECORD ExceptionRecord, 03663 /*IN*/ PCONTEXT Context, 03664 /*IN*/ BOOLEAN SearchFrames); 03665 03666 NTOSAPI 03667 NTSTATUS 03668 NTAPI 03669 NtContinue( 03670 /*IN*/ PCONTEXT Context, 03671 /*IN*/ BOOLEAN TestAlert); 03672 03673 NTOSAPI 03674 NTSTATUS 03675 NTAPI 03676 ZwContinue( 03677 /*IN*/ PCONTEXT Context, 03678 /*IN*/ BOOLEAN TestAlert); 03679 03680 NTOSAPI 03681 NTSTATUS 03682 NTAPI 03683 ZwW32Call( 03684 /*IN*/ ULONG RoutineIndex, 03685 /*IN*/ PVOID Argument, 03686 /*IN*/ ULONG ArgumentLength, 03687 /*OUT*/ PVOID *Result /*OPTIONAL*/, 03688 /*OUT*/ PULONG ResultLength /*OPTIONAL*/); 03689 03690 NTOSAPI 03691 NTSTATUS 03692 NTAPI 03693 NtSetLowWaitHighThread( 03694 VOID); 03695 03696 NTOSAPI 03697 NTSTATUS 03698 NTAPI 03699 ZwSetLowWaitHighThread( 03700 VOID); 03701 03702 NTOSAPI 03703 NTSTATUS 03704 NTAPI 03705 NtSetHighWaitLowThread( 03706 VOID); 03707 03708 NTOSAPI 03709 NTSTATUS 03710 NTAPI 03711 ZwSetHighWaitLowThread( 03712 VOID); 03713 03714 NTOSAPI 03715 NTSTATUS 03716 NTAPI 03717 NtLoadDriver( 03718 /*IN*/ PUNICODE_STRING DriverServiceName); 03719 03720 NTOSAPI 03721 NTSTATUS 03722 NTAPI 03723 ZwLoadDriver( 03724 /*IN*/ PUNICODE_STRING DriverServiceName); 03725 03726 NTOSAPI 03727 NTSTATUS 03728 NTAPI 03729 NtUnloadDriver( 03730 /*IN*/ PUNICODE_STRING DriverServiceName); 03731 03732 NTOSAPI 03733 NTSTATUS 03734 NTAPI 03735 ZwUnloadDriver( 03736 /*IN*/ PUNICODE_STRING DriverServiceName); 03737 03738 NTOSAPI 03739 NTSTATUS 03740 NTAPI 03741 NtFlushInstructionCache( 03742 /*IN*/ HANDLE ProcessHandle, 03743 /*IN*/ PVOID BaseAddress /*OPTIONAL*/, 03744 /*IN*/ ULONG FlushSize); 03745 03746 NTOSAPI 03747 NTSTATUS 03748 NTAPI 03749 ZwFlushInstructionCache( 03750 /*IN*/ HANDLE ProcessHandle, 03751 /*IN*/ PVOID BaseAddress /*OPTIONAL*/, 03752 /*IN*/ ULONG FlushSize); 03753 03754 NTOSAPI 03755 NTSTATUS 03756 NTAPI 03757 NtFlushWriteBuffer( 03758 VOID); 03759 03760 NTOSAPI 03761 NTSTATUS 03762 NTAPI 03763 ZwFlushWriteBuffer( 03764 VOID); 03765 03766 NTOSAPI 03767 NTSTATUS 03768 NTAPI 03769 NtQueryDefaultLocale( 03770 /*IN*/ BOOLEAN ThreadOrSystem, 03771 /*OUT*/ PLCID Locale); 03772 03773 NTOSAPI 03774 NTSTATUS 03775 NTAPI 03776 ZwQueryDefaultLocale( 03777 /*IN*/ BOOLEAN ThreadOrSystem, 03778 /*OUT*/ PLCID Locale); 03779 03780 NTOSAPI 03781 NTSTATUS 03782 NTAPI 03783 NtSetDefaultLocale( 03784 /*IN*/ BOOLEAN ThreadOrSystem, 03785 /*IN*/ LCID Locale); 03786 03787 NTOSAPI 03788 NTSTATUS 03789 NTAPI 03790 ZwSetDefaultLocale( 03791 /*IN*/ BOOLEAN ThreadOrSystem, 03792 /*IN*/ LCID Locale); 03793 03794 NTOSAPI 03795 NTSTATUS 03796 NTAPI 03797 NtQueryDefaultUILanguage( 03798 /*OUT*/ PLANGID LanguageId); 03799 03800 NTOSAPI 03801 NTSTATUS 03802 NTAPI 03803 ZwQueryDefaultUILanguage( 03804 /*OUT*/ PLANGID LanguageId); 03805 03806 NTOSAPI 03807 NTSTATUS 03808 NTAPI 03809 NtSetDefaultUILanguage( 03810 /*IN*/ LANGID LanguageId); 03811 03812 NTOSAPI 03813 NTSTATUS 03814 NTAPI 03815 ZwSetDefaultUILanguage( 03816 /*IN*/ LANGID LanguageId); 03817 03818 NTOSAPI 03819 NTSTATUS 03820 NTAPI 03821 NtQueryInstallUILanguage( 03822 /*OUT*/ PLANGID LanguageId); 03823 03824 NTOSAPI 03825 NTSTATUS 03826 NTAPI 03827 ZwQueryInstallUILanguage( 03828 /*OUT*/ PLANGID LanguageId); 03829 03830 NTOSAPI 03831 NTSTATUS 03832 NTAPI 03833 NtAllocateLocallyUniqueId( 03834 /*OUT*/ PLUID Luid); 03835 03836 NTOSAPI 03837 NTSTATUS 03838 NTAPI 03839 NtAllocateUuids( 03840 /*OUT*/ PLARGE_INTEGER UuidLastTimeAllocated, 03841 /*OUT*/ PULONG UuidDeltaTime, 03842 /*OUT*/ PULONG UuidSequenceNumber, 03843 /*OUT*/ PUCHAR UuidSeed); 03844 03845 NTOSAPI 03846 NTSTATUS 03847 NTAPI 03848 ZwAllocateUuids( 03849 /*OUT*/ PLARGE_INTEGER UuidLastTimeAllocated, 03850 /*OUT*/ PULONG UuidDeltaTime, 03851 /*OUT*/ PULONG UuidSequenceNumber, 03852 /*OUT*/ PUCHAR UuidSeed); 03853 03854 NTOSAPI 03855 NTSTATUS 03856 NTAPI 03857 NtSetUuidSeed( 03858 /*IN*/ PUCHAR UuidSeed); 03859 03860 NTOSAPI 03861 NTSTATUS 03862 NTAPI 03863 ZwSetUuidSeed( 03864 /*IN*/ PUCHAR UuidSeed); 03865 03866 typedef enum _HARDERROR_RESPONSE_OPTION { 03867 OptionAbortRetryIgnore, 03868 OptionOk, 03869 OptionOkCancel, 03870 OptionRetryCancel, 03871 OptionYesNo, 03872 OptionYesNoCancel, 03873 OptionShutdownSystem 03874 } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION; 03875 03876 typedef enum _HARDERROR_RESPONSE { 03877 ResponseReturnToCaller, 03878 ResponseNotHandled, 03879 ResponseAbort, 03880 ResponseCancel, 03881 ResponseIgnore, 03882 ResponseNo, 03883 ResponseOk, 03884 ResponseRetry, 03885 ResponseYes 03886 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE; 03887 03888 NTOSAPI 03889 NTSTATUS 03890 NTAPI 03891 NtRaiseHardError( 03892 /*IN*/ NTSTATUS Status, 03893 /*IN*/ ULONG NumberOfArguments, 03894 /*IN*/ ULONG StringArgumentsMask, 03895 /*IN*/ PULONG Arguments, 03896 /*IN*/ HARDERROR_RESPONSE_OPTION ResponseOption, 03897 /*OUT*/ PHARDERROR_RESPONSE Response); 03898 03899 NTOSAPI 03900 NTSTATUS 03901 NTAPI 03902 ZwRaiseHardError( 03903 /*IN*/ NTSTATUS Status, 03904 /*IN*/ ULONG NumberOfArguments, 03905 /*IN*/ ULONG StringArgumentsMask, 03906 /*IN*/ PULONG Arguments, 03907 /*IN*/ HARDERROR_RESPONSE_OPTION ResponseOption, 03908 /*OUT*/ PHARDERROR_RESPONSE Response); 03909 03910 NTOSAPI 03911 NTSTATUS 03912 NTAPI 03913 NtSetDefaultHardErrorPort( 03914 /*IN*/ HANDLE PortHandle); 03915 03916 NTOSAPI 03917 NTSTATUS 03918 NTAPI 03919 ZwSetDefaultHardErrorPort( 03920 /*IN*/ HANDLE PortHandle); 03921 03922 NTOSAPI 03923 NTSTATUS 03924 NTAPI 03925 NtDisplayString( 03926 /*IN*/ PUNICODE_STRING String); 03927 03928 NTOSAPI 03929 NTSTATUS 03930 NTAPI 03931 ZwDisplayString( 03932 /*IN*/ PUNICODE_STRING String); 03933 03934 NTOSAPI 03935 NTSTATUS 03936 NTAPI 03937 NtCreatePagingFile( 03938 /*IN*/ PUNICODE_STRING FileName, 03939 /*IN*/ PULARGE_INTEGER InitialSize, 03940 /*IN*/ PULARGE_INTEGER MaximumSize, 03941 /*IN*/ ULONG Reserved); 03942 03943 NTOSAPI 03944 NTSTATUS 03945 NTAPI 03946 ZwCreatePagingFile( 03947 /*IN*/ PUNICODE_STRING FileName, 03948 /*IN*/ PULARGE_INTEGER InitialSize, 03949 /*IN*/ PULARGE_INTEGER MaximumSize, 03950 /*IN*/ ULONG Reserved); 03951 03952 typedef USHORT RTL_ATOM, *PRTL_ATOM; 03953 03954 NTOSAPI 03955 NTSTATUS 03956 NTAPI 03957 NtAddAtom( 03958 /*IN*/ PWSTR AtomName, 03959 /*IN*/ ULONG AtomNameLength, 03960 /*OUT*/ PRTL_ATOM Atom); 03961 03962 NTOSAPI 03963 NTSTATUS 03964 NTAPI 03965 ZwAddAtom( 03966 /*IN*/ PWSTR AtomName, 03967 /*IN*/ ULONG AtomNameLength, 03968 /*OUT*/ PRTL_ATOM Atom); 03969 03970 NTOSAPI 03971 NTSTATUS 03972 NTAPI 03973 NtFindAtom( 03974 /*IN*/ PWSTR AtomName, 03975 /*IN*/ ULONG AtomNameLength, 03976 /*OUT*/ PRTL_ATOM Atom); 03977 03978 NTOSAPI 03979 NTSTATUS 03980 NTAPI 03981 ZwFindAtom( 03982 /*IN*/ PWSTR AtomName, 03983 /*IN*/ ULONG AtomNameLength, 03984 /*OUT*/ PRTL_ATOM Atom); 03985 03986 NTOSAPI 03987 NTSTATUS 03988 NTAPI 03989 NtDeleteAtom( 03990 /*IN*/ RTL_ATOM Atom); 03991 03992 NTOSAPI 03993 NTSTATUS 03994 NTAPI 03995 ZwDeleteAtom( 03996 /*IN*/ RTL_ATOM Atom); 03997 03998 typedef enum _ATOM_INFORMATION_CLASS { 03999 AtomBasicInformation, 04000 AtomListInformation 04001 } ATOM_INFORMATION_CLASS; 04002 04003 NTOSAPI 04004 NTSTATUS 04005 NTAPI 04006 NtQueryInformationAtom( 04007 /*IN*/ RTL_ATOM Atom, 04008 /*IN*/ ATOM_INFORMATION_CLASS AtomInformationClass, 04009 /*OUT*/ PVOID AtomInformation, 04010 /*IN*/ ULONG AtomInformationLength, 04011 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 04012 04013 NTOSAPI 04014 NTSTATUS 04015 NTAPI 04016 ZwQueryInformationAtom( 04017 /*IN*/ RTL_ATOM Atom, 04018 /*IN*/ ATOM_INFORMATION_CLASS AtomInformationClass, 04019 /*OUT*/ PVOID AtomInformation, 04020 /*IN*/ ULONG AtomInformationLength, 04021 /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); 04022 04023 typedef struct _ATOM_BASIC_INFORMATION { 04024 USHORT ReferenceCount; 04025 USHORT Pinned; 04026 USHORT NameLength; 04027 WCHAR Name[1]; 04028 } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION; 04029 04030 typedef struct _ATOM_LIST_INFORMATION { 04031 ULONG NumberOfAtoms; 04032 ATOM Atoms[1]; 04033 } ATOM_LIST_INFORMATION, *PATOM_LIST_INFORMATION; 04034 04035 NTOSAPI 04036 NTSTATUS 04037 NTAPI 04038 NtSetLdtEntries( 04039 /*IN*/ ULONG Selector1, 04040 /*IN*/ LDT_ENTRY LdtEntry1, 04041 /*IN*/ ULONG Selector2, 04042 /*IN*/ LDT_ENTRY LdtEntry2); 04043 04044 NTOSAPI 04045 NTSTATUS 04046 NTAPI 04047 ZwSetLdtEntries( 04048 /*IN*/ ULONG Selector1, 04049 /*IN*/ LDT_ENTRY LdtEntry1, 04050 /*IN*/ ULONG Selector2, 04051 /*IN*/ LDT_ENTRY LdtEntry2); 04052 04053 NTOSAPI 04054 NTSTATUS 04055 NTAPI 04056 NtVdmControl( 04057 /*IN*/ ULONG ControlCode, 04058 /*IN*/ PVOID ControlData); 04059 04060 NTOSAPI 04061 NTSTATUS 04062 NTAPI 04063 ZwVdmControl( 04064 /*IN*/ ULONG ControlCode, 04065 /*IN*/ PVOID ControlData); 04066 04067 #pragma pack(pop) 04068 04069 #ifdef __cplusplus 04070 } 04071 #endif 04072 04073 #endif /* __NTAPI_H */
Generated on Tue Jul 12 2022 19:59:54 by
1.7.2