| /* |
| * ntapi.h |
| * |
| * Windows NT Native API |
| * |
| * Most structures in this file is obtained from Windows NT/2000 Native API |
| * Reference by Gary Nebbett, ISBN 1578701996. |
| * |
| * This file is part of the w32api package. |
| * |
| * Contributors: |
| * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> |
| * |
| * THIS SOFTWARE IS NOT COPYRIGHTED |
| * |
| * This source code is offered for use in the public domain. You may |
| * use, modify or distribute it freely. |
| * |
| * This code is distributed in the hope that it will be useful but |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| * DISCLAIMED. This includes but is not limited to warranties of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * |
| */ |
| |
| #ifndef __NTAPI_H |
| #define __NTAPI_H |
| |
| #if __GNUC__ >= 3 |
| #pragma GCC system_header |
| #endif |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <stdarg.h> |
| #include <winbase.h> |
| #include "ntddk.h" |
| #include "ntpoapi.h" |
| |
| #pragma pack(push,4) |
| |
| typedef struct _PEB *PPEB; |
| |
| /* FIXME: Unknown definitions */ |
| typedef PVOID POBJECT_TYPE_LIST; |
| typedef PVOID PEXECUTION_STATE; |
| typedef PVOID PLANGID; |
| |
| #ifndef NtCurrentProcess |
| #define NtCurrentProcess() ((HANDLE)0xFFFFFFFF) |
| #endif /* NtCurrentProcess */ |
| #ifndef NtCurrentThread |
| #define NtCurrentThread() ((HANDLE)0xFFFFFFFE) |
| #endif /* NtCurrentThread */ |
| |
| /* System information and control */ |
| |
| typedef enum _SYSTEM_INFORMATION_CLASS { |
| SystemInformationClassMin = 0, |
| SystemBasicInformation = 0, |
| SystemProcessorInformation = 1, |
| SystemPerformanceInformation = 2, |
| SystemTimeOfDayInformation = 3, |
| SystemPathInformation = 4, |
| SystemNotImplemented1 = 4, |
| SystemProcessInformation = 5, |
| SystemProcessesAndThreadsInformation = 5, |
| SystemCallCountInfoInformation = 6, |
| SystemCallCounts = 6, |
| SystemDeviceInformation = 7, |
| SystemConfigurationInformation = 7, |
| SystemProcessorPerformanceInformation = 8, |
| SystemProcessorTimes = 8, |
| SystemFlagsInformation = 9, |
| SystemGlobalFlag = 9, |
| SystemCallTimeInformation = 10, |
| SystemNotImplemented2 = 10, |
| SystemModuleInformation = 11, |
| SystemLocksInformation = 12, |
| SystemLockInformation = 12, |
| SystemStackTraceInformation = 13, |
| SystemNotImplemented3 = 13, |
| SystemPagedPoolInformation = 14, |
| SystemNotImplemented4 = 14, |
| SystemNonPagedPoolInformation = 15, |
| SystemNotImplemented5 = 15, |
| SystemHandleInformation = 16, |
| SystemObjectInformation = 17, |
| SystemPageFileInformation = 18, |
| SystemPagefileInformation = 18, |
| SystemVdmInstemulInformation = 19, |
| SystemInstructionEmulationCounts = 19, |
| SystemVdmBopInformation = 20, |
| SystemInvalidInfoClass1 = 20, |
| SystemFileCacheInformation = 21, |
| SystemCacheInformation = 21, |
| SystemPoolTagInformation = 22, |
| SystemInterruptInformation = 23, |
| SystemProcessorStatistics = 23, |
| SystemDpcBehaviourInformation = 24, |
| SystemDpcInformation = 24, |
| SystemFullMemoryInformation = 25, |
| SystemNotImplemented6 = 25, |
| SystemLoadImage = 26, |
| SystemUnloadImage = 27, |
| SystemTimeAdjustmentInformation = 28, |
| SystemTimeAdjustment = 28, |
| SystemSummaryMemoryInformation = 29, |
| SystemNotImplemented7 = 29, |
| SystemNextEventIdInformation = 30, |
| SystemNotImplemented8 = 30, |
| SystemEventIdsInformation = 31, |
| SystemNotImplemented9 = 31, |
| SystemCrashDumpInformation = 32, |
| SystemExceptionInformation = 33, |
| SystemCrashDumpStateInformation = 34, |
| SystemKernelDebuggerInformation = 35, |
| SystemContextSwitchInformation = 36, |
| SystemRegistryQuotaInformation = 37, |
| SystemLoadAndCallImage = 38, |
| SystemPrioritySeparation = 39, |
| SystemPlugPlayBusInformation = 40, |
| SystemNotImplemented10 = 40, |
| SystemDockInformation = 41, |
| SystemNotImplemented11 = 41, |
| /* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */ |
| SystemInvalidInfoClass2 = 42, |
| SystemProcessorSpeedInformation = 43, |
| SystemInvalidInfoClass3 = 43, |
| SystemCurrentTimeZoneInformation = 44, |
| SystemTimeZoneInformation = 44, |
| SystemLookasideInformation = 45, |
| SystemSetTimeSlipEvent = 46, |
| SystemCreateSession = 47, |
| SystemDeleteSession = 48, |
| SystemInvalidInfoClass4 = 49, |
| SystemRangeStartInformation = 50, |
| SystemVerifierInformation = 51, |
| SystemAddVerifier = 52, |
| SystemSessionProcessesInformation = 53, |
| SystemInformationClassMax |
| } SYSTEM_INFORMATION_CLASS; |
| |
| typedef struct _SYSTEM_BASIC_INFORMATION { |
| ULONG Unknown; |
| ULONG MaximumIncrement; |
| ULONG PhysicalPageSize; |
| ULONG NumberOfPhysicalPages; |
| ULONG LowestPhysicalPage; |
| ULONG HighestPhysicalPage; |
| ULONG AllocationGranularity; |
| ULONG LowestUserAddress; |
| ULONG HighestUserAddress; |
| ULONG ActiveProcessors; |
| UCHAR NumberProcessors; |
| } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; |
| |
| typedef struct _SYSTEM_PROCESSOR_INFORMATION { |
| USHORT ProcessorArchitecture; |
| USHORT ProcessorLevel; |
| USHORT ProcessorRevision; |
| USHORT Unknown; |
| ULONG FeatureBits; |
| } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION; |
| |
| typedef struct _SYSTEM_PERFORMANCE_INFORMATION { |
| LARGE_INTEGER IdleTime; |
| LARGE_INTEGER ReadTransferCount; |
| LARGE_INTEGER WriteTransferCount; |
| LARGE_INTEGER OtherTransferCount; |
| ULONG ReadOperationCount; |
| ULONG WriteOperationCount; |
| ULONG OtherOperationCount; |
| ULONG AvailablePages; |
| ULONG TotalCommittedPages; |
| ULONG TotalCommitLimit; |
| ULONG PeakCommitment; |
| ULONG PageFaults; |
| ULONG WriteCopyFaults; |
| ULONG TransitionFaults; |
| ULONG CacheTransitionFaults; |
| ULONG DemandZeroFaults; |
| ULONG PagesRead; |
| ULONG PageReadIos; |
| ULONG CacheReads; |
| ULONG CacheIos; |
| ULONG PagefilePagesWritten; |
| ULONG PagefilePageWriteIos; |
| ULONG MappedFilePagesWritten; |
| ULONG MappedFilePageWriteIos; |
| ULONG PagedPoolUsage; |
| ULONG NonPagedPoolUsage; |
| ULONG PagedPoolAllocs; |
| ULONG PagedPoolFrees; |
| ULONG NonPagedPoolAllocs; |
| ULONG NonPagedPoolFrees; |
| ULONG TotalFreeSystemPtes; |
| ULONG SystemCodePage; |
| ULONG TotalSystemDriverPages; |
| ULONG TotalSystemCodePages; |
| ULONG SmallNonPagedLookasideListAllocateHits; |
| ULONG SmallPagedLookasideListAllocateHits; |
| ULONG Reserved3; |
| ULONG MmSystemCachePage; |
| ULONG PagedPoolPage; |
| ULONG SystemDriverPage; |
| ULONG FastReadNoWait; |
| ULONG FastReadWait; |
| ULONG FastReadResourceMiss; |
| ULONG FastReadNotPossible; |
| ULONG FastMdlReadNoWait; |
| ULONG FastMdlReadWait; |
| ULONG FastMdlReadResourceMiss; |
| ULONG FastMdlReadNotPossible; |
| ULONG MapDataNoWait; |
| ULONG MapDataWait; |
| ULONG MapDataNoWaitMiss; |
| ULONG MapDataWaitMiss; |
| ULONG PinMappedDataCount; |
| ULONG PinReadNoWait; |
| ULONG PinReadWait; |
| ULONG PinReadNoWaitMiss; |
| ULONG PinReadWaitMiss; |
| ULONG CopyReadNoWait; |
| ULONG CopyReadWait; |
| ULONG CopyReadNoWaitMiss; |
| ULONG CopyReadWaitMiss; |
| ULONG MdlReadNoWait; |
| ULONG MdlReadWait; |
| ULONG MdlReadNoWaitMiss; |
| ULONG MdlReadWaitMiss; |
| ULONG ReadAheadIos; |
| ULONG LazyWriteIos; |
| ULONG LazyWritePages; |
| ULONG DataFlushes; |
| ULONG DataPages; |
| ULONG ContextSwitches; |
| ULONG FirstLevelTbFills; |
| ULONG SecondLevelTbFills; |
| ULONG SystemCalls; |
| } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; |
| |
| typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION { |
| LARGE_INTEGER BootTime; |
| LARGE_INTEGER CurrentTime; |
| LARGE_INTEGER TimeZoneBias; |
| ULONG CurrentTimeZoneId; |
| } SYSTEM_TIME_OF_DAY_INFORMATION, *PSYSTEM_TIME_OF_DAY_INFORMATION; |
| |
| typedef struct _VM_COUNTERS { |
| ULONG PeakVirtualSize; |
| ULONG VirtualSize; |
| ULONG PageFaultCount; |
| ULONG PeakWorkingSetSize; |
| ULONG WorkingSetSize; |
| ULONG QuotaPeakPagedPoolUsage; |
| ULONG QuotaPagedPoolUsage; |
| ULONG QuotaPeakNonPagedPoolUsage; |
| ULONG QuotaNonPagedPoolUsage; |
| ULONG PagefileUsage; |
| ULONG PeakPagefileUsage; |
| } VM_COUNTERS; |
| |
| typedef enum _THREAD_STATE { |
| StateInitialized, |
| StateReady, |
| StateRunning, |
| StateStandby, |
| StateTerminated, |
| StateWait, |
| StateTransition, |
| StateUnknown |
| } THREAD_STATE; |
| |
| typedef struct _SYSTEM_THREADS { |
| LARGE_INTEGER KernelTime; |
| LARGE_INTEGER UserTime; |
| LARGE_INTEGER CreateTime; |
| ULONG WaitTime; |
| PVOID StartAddress; |
| CLIENT_ID ClientId; |
| KPRIORITY Priority; |
| KPRIORITY BasePriority; |
| ULONG ContextSwitchCount; |
| THREAD_STATE State; |
| KWAIT_REASON WaitReason; |
| } SYSTEM_THREADS, *PSYSTEM_THREADS; |
| |
| typedef struct _SYSTEM_PROCESSES { |
| ULONG NextEntryDelta; |
| ULONG ThreadCount; |
| ULONG Reserved1[6]; |
| LARGE_INTEGER CreateTime; |
| LARGE_INTEGER UserTime; |
| LARGE_INTEGER KernelTime; |
| UNICODE_STRING ProcessName; |
| KPRIORITY BasePriority; |
| ULONG ProcessId; |
| ULONG InheritedFromProcessId; |
| ULONG HandleCount; |
| ULONG Reserved2[2]; |
| VM_COUNTERS VmCounters; |
| IO_COUNTERS IoCounters; |
| SYSTEM_THREADS Threads[1]; |
| } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES; |
| |
| typedef struct _SYSTEM_CALLS_INFORMATION { |
| ULONG Size; |
| ULONG NumberOfDescriptorTables; |
| ULONG NumberOfRoutinesInTable[1]; |
| ULONG CallCounts[ANYSIZE_ARRAY]; |
| } SYSTEM_CALLS_INFORMATION, *PSYSTEM_CALLS_INFORMATION; |
| |
| typedef struct _SYSTEM_CONFIGURATION_INFORMATION { |
| ULONG DiskCount; |
| ULONG FloppyCount; |
| ULONG CdRomCount; |
| ULONG TapeCount; |
| ULONG SerialCount; |
| ULONG ParallelCount; |
| } SYSTEM_CONFIGURATION_INFORMATION, *PSYSTEM_CONFIGURATION_INFORMATION; |
| |
| typedef struct _SYSTEM_PROCESSOR_TIMES { |
| LARGE_INTEGER IdleTime; |
| LARGE_INTEGER KernelTime; |
| LARGE_INTEGER UserTime; |
| LARGE_INTEGER DpcTime; |
| LARGE_INTEGER InterruptTime; |
| ULONG InterruptCount; |
| } SYSTEM_PROCESSOR_TIMES, *PSYSTEM_PROCESSOR_TIMES; |
| |
| /* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */ |
| #define FLG_STOP_ON_EXCEPTION 0x00000001 |
| #define FLG_SHOW_LDR_SNAPS 0x00000002 |
| #define FLG_DEBUG_INITIAL_COMMAND 0x00000004 |
| #define FLG_STOP_ON_HUNG_GUI 0x00000008 |
| #define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010 |
| #define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020 |
| #define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040 |
| #define FLG_HEAP_VALIDATE_ALL 0x00000080 |
| #define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100 |
| #define FLG_POOL_ENABLE_FREE_CHECK 0x00000200 |
| #define FLG_POOL_ENABLE_TAGGING 0x00000400 |
| #define FLG_HEAP_ENABLE_TAGGING 0x00000800 |
| #define FLG_USER_STACK_TRACE_DB 0x00001000 |
| #define FLG_KERNEL_STACK_TRACE_DB 0x00002000 |
| #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000 |
| #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000 |
| #define FLG_IGNORE_DEBUG_PRIV 0x00010000 |
| #define FLG_ENABLE_CSRDEBUG 0x00020000 |
| #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000 |
| #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000 |
| #define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000 |
| #define FLG_HEAP_DISABLE_COALESCING 0x00200000 |
| #define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000 |
| #define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000 |
| #define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000 |
| |
| typedef struct _SYSTEM_GLOBAL_FLAG { |
| ULONG GlobalFlag; |
| } SYSTEM_GLOBAL_FLAG, *PSYSTEM_GLOBAL_FLAG; |
| |
| typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY { |
| ULONG Unknown1; |
| ULONG Unknown2; |
| PVOID Base; |
| ULONG Size; |
| ULONG Flags; |
| USHORT Index; |
| /* Length of module name not including the path, this |
| field contains valid value only for NTOSKRNL module */ |
| USHORT NameLength; |
| USHORT LoadCount; |
| USHORT PathLength; |
| CHAR ImageName[256]; |
| } SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY; |
| |
| typedef struct _SYSTEM_MODULE_INFORMATION { |
| ULONG Count; |
| SYSTEM_MODULE_INFORMATION_ENTRY Module[1]; |
| } SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; |
| |
| typedef struct _SYSTEM_LOCK_INFORMATION { |
| PVOID Address; |
| USHORT Type; |
| USHORT Reserved1; |
| ULONG ExclusiveOwnerThreadId; |
| ULONG ActiveCount; |
| ULONG ContentionCount; |
| ULONG Reserved2[2]; |
| ULONG NumberOfSharedWaiters; |
| ULONG NumberOfExclusiveWaiters; |
| } SYSTEM_LOCK_INFORMATION, *PSYSTEM_LOCK_INFORMATION; |
| |
| /*SYSTEM_HANDLE_INFORMATION.Flags cosntants */ |
| #define PROTECT_FROM_CLOSE 0x01 |
| #define INHERIT 0x02 |
| |
| typedef struct _SYSTEM_HANDLE_INFORMATION { |
| ULONG ProcessId; |
| UCHAR ObjectTypeNumber; |
| UCHAR Flags; |
| USHORT Handle; |
| PVOID Object; |
| ACCESS_MASK GrantedAccess; |
| } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; |
| |
| typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION { |
| ULONG NextEntryOffset; |
| ULONG ObjectCount; |
| ULONG HandleCount; |
| ULONG TypeNumber; |
| ULONG InvalidAttributes; |
| GENERIC_MAPPING GenericMapping; |
| ACCESS_MASK ValidAccessMask; |
| POOL_TYPE PoolType; |
| UCHAR Unknown; |
| UNICODE_STRING Name; |
| } SYSTEM_OBJECT_TYPE_INFORMATION, *PSYSTEM_OBJECT_TYPE_INFORMATION; |
| |
| /* SYSTEM_OBJECT_INFORMATION.Flags constants */ |
| #define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY 0x40 |
| #define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20 |
| #define FLG_SYSOBJINFO_PERMANENT 0x10 |
| #define FLG_SYSOBJINFO_EXCLUSIVE 0x08 |
| #define FLG_SYSOBJINFO_CREATOR_INFO 0x04 |
| #define FLG_SYSOBJINFO_KERNEL_MODE 0x02 |
| |
| typedef struct _SYSTEM_OBJECT_INFORMATION { |
| ULONG NextEntryOffset; |
| PVOID Object; |
| ULONG CreatorProcessId; |
| USHORT Unknown; |
| USHORT Flags; |
| ULONG PointerCount; |
| ULONG HandleCount; |
| ULONG PagedPoolUsage; |
| ULONG NonPagedPoolUsage; |
| ULONG ExclusiveProcessId; |
| PSECURITY_DESCRIPTOR SecurityDescriptor; |
| UNICODE_STRING Name; |
| } SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION; |
| |
| typedef struct _SYSTEM_PAGEFILE_INFORMATION { |
| ULONG NextEntryOffset; |
| ULONG CurrentSize; |
| ULONG TotalUsed; |
| ULONG PeakUsed; |
| UNICODE_STRING FileName; |
| } SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION; |
| |
| typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION { |
| ULONG SegmentNotPresent; |
| ULONG TwoByteOpcode; |
| ULONG ESprefix; |
| ULONG CSprefix; |
| ULONG SSprefix; |
| ULONG DSprefix; |
| ULONG FSPrefix; |
| ULONG GSprefix; |
| ULONG OPER32prefix; |
| ULONG ADDR32prefix; |
| ULONG INSB; |
| ULONG INSW; |
| ULONG OUTSB; |
| ULONG OUTSW; |
| ULONG PUSHFD; |
| ULONG POPFD; |
| ULONG INTnn; |
| ULONG INTO; |
| ULONG IRETD; |
| ULONG INBimm; |
| ULONG INWimm; |
| ULONG OUTBimm; |
| ULONG OUTWimm; |
| ULONG INB; |
| ULONG INW; |
| ULONG OUTB; |
| ULONG OUTW; |
| ULONG LOCKprefix; |
| ULONG REPNEprefix; |
| ULONG REPprefix; |
| ULONG HLT; |
| ULONG CLI; |
| ULONG STI; |
| ULONG GenericInvalidOpcode; |
| } SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION; |
| |
| typedef struct _SYSTEM_POOL_TAG_INFORMATION { |
| CHAR Tag[4]; |
| ULONG PagedPoolAllocs; |
| ULONG PagedPoolFrees; |
| ULONG PagedPoolUsage; |
| ULONG NonPagedPoolAllocs; |
| ULONG NonPagedPoolFrees; |
| ULONG NonPagedPoolUsage; |
| } SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION; |
| |
| typedef struct _SYSTEM_PROCESSOR_STATISTICS { |
| ULONG ContextSwitches; |
| ULONG DpcCount; |
| ULONG DpcRequestRate; |
| ULONG TimeIncrement; |
| ULONG DpcBypassCount; |
| ULONG ApcBypassCount; |
| } SYSTEM_PROCESSOR_STATISTICS, *PSYSTEM_PROCESSOR_STATISTICS; |
| |
| typedef struct _SYSTEM_DPC_INFORMATION { |
| ULONG Reserved; |
| ULONG MaximumDpcQueueDepth; |
| ULONG MinimumDpcRate; |
| ULONG AdjustDpcThreshold; |
| ULONG IdealDpcRate; |
| } SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION; |
| |
| typedef struct _SYSTEM_LOAD_IMAGE { |
| UNICODE_STRING ModuleName; |
| PVOID ModuleBase; |
| PVOID SectionPointer; |
| PVOID EntryPoint; |
| PVOID ExportDirectory; |
| } SYSTEM_LOAD_IMAGE, *PSYSTEM_LOAD_IMAGE; |
| |
| typedef struct _SYSTEM_UNLOAD_IMAGE { |
| PVOID ModuleBase; |
| } SYSTEM_UNLOAD_IMAGE, *PSYSTEM_UNLOAD_IMAGE; |
| |
| typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT { |
| ULONG TimeAdjustment; |
| ULONG MaximumIncrement; |
| BOOLEAN TimeSynchronization; |
| } SYSTEM_QUERY_TIME_ADJUSTMENT, *PSYSTEM_QUERY_TIME_ADJUSTMENT; |
| |
| typedef struct _SYSTEM_SET_TIME_ADJUSTMENT { |
| ULONG TimeAdjustment; |
| BOOLEAN TimeSynchronization; |
| } SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT; |
| |
| typedef struct _SYSTEM_CRASH_DUMP_INFORMATION { |
| HANDLE CrashDumpSectionHandle; |
| HANDLE Unknown; |
| } SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION; |
| |
| typedef struct _SYSTEM_EXCEPTION_INFORMATION { |
| ULONG AlignmentFixupCount; |
| ULONG ExceptionDispatchCount; |
| ULONG FloatingEmulationCount; |
| ULONG Reserved; |
| } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION; |
| |
| typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION { |
| ULONG CrashDumpSectionExists; |
| ULONG Unknown; |
| } SYSTEM_CRASH_DUMP_STATE_INFORMATION, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION; |
| |
| typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION { |
| BOOLEAN DebuggerEnabled; |
| BOOLEAN DebuggerNotPresent; |
| } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; |
| |
| typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION { |
| ULONG ContextSwitches; |
| ULONG ContextSwitchCounters[11]; |
| } SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION; |
| |
| typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { |
| ULONG RegistryQuota; |
| ULONG RegistryQuotaInUse; |
| ULONG PagedPoolSize; |
| } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; |
| |
| typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE { |
| UNICODE_STRING ModuleName; |
| } SYSTEM_LOAD_AND_CALL_IMAGE, *PSYSTEM_LOAD_AND_CALL_IMAGE; |
| |
| typedef struct _SYSTEM_PRIORITY_SEPARATION { |
| ULONG PrioritySeparation; |
| } SYSTEM_PRIORITY_SEPARATION, *PSYSTEM_PRIORITY_SEPARATION; |
| |
| typedef struct _SYSTEM_TIME_ZONE_INFORMATION { |
| LONG Bias; |
| WCHAR StandardName[32]; |
| LARGE_INTEGER StandardDate; |
| LONG StandardBias; |
| WCHAR DaylightName[32]; |
| LARGE_INTEGER DaylightDate; |
| LONG DaylightBias; |
| } SYSTEM_TIME_ZONE_INFORMATION, *PSYSTEM_TIME_ZONE_INFORMATION; |
| |
| typedef struct _SYSTEM_LOOKASIDE_INFORMATION { |
| USHORT Depth; |
| USHORT MaximumDepth; |
| ULONG TotalAllocates; |
| ULONG AllocateMisses; |
| ULONG TotalFrees; |
| ULONG FreeMisses; |
| POOL_TYPE Type; |
| ULONG Tag; |
| ULONG Size; |
| } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION; |
| |
| typedef struct _SYSTEM_SET_TIME_SLIP_EVENT { |
| HANDLE TimeSlipEvent; |
| } SYSTEM_SET_TIME_SLIP_EVENT, *PSYSTEM_SET_TIME_SLIP_EVENT; |
| |
| typedef struct _SYSTEM_CREATE_SESSION { |
| ULONG SessionId; |
| } SYSTEM_CREATE_SESSION, *PSYSTEM_CREATE_SESSION; |
| |
| typedef struct _SYSTEM_DELETE_SESSION { |
| ULONG SessionId; |
| } SYSTEM_DELETE_SESSION, *PSYSTEM_DELETE_SESSION; |
| |
| typedef struct _SYSTEM_RANGE_START_INFORMATION { |
| PVOID SystemRangeStart; |
| } SYSTEM_RANGE_START_INFORMATION, *PSYSTEM_RANGE_START_INFORMATION; |
| |
| typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION { |
| ULONG SessionId; |
| ULONG BufferSize; |
| PVOID Buffer; |
| } SYSTEM_SESSION_PROCESSES_INFORMATION, *PSYSTEM_SESSION_PROCESSES_INFORMATION; |
| |
| typedef struct _SYSTEM_POOL_BLOCK { |
| BOOLEAN Allocated; |
| USHORT Unknown; |
| ULONG Size; |
| CHAR Tag[4]; |
| } SYSTEM_POOL_BLOCK, *PSYSTEM_POOL_BLOCK; |
| |
| typedef struct _SYSTEM_POOL_BLOCKS_INFORMATION { |
| ULONG PoolSize; |
| PVOID PoolBase; |
| USHORT Unknown; |
| ULONG NumberOfBlocks; |
| SYSTEM_POOL_BLOCK PoolBlocks[1]; |
| } SYSTEM_POOL_BLOCKS_INFORMATION, *PSYSTEM_POOL_BLOCKS_INFORMATION; |
| |
| typedef struct _SYSTEM_MEMORY_USAGE { |
| PVOID Name; |
| USHORT Valid; |
| USHORT Standby; |
| USHORT Modified; |
| USHORT PageTables; |
| } SYSTEM_MEMORY_USAGE, *PSYSTEM_MEMORY_USAGE; |
| |
| typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION { |
| ULONG Reserved; |
| PVOID EndOfData; |
| SYSTEM_MEMORY_USAGE MemoryUsage[1]; |
| } SYSTEM_MEMORY_USAGE_INFORMATION, *PSYSTEM_MEMORY_USAGE_INFORMATION; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtQuerySystemInformation( |
| /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, |
| /*IN OUT*/ PVOID SystemInformation, |
| /*IN*/ ULONG SystemInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQuerySystemInformation( |
| /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, |
| /*IN OUT*/ PVOID SystemInformation, |
| /*IN*/ ULONG SystemInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTAPI |
| NTSTATUS |
| NtQueryFullAttributesFile( |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation); |
| |
| NTOSAPI |
| NTAPI |
| NTSTATUS |
| ZwQueryFullAttributesFile( |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetSystemInformation( |
| /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, |
| /*IN OUT*/ PVOID SystemInformation, |
| /*IN*/ ULONG SystemInformationLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQuerySystemEnvironmentValue( |
| /*IN*/ PUNICODE_STRING Name, |
| /*OUT*/ PVOID Value, |
| /*IN*/ ULONG ValueLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetSystemEnvironmentValue( |
| /*IN*/ PUNICODE_STRING Name, |
| /*IN*/ PUNICODE_STRING Value); |
| |
| typedef enum _SHUTDOWN_ACTION { |
| ShutdownNoReboot, |
| ShutdownReboot, |
| ShutdownPowerOff |
| } SHUTDOWN_ACTION; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtShutdownSystem( |
| /*IN*/ SHUTDOWN_ACTION Action); |
| |
| typedef enum _DEBUG_CONTROL_CODE { |
| DebugGetTraceInformation = 1, |
| DebugSetInternalBreakpoint, |
| DebugSetSpecialCall, |
| DebugClearSpecialCalls, |
| DebugQuerySpecialCalls, |
| DebugDbgBreakPoint, |
| DebugMaximum |
| } DEBUG_CONTROL_CODE; |
| |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSystemDebugControl( |
| /*IN*/ DEBUG_CONTROL_CODE ControlCode, |
| /*IN*/ PVOID InputBuffer /*OPTIONAL*/, |
| /*IN*/ ULONG InputBufferLength, |
| /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/, |
| /*IN*/ ULONG OutputBufferLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| |
| |
| /* Objects, Object directories, and symbolic links */ |
| |
| typedef enum _OBJECT_INFORMATION_CLASS { |
| ObjectBasicInformation, |
| ObjectNameInformation, |
| ObjectTypeInformation, |
| ObjectAllTypesInformation, |
| ObjectHandleInformation |
| } OBJECT_INFORMATION_CLASS; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryObject( |
| /*IN*/ HANDLE ObjectHandle, |
| /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass, |
| /*OUT*/ PVOID ObjectInformation, |
| /*IN*/ ULONG ObjectInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetInformationObject( |
| /*IN*/ HANDLE ObjectHandle, |
| /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass, |
| /*IN*/ PVOID ObjectInformation, |
| /*IN*/ ULONG ObjectInformationLength); |
| |
| /* OBJECT_BASIC_INFORMATION.Attributes constants */ |
| /* also in winbase.h */ |
| #define HANDLE_FLAG_INHERIT 0x01 |
| #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02 |
| /* end winbase.h */ |
| #define PERMANENT 0x10 |
| #define EXCLUSIVE 0x20 |
| |
| typedef struct _OBJECT_BASIC_INFORMATION { |
| ULONG Attributes; |
| ACCESS_MASK GrantedAccess; |
| ULONG HandleCount; |
| ULONG PointerCount; |
| ULONG PagedPoolUsage; |
| ULONG NonPagedPoolUsage; |
| ULONG Reserved[3]; |
| ULONG NameInformationLength; |
| ULONG TypeInformationLength; |
| ULONG SecurityDescriptorLength; |
| LARGE_INTEGER CreateTime; |
| } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; |
| #if 0 |
| /* FIXME: Enable later */ |
| typedef struct _OBJECT_TYPE_INFORMATION { |
| UNICODE_STRING Name; |
| ULONG ObjectCount; |
| ULONG HandleCount; |
| ULONG Reserved1[4]; |
| ULONG PeakObjectCount; |
| ULONG PeakHandleCount; |
| ULONG Reserved2[4]; |
| ULONG InvalidAttributes; |
| GENERIC_MAPPING GenericMapping; |
| ULONG ValidAccess; |
| UCHAR Unknown; |
| BOOLEAN MaintainHandleDatabase; |
| POOL_TYPE PoolType; |
| ULONG PagedPoolUsage; |
| ULONG NonPagedPoolUsage; |
| } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; |
| |
| typedef struct _OBJECT_ALL_TYPES_INFORMATION { |
| ULONG NumberOfTypes; |
| OBJECT_TYPE_INFORMATION TypeInformation; |
| } OBJECT_ALL_TYPES_INFORMATION, *POBJECT_ALL_TYPES_INFORMATION; |
| #endif |
| typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION { |
| BOOLEAN Inherit; |
| BOOLEAN ProtectFromClose; |
| } OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtDuplicateObject( |
| /*IN*/ HANDLE SourceProcessHandle, |
| /*IN*/ HANDLE SourceHandle, |
| /*IN*/ HANDLE TargetProcessHandle, |
| /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ ULONG Attributes, |
| /*IN*/ ULONG Options); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwDuplicateObject( |
| /*IN*/ HANDLE SourceProcessHandle, |
| /*IN*/ HANDLE SourceHandle, |
| /*IN*/ HANDLE TargetProcessHandle, |
| /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ ULONG Attributes, |
| /*IN*/ ULONG Options); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtQuerySecurityObject( |
| /*IN*/ HANDLE Handle, |
| /*IN*/ SECURITY_INFORMATION SecurityInformation, |
| /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ ULONG SecurityDescriptorLength, |
| /*OUT*/ PULONG ReturnLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQuerySecurityObject( |
| /*IN*/ HANDLE Handle, |
| /*IN*/ SECURITY_INFORMATION SecurityInformation, |
| /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ ULONG SecurityDescriptorLength, |
| /*OUT*/ PULONG ReturnLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtSetSecurityObject( |
| /*IN*/ HANDLE Handle, |
| /*IN*/ SECURITY_INFORMATION SecurityInformation, |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetSecurityObject( |
| /*IN*/ HANDLE Handle, |
| /*IN*/ SECURITY_INFORMATION SecurityInformation, |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwOpenDirectoryObject( |
| /*OUT*/ PHANDLE DirectoryHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryDirectoryObject( |
| /*IN*/ HANDLE DirectoryHandle, |
| /*OUT*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength, |
| /*IN*/ BOOLEAN ReturnSingleEntry, |
| /*IN*/ BOOLEAN RestartScan, |
| /*IN OUT*/ PULONG Context, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| typedef struct _DIRECTORY_BASIC_INFORMATION { |
| UNICODE_STRING ObjectName; |
| UNICODE_STRING ObjectTypeName; |
| } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateSymbolicLinkObject( |
| /*OUT*/ PHANDLE SymbolicLinkHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ PUNICODE_STRING TargetName); |
| |
| |
| |
| |
| /* Virtual memory */ |
| |
| typedef enum _MEMORY_INFORMATION_CLASS { |
| MemoryBasicInformation, |
| MemoryWorkingSetList, |
| MemorySectionName, |
| MemoryBasicVlmInformation |
| } MEMORY_INFORMATION_CLASS; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtAllocateVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PVOID *BaseAddress, |
| /*IN*/ ULONG ZeroBits, |
| /*IN OUT*/ PULONG AllocationSize, |
| /*IN*/ ULONG AllocationType, |
| /*IN*/ ULONG Protect); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAllocateVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PVOID *BaseAddress, |
| /*IN*/ ULONG ZeroBits, |
| /*IN OUT*/ PULONG AllocationSize, |
| /*IN*/ ULONG AllocationType, |
| /*IN*/ ULONG Protect); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtFreeVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PVOID *BaseAddress, |
| /*IN OUT*/ PULONG FreeSize, |
| /*IN*/ ULONG FreeType); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwFreeVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PVOID *BaseAddress, |
| /*IN OUT*/ PULONG FreeSize, |
| /*IN*/ ULONG FreeType); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PVOID BaseAddress, |
| /*IN*/ MEMORY_INFORMATION_CLASS MemoryInformationClass, |
| /*OUT*/ PVOID MemoryInformation, |
| /*IN*/ ULONG MemoryInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| /* MEMORY_WORKING_SET_LIST.WorkingSetList constants */ |
| #define WSLE_PAGE_READONLY 0x001 |
| #define WSLE_PAGE_EXECUTE 0x002 |
| #define WSLE_PAGE_READWRITE 0x004 |
| #define WSLE_PAGE_EXECUTE_READ 0x003 |
| #define WSLE_PAGE_WRITECOPY 0x005 |
| #define WSLE_PAGE_EXECUTE_READWRITE 0x006 |
| #define WSLE_PAGE_EXECUTE_WRITECOPY 0x007 |
| #define WSLE_PAGE_SHARE_COUNT_MASK 0x0E0 |
| #define WSLE_PAGE_SHAREABLE 0x100 |
| |
| typedef struct _MEMORY_WORKING_SET_LIST { |
| ULONG NumberOfPages; |
| ULONG WorkingSetList[1]; |
| } MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST; |
| |
| typedef struct _MEMORY_SECTION_NAME { |
| UNICODE_STRING SectionFileName; |
| } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME; |
| |
| /* Zw[Lock|Unlock]VirtualMemory.LockType constants */ |
| #define LOCK_VM_IN_WSL 0x01 |
| #define LOCK_VM_IN_RAM 0x02 |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwLockVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PVOID *BaseAddress, |
| /*IN OUT*/ PULONG LockSize, |
| /*IN*/ ULONG LockType); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwUnlockVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PVOID *BaseAddress, |
| /*IN OUT*/ PULONG LockSize, |
| /*IN*/ ULONG LockType); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwReadVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PVOID BaseAddress, |
| /*OUT*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwWriteVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PVOID BaseAddress, |
| /*IN*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwProtectVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PVOID *BaseAddress, |
| /*IN OUT*/ PULONG ProtectSize, |
| /*IN*/ ULONG NewProtect, |
| /*OUT*/ PULONG OldProtect); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwFlushVirtualMemory( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PVOID *BaseAddress, |
| /*IN OUT*/ PULONG FlushSize, |
| /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAllocateUserPhysicalPages( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PULONG NumberOfPages, |
| /*OUT*/ PULONG PageFrameNumbers); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwFreeUserPhysicalPages( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN OUT*/ PULONG NumberOfPages, |
| /*IN*/ PULONG PageFrameNumbers); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwMapUserPhysicalPages( |
| /*IN*/ PVOID BaseAddress, |
| /*IN*/ PULONG NumberOfPages, |
| /*IN*/ PULONG PageFrameNumbers); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwMapUserPhysicalPagesScatter( |
| /*IN*/ PVOID *BaseAddresses, |
| /*IN*/ PULONG NumberOfPages, |
| /*IN*/ PULONG PageFrameNumbers); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwGetWriteWatch( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ ULONG Flags, |
| /*IN*/ PVOID BaseAddress, |
| /*IN*/ ULONG RegionSize, |
| /*OUT*/ PULONG Buffer, |
| /*IN OUT*/ PULONG BufferEntries, |
| /*OUT*/ PULONG Granularity); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwResetWriteWatch( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PVOID BaseAddress, |
| /*IN*/ ULONG RegionSize); |
| |
| |
| |
| |
| /* Sections */ |
| |
| typedef enum _SECTION_INFORMATION_CLASS { |
| SectionBasicInformation, |
| SectionImageInformation |
| } SECTION_INFORMATION_CLASS; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtCreateSection( |
| /*OUT*/ PHANDLE SectionHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ PLARGE_INTEGER SectionSize /*OPTIONAL*/, |
| /*IN*/ ULONG Protect, |
| /*IN*/ ULONG Attributes, |
| /*IN*/ HANDLE FileHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateSection( |
| /*OUT*/ PHANDLE SectionHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ PLARGE_INTEGER SectionSize /*OPTIONAL*/, |
| /*IN*/ ULONG Protect, |
| /*IN*/ ULONG Attributes, |
| /*IN*/ HANDLE FileHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQuerySection( |
| /*IN*/ HANDLE SectionHandle, |
| /*IN*/ SECTION_INFORMATION_CLASS SectionInformationClass, |
| /*OUT*/ PVOID SectionInformation, |
| /*IN*/ ULONG SectionInformationLength, |
| /*OUT*/ PULONG ResultLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwExtendSection( |
| /*IN*/ HANDLE SectionHandle, |
| /*IN*/ PLARGE_INTEGER SectionSize); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAreMappedFilesTheSame( |
| /*IN*/ PVOID Address1, |
| /*IN*/ PVOID Address2); |
| |
| |
| |
| |
| /* Threads */ |
| |
| typedef struct _USER_STACK { |
| PVOID FixedStackBase; |
| PVOID FixedStackLimit; |
| PVOID ExpandableStackBase; |
| PVOID ExpandableStackLimit; |
| PVOID ExpandableStackBottom; |
| } USER_STACK, *PUSER_STACK; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateThread( |
| /*OUT*/ PHANDLE ThreadHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ HANDLE ProcessHandle, |
| /*OUT*/ PCLIENT_ID ClientId, |
| /*IN*/ PCONTEXT ThreadContext, |
| /*IN*/ PUSER_STACK UserStack, |
| /*IN*/ BOOLEAN CreateSuspended); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtOpenThread( |
| /*OUT*/ PHANDLE ThreadHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ PCLIENT_ID ClientId); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwOpenThread( |
| /*OUT*/ PHANDLE ThreadHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ PCLIENT_ID ClientId); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwTerminateThread( |
| /*IN*/ HANDLE ThreadHandle /*OPTIONAL*/, |
| /*IN*/ NTSTATUS ExitStatus); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtQueryInformationThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*IN*/ THREADINFOCLASS ThreadInformationClass, |
| /*OUT*/ PVOID ThreadInformation, |
| /*IN*/ ULONG ThreadInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryInformationThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*IN*/ THREADINFOCLASS ThreadInformationClass, |
| /*OUT*/ PVOID ThreadInformation, |
| /*IN*/ ULONG ThreadInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtSetInformationThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*IN*/ THREADINFOCLASS ThreadInformationClass, |
| /*IN*/ PVOID ThreadInformation, |
| /*IN*/ ULONG ThreadInformationLength); |
| |
| typedef struct _THREAD_BASIC_INFORMATION { |
| NTSTATUS ExitStatus; |
| PNT_TIB TebBaseAddress; |
| CLIENT_ID ClientId; |
| KAFFINITY AffinityMask; |
| KPRIORITY Priority; |
| KPRIORITY BasePriority; |
| } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; |
| |
| typedef struct _KERNEL_USER_TIMES { |
| LARGE_INTEGER CreateTime; |
| LARGE_INTEGER ExitTime; |
| LARGE_INTEGER KernelTime; |
| LARGE_INTEGER UserTime; |
| } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSuspendThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwResumeThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwGetContextThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*OUT*/ PCONTEXT Context); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetContextThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*IN*/ PCONTEXT Context); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueueApcThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*IN*/ PKNORMAL_ROUTINE ApcRoutine, |
| /*IN*/ PVOID ApcContext /*OPTIONAL*/, |
| /*IN*/ PVOID Argument1 /*OPTIONAL*/, |
| /*IN*/ PVOID Argument2 /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwTestAlert( |
| VOID); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAlertThread( |
| /*IN*/ HANDLE ThreadHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAlertResumeThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*OUT*/ PULONG PreviousSuspendCount /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwRegisterThreadTerminatePort( |
| /*IN*/ HANDLE PortHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwImpersonateThread( |
| /*IN*/ HANDLE ThreadHandle, |
| /*IN*/ HANDLE TargetThreadHandle, |
| /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwImpersonateAnonymousToken( |
| /*IN*/ HANDLE ThreadHandle); |
| |
| |
| |
| |
| /* Processes */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateProcess( |
| /*OUT*/ PHANDLE ProcessHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ HANDLE InheritFromProcessHandle, |
| /*IN*/ BOOLEAN InheritHandles, |
| /*IN*/ HANDLE SectionHandle /*OPTIONAL*/, |
| /*IN*/ HANDLE DebugPort /*OPTIONAL*/, |
| /*IN*/ HANDLE ExceptionPort /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateProcess( |
| /*OUT*/ PHANDLE ProcessHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ HANDLE InheritFromProcessHandle, |
| /*IN*/ BOOLEAN InheritHandles, |
| /*IN*/ HANDLE SectionHandle /*OPTIONAL*/, |
| /*IN*/ HANDLE DebugPort /*OPTIONAL*/, |
| /*IN*/ HANDLE ExceptionPort /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwTerminateProcess( |
| /*IN*/ HANDLE ProcessHandle /*OPTIONAL*/, |
| /*IN*/ NTSTATUS ExitStatus); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryInformationProcess( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PROCESSINFOCLASS ProcessInformationClass, |
| /*OUT*/ PVOID ProcessInformation, |
| /*IN*/ ULONG ProcessInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtSetInformationProcess( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PROCESSINFOCLASS ProcessInformationClass, |
| /*IN*/ PVOID ProcessInformation, |
| /*IN*/ ULONG ProcessInformationLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetInformationProcess( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PROCESSINFOCLASS ProcessInformationClass, |
| /*IN*/ PVOID ProcessInformation, |
| /*IN*/ ULONG ProcessInformationLength); |
| |
| typedef struct _PROCESS_BASIC_INFORMATION { |
| NTSTATUS ExitStatus; |
| PPEB PebBaseAddress; |
| KAFFINITY AffinityMask; |
| KPRIORITY BasePriority; |
| ULONG UniqueProcessId; |
| ULONG InheritedFromUniqueProcessId; |
| } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; |
| |
| typedef struct _PROCESS_ACCESS_TOKEN { |
| HANDLE Token; |
| HANDLE Thread; |
| } PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; |
| |
| /* DefaultHardErrorMode constants */ |
| /* also in winbase.h */ |
| #define SEM_FAILCRITICALERRORS 0x0001 |
| #define SEM_NOGPFAULTERRORBOX 0x0002 |
| #define SEM_NOALIGNMENTFAULTEXCEPT 0x0004 |
| #define SEM_NOOPENFILEERRORBOX 0x8000 |
| /* end winbase.h */ |
| typedef struct _POOLED_USAGE_AND_LIMITS { |
| ULONG PeakPagedPoolUsage; |
| ULONG PagedPoolUsage; |
| ULONG PagedPoolLimit; |
| ULONG PeakNonPagedPoolUsage; |
| ULONG NonPagedPoolUsage; |
| ULONG NonPagedPoolLimit; |
| ULONG PeakPagefileUsage; |
| ULONG PagefileUsage; |
| ULONG PagefileLimit; |
| } POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS; |
| |
| typedef struct _PROCESS_WS_WATCH_INFORMATION { |
| PVOID FaultingPc; |
| PVOID FaultingVa; |
| } PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION; |
| |
| /* PROCESS_PRIORITY_CLASS.PriorityClass constants */ |
| #define PC_IDLE 1 |
| #define PC_NORMAL 2 |
| #define PC_HIGH 3 |
| #define PC_REALTIME 4 |
| #define PC_BELOW_NORMAL 5 |
| #define PC_ABOVE_NORMAL 6 |
| |
| typedef struct _PROCESS_PRIORITY_CLASS { |
| BOOLEAN Foreground; |
| UCHAR PriorityClass; |
| } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS; |
| |
| /* PROCESS_DEVICEMAP_INFORMATION.DriveType constants */ |
| #define DRIVE_UNKNOWN 0 |
| #define DRIVE_NO_ROOT_DIR 1 |
| #define DRIVE_REMOVABLE 2 |
| #define DRIVE_FIXED 3 |
| #define DRIVE_REMOTE 4 |
| #define DRIVE_CDROM 5 |
| #define DRIVE_RAMDISK 6 |
| |
| typedef struct _PROCESS_DEVICEMAP_INFORMATION { |
| _ANONYMOUS_UNION union { |
| struct { |
| HANDLE DirectoryHandle; |
| } Set; |
| struct { |
| ULONG DriveMap; |
| UCHAR DriveType[32]; |
| } Query; |
| } DUMMYUNIONNAME; |
| } PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION; |
| |
| typedef struct _PROCESS_SESSION_INFORMATION { |
| ULONG SessionId; |
| } PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; |
| |
| typedef struct _RTL_USER_PROCESS_PARAMETERS { |
| ULONG AllocationSize; |
| ULONG Size; |
| ULONG Flags; |
| ULONG DebugFlags; |
| HANDLE hConsole; |
| ULONG ProcessGroup; |
| HANDLE hStdInput; |
| HANDLE hStdOutput; |
| HANDLE hStdError; |
| UNICODE_STRING CurrentDirectoryName; |
| HANDLE CurrentDirectoryHandle; |
| UNICODE_STRING DllPath; |
| UNICODE_STRING ImagePathName; |
| UNICODE_STRING CommandLine; |
| PWSTR Environment; |
| ULONG dwX; |
| ULONG dwY; |
| ULONG dwXSize; |
| ULONG dwYSize; |
| ULONG dwXCountChars; |
| ULONG dwYCountChars; |
| ULONG dwFillAttribute; |
| ULONG dwFlags; |
| ULONG wShowWindow; |
| UNICODE_STRING WindowTitle; |
| UNICODE_STRING DesktopInfo; |
| UNICODE_STRING ShellInfo; |
| UNICODE_STRING RuntimeInfo; |
| } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS; |
| |
| NTSTATUS |
| NTAPI |
| RtlCreateProcessParameters( |
| /*OUT*/ PRTL_USER_PROCESS_PARAMETERS *ProcessParameters, |
| /*IN*/ PUNICODE_STRING ImageFile, |
| /*IN*/ PUNICODE_STRING DllPath /*OPTIONAL*/, |
| /*IN*/ PUNICODE_STRING CurrentDirectory /*OPTIONAL*/, |
| /*IN*/ PUNICODE_STRING CommandLine /*OPTIONAL*/, |
| /*IN*/ PWSTR Environment /*OPTIONAL*/, |
| /*IN*/ PUNICODE_STRING WindowTitle /*OPTIONAL*/, |
| /*IN*/ PUNICODE_STRING DesktopInfo /*OPTIONAL*/, |
| /*IN*/ PUNICODE_STRING ShellInfo /*OPTIONAL*/, |
| /*IN*/ PUNICODE_STRING RuntimeInfo /*OPTIONAL*/); |
| |
| NTSTATUS |
| NTAPI |
| RtlDestroyProcessParameters( |
| /*IN*/ PRTL_USER_PROCESS_PARAMETERS ProcessParameters); |
| |
| typedef struct _DEBUG_BUFFER { |
| HANDLE SectionHandle; |
| PVOID SectionBase; |
| PVOID RemoteSectionBase; |
| ULONG SectionBaseDelta; |
| HANDLE EventPairHandle; |
| ULONG Unknown[2]; |
| HANDLE RemoteThreadHandle; |
| ULONG InfoClassMask; |
| ULONG SizeOfInfo; |
| ULONG AllocatedSize; |
| ULONG SectionSize; |
| PVOID ModuleInformation; |
| PVOID BackTraceInformation; |
| PVOID HeapInformation; |
| PVOID LockInformation; |
| PVOID Reserved[8]; |
| } DEBUG_BUFFER, *PDEBUG_BUFFER; |
| |
| PDEBUG_BUFFER |
| NTAPI |
| RtlCreateQueryDebugBuffer( |
| /*IN*/ ULONG Size, |
| /*IN*/ BOOLEAN EventPair); |
| |
| /* RtlQueryProcessDebugInformation.DebugInfoClassMask constants */ |
| #define PDI_MODULES 0x01 |
| #define PDI_BACKTRACE 0x02 |
| #define PDI_HEAPS 0x04 |
| #define PDI_HEAP_TAGS 0x08 |
| #define PDI_HEAP_BLOCKS 0x10 |
| #define PDI_LOCKS 0x20 |
| |
| NTSTATUS |
| NTAPI |
| RtlQueryProcessDebugInformation( |
| /*IN*/ ULONG ProcessId, |
| /*IN*/ ULONG DebugInfoClassMask, |
| /*IN OUT*/ PDEBUG_BUFFER DebugBuffer); |
| |
| NTSTATUS |
| NTAPI |
| RtlDestroyQueryDebugBuffer( |
| /*IN*/ PDEBUG_BUFFER DebugBuffer); |
| |
| /* DEBUG_MODULE_INFORMATION.Flags constants */ |
| #define LDRP_STATIC_LINK 0x00000002 |
| #define LDRP_IMAGE_DLL 0x00000004 |
| #define LDRP_LOAD_IN_PROGRESS 0x00001000 |
| #define LDRP_UNLOAD_IN_PROGRESS 0x00002000 |
| #define LDRP_ENTRY_PROCESSED 0x00004000 |
| #define LDRP_ENTRY_INSERTED 0x00008000 |
| #define LDRP_CURRENT_LOAD 0x00010000 |
| #define LDRP_FAILED_BUILTIN_LOAD 0x00020000 |
| #define LDRP_DONT_CALL_FOR_THREADS 0x00040000 |
| #define LDRP_PROCESS_ATTACH_CALLED 0x00080000 |
| #define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000 |
| #define LDRP_IMAGE_NOT_AT_BASE 0x00200000 |
| #define LDRP_WX86_IGNORE_MACHINETYPE 0x00400000 |
| |
| typedef struct _DEBUG_MODULE_INFORMATION { |
| ULONG Reserved[2]; |
| ULONG Base; |
| ULONG Size; |
| ULONG Flags; |
| USHORT Index; |
| USHORT Unknown; |
| USHORT LoadCount; |
| USHORT ModuleNameOffset; |
| CHAR ImageName[256]; |
| } DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION; |
| |
| typedef struct _DEBUG_HEAP_INFORMATION { |
| ULONG Base; |
| ULONG Flags; |
| USHORT Granularity; |
| USHORT Unknown; |
| ULONG Allocated; |
| ULONG Committed; |
| ULONG TagCount; |
| ULONG BlockCount; |
| ULONG Reserved[7]; |
| PVOID Tags; |
| PVOID Blocks; |
| } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION; |
| |
| typedef struct _DEBUG_LOCK_INFORMATION { |
| PVOID Address; |
| USHORT Type; |
| USHORT CreatorBackTraceIndex; |
| ULONG OwnerThreadId; |
| ULONG ActiveCount; |
| ULONG ContentionCount; |
| ULONG EntryCount; |
| ULONG RecursionCount; |
| ULONG NumberOfSharedWaiters; |
| ULONG NumberOfExclusiveWaiters; |
| } DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION; |
| |
| |
| |
| /* Jobs */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateJobObject( |
| /*OUT*/ PHANDLE JobHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwOpenJobObject( |
| /*OUT*/ PHANDLE JobHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwTerminateJobObject( |
| /*IN*/ HANDLE JobHandle, |
| /*IN*/ NTSTATUS ExitStatus); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAssignProcessToJobObject( |
| /*IN*/ HANDLE JobHandle, |
| /*IN*/ HANDLE ProcessHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryInformationJobObject( |
| /*IN*/ HANDLE JobHandle, |
| /*IN*/ JOBOBJECTINFOCLASS JobInformationClass, |
| /*OUT*/ PVOID JobInformation, |
| /*IN*/ ULONG JobInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetInformationJobObject( |
| /*IN*/ HANDLE JobHandle, |
| /*IN*/ JOBOBJECTINFOCLASS JobInformationClass, |
| /*IN*/ PVOID JobInformation, |
| /*IN*/ ULONG JobInformationLength); |
| |
| |
| /* Tokens */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateToken( |
| /*OUT*/ PHANDLE TokenHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ TOKEN_TYPE Type, |
| /*IN*/ PLUID AuthenticationId, |
| /*IN*/ PLARGE_INTEGER ExpirationTime, |
| /*IN*/ PTOKEN_USER User, |
| /*IN*/ PTOKEN_GROUPS Groups, |
| /*IN*/ PTOKEN_PRIVILEGES Privileges, |
| /*IN*/ PTOKEN_OWNER Owner, |
| /*IN*/ PTOKEN_PRIMARY_GROUP PrimaryGroup, |
| /*IN*/ PTOKEN_DEFAULT_DACL DefaultDacl, |
| /*IN*/ PTOKEN_SOURCE Source |
| ); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtOpenProcessToken( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*OUT*/ PHANDLE TokenHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwOpenProcessToken( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*OUT*/ PHANDLE TokenHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtOpenThreadToken( |
| /*IN*/ HANDLE ThreadHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ BOOLEAN OpenAsSelf, |
| /*OUT*/ PHANDLE TokenHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwOpenThreadToken( |
| /*IN*/ HANDLE ThreadHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ BOOLEAN OpenAsSelf, |
| /*OUT*/ PHANDLE TokenHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtDuplicateToken( |
| /*IN*/ HANDLE ExistingTokenHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ BOOLEAN EffectiveOnly, |
| /*IN*/ TOKEN_TYPE TokenType, |
| /*OUT*/ PHANDLE NewTokenHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwDuplicateToken( |
| /*IN*/ HANDLE ExistingTokenHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ BOOLEAN EffectiveOnly, |
| /*IN*/ TOKEN_TYPE TokenType, |
| /*OUT*/ PHANDLE NewTokenHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwFilterToken( |
| /*IN*/ HANDLE ExistingTokenHandle, |
| /*IN*/ ULONG Flags, |
| /*IN*/ PTOKEN_GROUPS SidsToDisable, |
| /*IN*/ PTOKEN_PRIVILEGES PrivilegesToDelete, |
| /*IN*/ PTOKEN_GROUPS SidsToRestricted, |
| /*OUT*/ PHANDLE NewTokenHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtAdjustPrivilegesToken( |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ BOOLEAN DisableAllPrivileges, |
| /*IN*/ PTOKEN_PRIVILEGES NewState, |
| /*IN*/ ULONG BufferLength, |
| /*OUT*/ PTOKEN_PRIVILEGES PreviousState /*OPTIONAL*/, |
| /*OUT*/ PULONG ReturnLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAdjustPrivilegesToken( |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ BOOLEAN DisableAllPrivileges, |
| /*IN*/ PTOKEN_PRIVILEGES NewState, |
| /*IN*/ ULONG BufferLength, |
| /*OUT*/ PTOKEN_PRIVILEGES PreviousState /*OPTIONAL*/, |
| /*OUT*/ PULONG ReturnLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAdjustGroupsToken( |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ BOOLEAN ResetToDefault, |
| /*IN*/ PTOKEN_GROUPS NewState, |
| /*IN*/ ULONG BufferLength, |
| /*OUT*/ PTOKEN_GROUPS PreviousState /*OPTIONAL*/, |
| /*OUT*/ PULONG ReturnLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtQueryInformationToken( |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass, |
| /*OUT*/ PVOID TokenInformation, |
| /*IN*/ ULONG TokenInformationLength, |
| /*OUT*/ PULONG ReturnLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryInformationToken( |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass, |
| /*OUT*/ PVOID TokenInformation, |
| /*IN*/ ULONG TokenInformationLength, |
| /*OUT*/ PULONG ReturnLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetInformationToken( |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ TOKEN_INFORMATION_CLASS TokenInformationClass, |
| /*IN*/ PVOID TokenInformation, |
| /*IN*/ ULONG TokenInformationLength); |
| |
| |
| |
| |
| /* Time */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQuerySystemTime( |
| /*OUT*/ PLARGE_INTEGER CurrentTime); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetSystemTime( |
| /*IN*/ PLARGE_INTEGER NewTime, |
| /*OUT*/ PLARGE_INTEGER OldTime /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryPerformanceCounter( |
| /*OUT*/ PLARGE_INTEGER PerformanceCount, |
| /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryPerformanceCounter( |
| /*OUT*/ PLARGE_INTEGER PerformanceCount, |
| /*OUT*/ PLARGE_INTEGER PerformanceFrequency /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryTimerResolution( |
| /*OUT*/ PULONG CoarsestResolution, |
| /*OUT*/ PULONG FinestResolution, |
| /*OUT*/ PULONG ActualResolution); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwDelayExecution( |
| /*IN*/ BOOLEAN Alertable, |
| /*IN*/ PLARGE_INTEGER Interval); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwYieldExecution( |
| VOID); |
| |
| NTOSAPI |
| ULONG |
| NTAPI |
| ZwGetTickCount( |
| VOID); |
| |
| |
| |
| |
| /* Execution profiling */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateProfile( |
| /*OUT*/ PHANDLE ProfileHandle, |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PVOID Base, |
| /*IN*/ ULONG Size, |
| /*IN*/ ULONG BucketShift, |
| /*IN*/ PULONG Buffer, |
| /*IN*/ ULONG BufferLength, |
| /*IN*/ KPROFILE_SOURCE Source, |
| /*IN*/ ULONG ProcessorMask); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetIntervalProfile( |
| /*IN*/ ULONG Interval, |
| /*IN*/ KPROFILE_SOURCE Source); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryIntervalProfile( |
| /*IN*/ KPROFILE_SOURCE Source, |
| /*OUT*/ PULONG Interval); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwStartProfile( |
| /*IN*/ HANDLE ProfileHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwStopProfile( |
| /*IN*/ HANDLE ProfileHandle); |
| |
| /* Local Procedure Call (LPC) */ |
| |
| typedef struct _LPC_MESSAGE { |
| USHORT DataSize; |
| USHORT MessageSize; |
| USHORT MessageType; |
| USHORT VirtualRangesOffset; |
| CLIENT_ID ClientId; |
| ULONG MessageId; |
| ULONG SectionSize; |
| UCHAR Data[ANYSIZE_ARRAY]; |
| } LPC_MESSAGE, *PLPC_MESSAGE; |
| |
| #define LPC_MESSAGE_BASE_SIZE 24 |
| |
| typedef enum _LPC_TYPE { |
| LPC_NEW_MESSAGE, |
| LPC_REQUEST, |
| LPC_REPLY, |
| LPC_DATAGRAM, |
| LPC_LOST_REPLY, |
| LPC_PORT_CLOSED, |
| LPC_CLIENT_DIED, |
| LPC_EXCEPTION, |
| LPC_DEBUG_EVENT, |
| LPC_ERROR_EVENT, |
| LPC_CONNECTION_REQUEST, |
| LPC_CONNECTION_REFUSED, |
| LPC_MAXIMUM |
| } LPC_TYPE; |
| |
| typedef struct _LPC_SECTION_WRITE { |
| ULONG Length; |
| HANDLE SectionHandle; |
| ULONG SectionOffset; |
| ULONG ViewSize; |
| PVOID ViewBase; |
| PVOID TargetViewBase; |
| } LPC_SECTION_WRITE, *PLPC_SECTION_WRITE; |
| |
| typedef struct _LPC_SECTION_READ { |
| ULONG Length; |
| ULONG ViewSize; |
| PVOID ViewBase; |
| } LPC_SECTION_READ, *PLPC_SECTION_READ; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreatePort( |
| /*OUT*/ PHANDLE PortHandle, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ ULONG MaxDataSize, |
| /*IN*/ ULONG MaxMessageSize, |
| /*IN*/ ULONG Reserved); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreateWaitablePort( |
| /*OUT*/ PHANDLE PortHandle, |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, |
| /*IN*/ ULONG MaxDataSize, |
| /*IN*/ ULONG MaxMessageSize, |
| /*IN*/ ULONG Reserved); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtConnectPort( |
| /*OUT*/ PHANDLE PortHandle, |
| /*IN*/ PUNICODE_STRING PortName, |
| /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos, |
| /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/, |
| /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/, |
| /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/, |
| /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/, |
| /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwConnectPort( |
| /*OUT*/ PHANDLE PortHandle, |
| /*IN*/ PUNICODE_STRING PortName, |
| /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos, |
| /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/, |
| /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/, |
| /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/, |
| /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/, |
| /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwConnectPort( |
| /*OUT*/ PHANDLE PortHandle, |
| /*IN*/ PUNICODE_STRING PortName, |
| /*IN*/ PSECURITY_QUALITY_OF_SERVICE SecurityQos, |
| /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/, |
| /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/, |
| /*OUT*/ PULONG MaxMessageSize /*OPTIONAL*/, |
| /*IN OUT*/ PVOID ConnectData /*OPTIONAL*/, |
| /*IN OUT*/ PULONG ConnectDataLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwListenPort( |
| /*IN*/ HANDLE PortHandle, |
| /*OUT*/ PLPC_MESSAGE Message); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAcceptConnectPort( |
| /*OUT*/ PHANDLE PortHandle, |
| /*IN*/ ULONG PortIdentifier, |
| /*IN*/ PLPC_MESSAGE Message, |
| /*IN*/ BOOLEAN Accept, |
| /*IN OUT*/ PLPC_SECTION_WRITE WriteSection /*OPTIONAL*/, |
| /*IN OUT*/ PLPC_SECTION_READ ReadSection /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCompleteConnectPort( |
| /*IN*/ HANDLE PortHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtRequestPort( |
| /*IN*/ HANDLE PortHandle, |
| /*IN*/ PLPC_MESSAGE RequestMessage); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtRequestWaitReplyPort( |
| /*IN*/ HANDLE PortHandle, |
| /*IN*/ PLPC_MESSAGE RequestMessage, |
| /*OUT*/ PLPC_MESSAGE ReplyMessage); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwRequestWaitReplyPort( |
| /*IN*/ HANDLE PortHandle, |
| /*IN*/ PLPC_MESSAGE RequestMessage, |
| /*OUT*/ PLPC_MESSAGE ReplyMessage); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwReplyPort( |
| /*IN*/ HANDLE PortHandle, |
| /*IN*/ PLPC_MESSAGE ReplyMessage); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwReplyWaitReplyPort( |
| /*IN*/ HANDLE PortHandle, |
| /*IN OUT*/ PLPC_MESSAGE ReplyMessage); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwReplyWaitReceivePort( |
| /*IN*/ HANDLE PortHandle, |
| /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/, |
| /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/, |
| /*OUT*/ PLPC_MESSAGE Message); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwReplyWaitReceivePortEx( |
| /*IN*/ HANDLE PortHandle, |
| /*OUT*/ PULONG PortIdentifier /*OPTIONAL*/, |
| /*IN*/ PLPC_MESSAGE ReplyMessage /*OPTIONAL*/, |
| /*OUT*/ PLPC_MESSAGE Message, |
| /*IN*/ PLARGE_INTEGER Timeout); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwReadRequestData( |
| /*IN*/ HANDLE PortHandle, |
| /*IN*/ PLPC_MESSAGE Message, |
| /*IN*/ ULONG Index, |
| /*OUT*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwWriteRequestData( |
| /*IN*/ HANDLE PortHandle, |
| /*IN*/ PLPC_MESSAGE Message, |
| /*IN*/ ULONG Index, |
| /*IN*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| typedef enum _PORT_INFORMATION_CLASS { |
| PortBasicInformation |
| } PORT_INFORMATION_CLASS; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryInformationPort( |
| /*IN*/ HANDLE PortHandle, |
| /*IN*/ PORT_INFORMATION_CLASS PortInformationClass, |
| /*OUT*/ PVOID PortInformation, |
| /*IN*/ ULONG PortInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwImpersonateClientOfPort( |
| /*IN*/ HANDLE PortHandle, |
| /*IN*/ PLPC_MESSAGE Message); |
| |
| |
| |
| |
| /* Files */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtDeleteFile( |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwDeleteFile( |
| /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwFlushBuffersFile( |
| /*IN*/ HANDLE FileHandle, |
| /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCancelIoFile( |
| /*IN*/ HANDLE FileHandle, |
| /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwReadFileScatter( |
| /*IN*/ HANDLE FileHandle, |
| /*IN*/ HANDLE Event /*OPTIONAL*/, |
| /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, |
| /*IN*/ PVOID ApcContext /*OPTIONAL*/, |
| /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, |
| /*IN*/ PFILE_SEGMENT_ELEMENT Buffer, |
| /*IN*/ ULONG Length, |
| /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/, |
| /*IN*/ PULONG Key /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwWriteFileGather( |
| /*IN*/ HANDLE FileHandle, |
| /*IN*/ HANDLE Event /*OPTIONAL*/, |
| /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, |
| /*IN*/ PVOID ApcContext /*OPTIONAL*/, |
| /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, |
| /*IN*/ PFILE_SEGMENT_ELEMENT Buffer, |
| /*IN*/ ULONG Length, |
| /*IN*/ PLARGE_INTEGER ByteOffset /*OPTIONAL*/, |
| /*IN*/ PULONG Key /*OPTIONAL*/); |
| |
| |
| |
| |
| /* Registry keys */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSaveKey( |
| /*IN*/ HANDLE KeyHandle, |
| /*IN*/ HANDLE FileHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSaveMergedKeys( |
| /*IN*/ HANDLE KeyHandle1, |
| /*IN*/ HANDLE KeyHandle2, |
| /*IN*/ HANDLE FileHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwRestoreKey( |
| /*IN*/ HANDLE KeyHandle, |
| /*IN*/ HANDLE FileHandle, |
| /*IN*/ ULONG Flags); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwLoadKey( |
| /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, |
| /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwLoadKey2( |
| /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, |
| /*IN*/ POBJECT_ATTRIBUTES FileObjectAttributes, |
| /*IN*/ ULONG Flags); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwUnloadKey( |
| /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryOpenSubKeys( |
| /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, |
| /*OUT*/ PULONG NumberOfKeys); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwReplaceKey( |
| /*IN*/ POBJECT_ATTRIBUTES NewFileObjectAttributes, |
| /*IN*/ HANDLE KeyHandle, |
| /*IN*/ POBJECT_ATTRIBUTES OldFileObjectAttributes); |
| |
| typedef enum _KEY_SET_INFORMATION_CLASS { |
| KeyLastWriteTimeInformation |
| } KEY_SET_INFORMATION_CLASS; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetInformationKey( |
| /*IN*/ HANDLE KeyHandle, |
| /*IN*/ KEY_SET_INFORMATION_CLASS KeyInformationClass, |
| /*IN*/ PVOID KeyInformation, |
| /*IN*/ ULONG KeyInformationLength); |
| |
| typedef struct _KEY_LAST_WRITE_TIME_INFORMATION { |
| LARGE_INTEGER LastWriteTime; |
| } KEY_LAST_WRITE_TIME_INFORMATION, *PKEY_LAST_WRITE_TIME_INFORMATION; |
| |
| typedef struct _KEY_NAME_INFORMATION { |
| ULONG NameLength; |
| WCHAR Name[1]; |
| } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwNotifyChangeKey( |
| /*IN*/ HANDLE KeyHandle, |
| /*IN*/ HANDLE EventHandle /*OPTIONAL*/, |
| /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, |
| /*IN*/ PVOID ApcContext /*OPTIONAL*/, |
| /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, |
| /*IN*/ ULONG NotifyFilter, |
| /*IN*/ BOOLEAN WatchSubtree, |
| /*IN*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength, |
| /*IN*/ BOOLEAN Asynchronous); |
| |
| /* ZwNotifyChangeMultipleKeys.Flags constants */ |
| #define REG_MONITOR_SINGLE_KEY 0x00 |
| #define REG_MONITOR_SECOND_KEY 0x01 |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwNotifyChangeMultipleKeys( |
| /*IN*/ HANDLE KeyHandle, |
| /*IN*/ ULONG Flags, |
| /*IN*/ POBJECT_ATTRIBUTES KeyObjectAttributes, |
| /*IN*/ HANDLE EventHandle /*OPTIONAL*/, |
| /*IN*/ PIO_APC_ROUTINE ApcRoutine /*OPTIONAL*/, |
| /*IN*/ PVOID ApcContext /*OPTIONAL*/, |
| /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock, |
| /*IN*/ ULONG NotifyFilter, |
| /*IN*/ BOOLEAN WatchSubtree, |
| /*IN*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength, |
| /*IN*/ BOOLEAN Asynchronous); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryMultipleValueKey( |
| /*IN*/ HANDLE KeyHandle, |
| /*IN OUT*/ PKEY_VALUE_ENTRY ValueList, |
| /*IN*/ ULONG NumberOfValues, |
| /*OUT*/ PVOID Buffer, |
| /*IN OUT*/ PULONG Length, |
| /*OUT*/ PULONG ReturnLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwInitializeRegistry( |
| /*IN*/ BOOLEAN Setup); |
| |
| |
| |
| |
| /* Security and auditing */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwPrivilegeCheck( |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ PPRIVILEGE_SET RequiredPrivileges, |
| /*OUT*/ PBOOLEAN Result); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwPrivilegeObjectAuditAlarm( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID HandleId, |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ PPRIVILEGE_SET Privileges, |
| /*IN*/ BOOLEAN AccessGranted); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwPrivilegeObjectAuditAlarm( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID HandleId, |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ PPRIVILEGE_SET Privileges, |
| /*IN*/ BOOLEAN AccessGranted); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAccessCheck( |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ PGENERIC_MAPPING GenericMapping, |
| /*IN*/ PPRIVILEGE_SET PrivilegeSet, |
| /*IN*/ PULONG PrivilegeSetLength, |
| /*OUT*/ PACCESS_MASK GrantedAccess, |
| /*OUT*/ PBOOLEAN AccessStatus); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAccessCheckAndAuditAlarm( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID HandleId, |
| /*IN*/ PUNICODE_STRING ObjectTypeName, |
| /*IN*/ PUNICODE_STRING ObjectName, |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ PGENERIC_MAPPING GenericMapping, |
| /*IN*/ BOOLEAN ObjectCreation, |
| /*OUT*/ PACCESS_MASK GrantedAccess, |
| /*OUT*/ PBOOLEAN AccessStatus, |
| /*OUT*/ PBOOLEAN GenerateOnClose); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAccessCheckByType( |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ PSID PrincipalSelfSid, |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ ULONG DesiredAccess, |
| /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, |
| /*IN*/ ULONG ObjectTypeListLength, |
| /*IN*/ PGENERIC_MAPPING GenericMapping, |
| /*IN*/ PPRIVILEGE_SET PrivilegeSet, |
| /*IN*/ PULONG PrivilegeSetLength, |
| /*OUT*/ PACCESS_MASK GrantedAccess, |
| /*OUT*/ PULONG AccessStatus); |
| |
| typedef enum _AUDIT_EVENT_TYPE { |
| AuditEventObjectAccess, |
| AuditEventDirectoryServiceAccess |
| } AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAccessCheckByTypeAndAuditAlarm( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID HandleId, |
| /*IN*/ PUNICODE_STRING ObjectTypeName, |
| /*IN*/ PUNICODE_STRING ObjectName, |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ PSID PrincipalSelfSid, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ AUDIT_EVENT_TYPE AuditType, |
| /*IN*/ ULONG Flags, |
| /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, |
| /*IN*/ ULONG ObjectTypeListLength, |
| /*IN*/ PGENERIC_MAPPING GenericMapping, |
| /*IN*/ BOOLEAN ObjectCreation, |
| /*OUT*/ PACCESS_MASK GrantedAccess, |
| /*OUT*/ PULONG AccessStatus, |
| /*OUT*/ PBOOLEAN GenerateOnClose); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAccessCheckByTypeResultList( |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ PSID PrincipalSelfSid, |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, |
| /*IN*/ ULONG ObjectTypeListLength, |
| /*IN*/ PGENERIC_MAPPING GenericMapping, |
| /*IN*/ PPRIVILEGE_SET PrivilegeSet, |
| /*IN*/ PULONG PrivilegeSetLength, |
| /*OUT*/ PACCESS_MASK GrantedAccessList, |
| /*OUT*/ PULONG AccessStatusList); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAccessCheckByTypeResultListAndAuditAlarm( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID HandleId, |
| /*IN*/ PUNICODE_STRING ObjectTypeName, |
| /*IN*/ PUNICODE_STRING ObjectName, |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ PSID PrincipalSelfSid, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ AUDIT_EVENT_TYPE AuditType, |
| /*IN*/ ULONG Flags, |
| /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, |
| /*IN*/ ULONG ObjectTypeListLength, |
| /*IN*/ PGENERIC_MAPPING GenericMapping, |
| /*IN*/ BOOLEAN ObjectCreation, |
| /*OUT*/ PACCESS_MASK GrantedAccessList, |
| /*OUT*/ PULONG AccessStatusList, |
| /*OUT*/ PULONG GenerateOnClose); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwAccessCheckByTypeResultListAndAuditAlarmByHandle( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID HandleId, |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ PUNICODE_STRING ObjectTypeName, |
| /*IN*/ PUNICODE_STRING ObjectName, |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ PSID PrincipalSelfSid, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ AUDIT_EVENT_TYPE AuditType, |
| /*IN*/ ULONG Flags, |
| /*IN*/ POBJECT_TYPE_LIST ObjectTypeList, |
| /*IN*/ ULONG ObjectTypeListLength, |
| /*IN*/ PGENERIC_MAPPING GenericMapping, |
| /*IN*/ BOOLEAN ObjectCreation, |
| /*OUT*/ PACCESS_MASK GrantedAccessList, |
| /*OUT*/ PULONG AccessStatusList, |
| /*OUT*/ PULONG GenerateOnClose); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwOpenObjectAuditAlarm( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID *HandleId, |
| /*IN*/ PUNICODE_STRING ObjectTypeName, |
| /*IN*/ PUNICODE_STRING ObjectName, |
| /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor, |
| /*IN*/ HANDLE TokenHandle, |
| /*IN*/ ACCESS_MASK DesiredAccess, |
| /*IN*/ ACCESS_MASK GrantedAccess, |
| /*IN*/ PPRIVILEGE_SET Privileges /*OPTIONAL*/, |
| /*IN*/ BOOLEAN ObjectCreation, |
| /*IN*/ BOOLEAN AccessGranted, |
| /*OUT*/ PBOOLEAN GenerateOnClose); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCloseObjectAuditAlarm( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID HandleId, |
| /*IN*/ BOOLEAN GenerateOnClose); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwDeleteObjectAuditAlarm( |
| /*IN*/ PUNICODE_STRING SubsystemName, |
| /*IN*/ PVOID HandleId, |
| /*IN*/ BOOLEAN GenerateOnClose); |
| |
| |
| |
| |
| /* Plug and play and power management */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwRequestWakeupLatency( |
| /*IN*/ LATENCY_TIME Latency); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwRequestDeviceWakeup( |
| /*IN*/ HANDLE DeviceHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCancelDeviceWakeupRequest( |
| /*IN*/ HANDLE DeviceHandle); |
| |
| NTOSAPI |
| BOOLEAN |
| NTAPI |
| ZwIsSystemResumeAutomatic( |
| VOID); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetThreadExecutionState( |
| /*IN*/ EXECUTION_STATE ExecutionState, |
| /*OUT*/ PEXECUTION_STATE PreviousExecutionState); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwGetDevicePowerState( |
| /*IN*/ HANDLE DeviceHandle, |
| /*OUT*/ PDEVICE_POWER_STATE DevicePowerState); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetSystemPowerState( |
| /*IN*/ POWER_ACTION SystemAction, |
| /*IN*/ SYSTEM_POWER_STATE MinSystemState, |
| /*IN*/ ULONG Flags); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwInitiatePowerAction( |
| /*IN*/ POWER_ACTION SystemAction, |
| /*IN*/ SYSTEM_POWER_STATE MinSystemState, |
| /*IN*/ ULONG Flags, |
| /*IN*/ BOOLEAN Asynchronous); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwPowerInformation( |
| /*IN*/ POWER_INFORMATION_LEVEL PowerInformationLevel, |
| /*IN*/ PVOID InputBuffer /*OPTIONAL*/, |
| /*IN*/ ULONG InputBufferLength, |
| /*OUT*/ PVOID OutputBuffer /*OPTIONAL*/, |
| /*IN*/ ULONG OutputBufferLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwPlugPlayControl( |
| /*IN*/ ULONG ControlCode, |
| /*IN OUT*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwGetPlugPlayEvent( |
| /*IN*/ ULONG Reserved1, |
| /*IN*/ ULONG Reserved2, |
| /*OUT*/ PVOID Buffer, |
| /*IN*/ ULONG BufferLength); |
| |
| |
| |
| |
| /* Miscellany */ |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwRaiseException( |
| /*IN*/ PEXCEPTION_RECORD ExceptionRecord, |
| /*IN*/ PCONTEXT Context, |
| /*IN*/ BOOLEAN SearchFrames); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwContinue( |
| /*IN*/ PCONTEXT Context, |
| /*IN*/ BOOLEAN TestAlert); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwW32Call( |
| /*IN*/ ULONG RoutineIndex, |
| /*IN*/ PVOID Argument, |
| /*IN*/ ULONG ArgumentLength, |
| /*OUT*/ PVOID *Result /*OPTIONAL*/, |
| /*OUT*/ PULONG ResultLength /*OPTIONAL*/); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetLowWaitHighThread( |
| VOID); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetHighWaitLowThread( |
| VOID); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwLoadDriver( |
| /*IN*/ PUNICODE_STRING DriverServiceName); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwUnloadDriver( |
| /*IN*/ PUNICODE_STRING DriverServiceName); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwFlushInstructionCache( |
| /*IN*/ HANDLE ProcessHandle, |
| /*IN*/ PVOID BaseAddress /*OPTIONAL*/, |
| /*IN*/ ULONG FlushSize); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwFlushWriteBuffer( |
| VOID); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryDefaultLocale( |
| /*IN*/ BOOLEAN ThreadOrSystem, |
| /*OUT*/ PLCID Locale); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetDefaultLocale( |
| /*IN*/ BOOLEAN ThreadOrSystem, |
| /*IN*/ LCID Locale); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryDefaultUILanguage( |
| /*OUT*/ PLANGID LanguageId); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetDefaultUILanguage( |
| /*IN*/ LANGID LanguageId); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwQueryInstallUILanguage( |
| /*OUT*/ PLANGID LanguageId); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtAllocateLocallyUniqueId( |
| /*OUT*/ PLUID Luid); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtAllocateUuids( |
| /*OUT*/ PLARGE_INTEGER UuidLastTimeAllocated, |
| /*OUT*/ PULONG UuidDeltaTime, |
| /*OUT*/ PULONG UuidSequenceNumber, |
| /*OUT*/ PUCHAR UuidSeed); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetUuidSeed( |
| /*IN*/ PUCHAR UuidSeed); |
| |
| typedef enum _HARDERROR_RESPONSE_OPTION { |
| OptionAbortRetryIgnore, |
| OptionOk, |
| OptionOkCancel, |
| OptionRetryCancel, |
| OptionYesNo, |
| OptionYesNoCancel, |
| OptionShutdownSystem |
| } HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION; |
| |
| typedef enum _HARDERROR_RESPONSE { |
| ResponseReturnToCaller, |
| ResponseNotHandled, |
| ResponseAbort, |
| ResponseCancel, |
| ResponseIgnore, |
| ResponseNo, |
| ResponseOk, |
| ResponseRetry, |
| ResponseYes |
| } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwRaiseHardError( |
| /*IN*/ NTSTATUS Status, |
| /*IN*/ ULONG NumberOfArguments, |
| /*IN*/ ULONG StringArgumentsMask, |
| /*IN*/ PULONG Arguments, |
| /*IN*/ HARDERROR_RESPONSE_OPTION ResponseOption, |
| /*OUT*/ PHARDERROR_RESPONSE Response); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetDefaultHardErrorPort( |
| /*IN*/ HANDLE PortHandle); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwDisplayString( |
| /*IN*/ PUNICODE_STRING String); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwCreatePagingFile( |
| /*IN*/ PUNICODE_STRING FileName, |
| /*IN*/ PULARGE_INTEGER InitialSize, |
| /*IN*/ PULARGE_INTEGER MaximumSize, |
| /*IN*/ ULONG Reserved); |
| |
| typedef USHORT RTL_ATOM, *PRTL_ATOM; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtAddAtom( |
| /*IN*/ PWSTR AtomName, |
| /*IN*/ ULONG AtomNameLength, |
| /*OUT*/ PRTL_ATOM Atom); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtFindAtom( |
| /*IN*/ PWSTR AtomName, |
| /*IN*/ ULONG AtomNameLength, |
| /*OUT*/ PRTL_ATOM Atom); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtDeleteAtom( |
| /*IN*/ RTL_ATOM Atom); |
| |
| typedef enum _ATOM_INFORMATION_CLASS { |
| AtomBasicInformation, |
| AtomListInformation |
| } ATOM_INFORMATION_CLASS; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtQueryInformationAtom( |
| /*IN*/ RTL_ATOM Atom, |
| /*IN*/ ATOM_INFORMATION_CLASS AtomInformationClass, |
| /*OUT*/ PVOID AtomInformation, |
| /*IN*/ ULONG AtomInformationLength, |
| /*OUT*/ PULONG ReturnLength /*OPTIONAL*/); |
| |
| typedef struct _ATOM_BASIC_INFORMATION { |
| USHORT ReferenceCount; |
| USHORT Pinned; |
| USHORT NameLength; |
| WCHAR Name[1]; |
| } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION; |
| |
| typedef struct _ATOM_LIST_INFORMATION { |
| ULONG NumberOfAtoms; |
| ATOM Atoms[1]; |
| } ATOM_LIST_INFORMATION, *PATOM_LIST_INFORMATION; |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| ZwSetLdtEntries( |
| /*IN*/ ULONG Selector1, |
| /*IN*/ LDT_ENTRY LdtEntry1, |
| /*IN*/ ULONG Selector2, |
| /*IN*/ LDT_ENTRY LdtEntry2); |
| |
| NTOSAPI |
| NTSTATUS |
| NTAPI |
| NtVdmControl( |
| /*IN*/ ULONG ControlCode, |
| /*IN*/ PVOID ControlData); |
| |
| #pragma pack(pop) |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __NTAPI_H */ |