📄 ntapi.h
字号:
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;NTOSAPINTSTATUSNTAPINtQuerySystemInformation( /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, /*IN OUT*/ PVOID SystemInformation, /*IN*/ ULONG SystemInformationLength, /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);NTOSAPINTSTATUSNTAPIZwQuerySystemInformation( /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, /*IN OUT*/ PVOID SystemInformation, /*IN*/ ULONG SystemInformationLength, /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);NTOSAPINTAPINTSTATUSNtQueryFullAttributesFile( /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation);NTOSAPINTAPINTSTATUSZwQueryFullAttributesFile( /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes, /*OUT*/ PFILE_NETWORK_OPEN_INFORMATION FileInformation);NTOSAPINTSTATUSNTAPIZwSetSystemInformation( /*IN*/ SYSTEM_INFORMATION_CLASS SystemInformationClass, /*IN OUT*/ PVOID SystemInformation, /*IN*/ ULONG SystemInformationLength);NTOSAPINTSTATUSNTAPIZwQuerySystemEnvironmentValue( /*IN*/ PUNICODE_STRING Name, /*OUT*/ PVOID Value, /*IN*/ ULONG ValueLength, /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);NTOSAPINTSTATUSNTAPIZwSetSystemEnvironmentValue( /*IN*/ PUNICODE_STRING Name, /*IN*/ PUNICODE_STRING Value);typedef enum _SHUTDOWN_ACTION { ShutdownNoReboot, ShutdownReboot, ShutdownPowerOff} SHUTDOWN_ACTION;NTOSAPINTSTATUSNTAPINtShutdownSystem( /*IN*/ SHUTDOWN_ACTION Action);typedef enum _DEBUG_CONTROL_CODE { DebugGetTraceInformation = 1, DebugSetInternalBreakpoint, DebugSetSpecialCall, DebugClearSpecialCalls, DebugQuerySpecialCalls, DebugDbgBreakPoint, DebugMaximum} DEBUG_CONTROL_CODE;NTOSAPINTSTATUSNTAPIZwSystemDebugControl( /*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;NTOSAPINTSTATUSNTAPIZwQueryObject( /*IN*/ HANDLE ObjectHandle, /*IN*/ OBJECT_INFORMATION_CLASS ObjectInformationClass, /*OUT*/ PVOID ObjectInformation, /*IN*/ ULONG ObjectInformationLength, /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);NTOSAPINTSTATUSNTAPIZwSetInformationObject( /*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 0x20typedef 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;#endiftypedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION { BOOLEAN Inherit; BOOLEAN ProtectFromClose;} OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION;NTOSAPINTSTATUSNTAPINtDuplicateObject( /*IN*/ HANDLE SourceProcessHandle, /*IN*/ HANDLE SourceHandle, /*IN*/ HANDLE TargetProcessHandle, /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/, /*IN*/ ACCESS_MASK DesiredAccess, /*IN*/ ULONG Attributes, /*IN*/ ULONG Options);NTOSAPINTSTATUSNTAPIZwDuplicateObject( /*IN*/ HANDLE SourceProcessHandle, /*IN*/ HANDLE SourceHandle, /*IN*/ HANDLE TargetProcessHandle, /*OUT*/ PHANDLE TargetHandle /*OPTIONAL*/, /*IN*/ ACCESS_MASK DesiredAccess, /*IN*/ ULONG Attributes, /*IN*/ ULONG Options);NTOSAPINTSTATUSNTAPINtQuerySecurityObject( /*IN*/ HANDLE Handle, /*IN*/ SECURITY_INFORMATION SecurityInformation, /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor, /*IN*/ ULONG SecurityDescriptorLength, /*OUT*/ PULONG ReturnLength);NTOSAPINTSTATUSNTAPIZwQuerySecurityObject( /*IN*/ HANDLE Handle, /*IN*/ SECURITY_INFORMATION SecurityInformation, /*OUT*/ PSECURITY_DESCRIPTOR SecurityDescriptor, /*IN*/ ULONG SecurityDescriptorLength, /*OUT*/ PULONG ReturnLength);NTOSAPINTSTATUSNTAPINtSetSecurityObject( /*IN*/ HANDLE Handle, /*IN*/ SECURITY_INFORMATION SecurityInformation, /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);NTOSAPINTSTATUSNTAPIZwSetSecurityObject( /*IN*/ HANDLE Handle, /*IN*/ SECURITY_INFORMATION SecurityInformation, /*IN*/ PSECURITY_DESCRIPTOR SecurityDescriptor);NTOSAPINTSTATUSNTAPIZwOpenDirectoryObject( /*OUT*/ PHANDLE DirectoryHandle, /*IN*/ ACCESS_MASK DesiredAccess, /*IN*/ POBJECT_ATTRIBUTES ObjectAttributes);NTOSAPINTSTATUSNTAPIZwQueryDirectoryObject( /*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;NTOSAPINTSTATUSNTAPIZwCreateSymbolicLinkObject( /*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;NTOSAPINTSTATUSNTAPINtAllocateVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PVOID *BaseAddress, /*IN*/ ULONG ZeroBits, /*IN OUT*/ PULONG AllocationSize, /*IN*/ ULONG AllocationType, /*IN*/ ULONG Protect);NTOSAPINTSTATUSNTAPIZwAllocateVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PVOID *BaseAddress, /*IN*/ ULONG ZeroBits, /*IN OUT*/ PULONG AllocationSize, /*IN*/ ULONG AllocationType, /*IN*/ ULONG Protect);NTOSAPINTSTATUSNTAPINtFreeVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PVOID *BaseAddress, /*IN OUT*/ PULONG FreeSize, /*IN*/ ULONG FreeType);NTOSAPINTSTATUSNTAPIZwFreeVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PVOID *BaseAddress, /*IN OUT*/ PULONG FreeSize, /*IN*/ ULONG FreeType);NTOSAPINTSTATUSNTAPIZwQueryVirtualMemory( /*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 0x100typedef 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 0x02NTOSAPINTSTATUSNTAPIZwLockVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PVOID *BaseAddress, /*IN OUT*/ PULONG LockSize, /*IN*/ ULONG LockType);NTOSAPINTSTATUSNTAPIZwUnlockVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PVOID *BaseAddress, /*IN OUT*/ PULONG LockSize, /*IN*/ ULONG LockType);NTOSAPINTSTATUSNTAPIZwReadVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN*/ PVOID BaseAddress, /*OUT*/ PVOID Buffer, /*IN*/ ULONG BufferLength, /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);NTOSAPINTSTATUSNTAPIZwWriteVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN*/ PVOID BaseAddress, /*IN*/ PVOID Buffer, /*IN*/ ULONG BufferLength, /*OUT*/ PULONG ReturnLength /*OPTIONAL*/);NTOSAPINTSTATUSNTAPIZwProtectVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PVOID *BaseAddress, /*IN OUT*/ PULONG ProtectSize, /*IN*/ ULONG NewProtect, /*OUT*/ PULONG OldProtect);NTOSAPINTSTATUSNTAPIZwFlushVirtualMemory( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PVOID *BaseAddress, /*IN OUT*/ PULONG FlushSize, /*OUT*/ PIO_STATUS_BLOCK IoStatusBlock);NTOSAPINTSTATUSNTAPIZwAllocateUserPhysicalPages( /*IN*/ HANDLE ProcessHandle, /*IN*/ PULONG NumberOfPages, /*OUT*/ PULONG PageFrameNumbers);NTOSAPINTSTATUSNTAPIZwFreeUserPhysicalPages( /*IN*/ HANDLE ProcessHandle, /*IN OUT*/ PULONG NumberOfPages, /*IN*/ PULONG PageFrameNumbers);NTOSAPINTSTATUSNTAPIZwMapUserPhysicalPages( /*IN*/ PVOID BaseAddress, /*IN*/ PULONG NumberOfPages, /*IN*/ PULONG PageFrameNumbers);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -