Move GLES20 source into standard locations
Move Khronos headers into their respective components, to be exported by each.
Remove hostthreadadapter as nothing outside of the vghwapiwrapper, which now contains the code, needs it
/*
* 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 */