mirror of
https://github.com/ziglang/zig.git
synced 2025-12-07 14:53:08 +00:00
Update windows.zig Update windows.zig Update windows.zig Update windows.zig Update windows.zig Update windows.zig Update windows.zig Update ntdll.zig Update windows.zig Update ntdll.zig Update kernel32.zig
344 lines
11 KiB
Zig
344 lines
11 KiB
Zig
const std = @import("../../std.zig");
|
|
const windows = std.os.windows;
|
|
|
|
const BOOL = windows.BOOL;
|
|
const DWORD = windows.DWORD;
|
|
const DWORD64 = windows.DWORD64;
|
|
const ULONG = windows.ULONG;
|
|
const WINAPI = windows.WINAPI;
|
|
const NTSTATUS = windows.NTSTATUS;
|
|
const WORD = windows.WORD;
|
|
const HANDLE = windows.HANDLE;
|
|
const ACCESS_MASK = windows.ACCESS_MASK;
|
|
const IO_APC_ROUTINE = windows.IO_APC_ROUTINE;
|
|
const BOOLEAN = windows.BOOLEAN;
|
|
const OBJECT_ATTRIBUTES = windows.OBJECT_ATTRIBUTES;
|
|
const PVOID = windows.PVOID;
|
|
const IO_STATUS_BLOCK = windows.IO_STATUS_BLOCK;
|
|
const LARGE_INTEGER = windows.LARGE_INTEGER;
|
|
const OBJECT_INFORMATION_CLASS = windows.OBJECT_INFORMATION_CLASS;
|
|
const FILE_INFORMATION_CLASS = windows.FILE_INFORMATION_CLASS;
|
|
const FS_INFORMATION_CLASS = windows.FS_INFORMATION_CLASS;
|
|
const UNICODE_STRING = windows.UNICODE_STRING;
|
|
const RTL_OSVERSIONINFOW = windows.RTL_OSVERSIONINFOW;
|
|
const FILE_BASIC_INFORMATION = windows.FILE_BASIC_INFORMATION;
|
|
const SIZE_T = windows.SIZE_T;
|
|
const CURDIR = windows.CURDIR;
|
|
const PCWSTR = windows.PCWSTR;
|
|
const RTL_QUERY_REGISTRY_TABLE = windows.RTL_QUERY_REGISTRY_TABLE;
|
|
const CONTEXT = windows.CONTEXT;
|
|
const UNWIND_HISTORY_TABLE = windows.UNWIND_HISTORY_TABLE;
|
|
const RUNTIME_FUNCTION = windows.RUNTIME_FUNCTION;
|
|
const KNONVOLATILE_CONTEXT_POINTERS = windows.KNONVOLATILE_CONTEXT_POINTERS;
|
|
const EXCEPTION_ROUTINE = windows.EXCEPTION_ROUTINE;
|
|
const SYSTEM_INFORMATION_CLASS = windows.SYSTEM_INFORMATION_CLASS;
|
|
const THREADINFOCLASS = windows.THREADINFOCLASS;
|
|
const PROCESSINFOCLASS = windows.PROCESSINFOCLASS;
|
|
const LPVOID = windows.LPVOID;
|
|
const LPCVOID = windows.LPCVOID;
|
|
const SECTION_INHERIT = windows.SECTION_INHERIT;
|
|
|
|
pub extern "ntdll" fn NtQueryInformationProcess(
|
|
ProcessHandle: HANDLE,
|
|
ProcessInformationClass: PROCESSINFOCLASS,
|
|
ProcessInformation: *anyopaque,
|
|
ProcessInformationLength: ULONG,
|
|
ReturnLength: ?*ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtQueryInformationThread(
|
|
ThreadHandle: HANDLE,
|
|
ThreadInformationClass: THREADINFOCLASS,
|
|
ThreadInformation: *anyopaque,
|
|
ThreadInformationLength: ULONG,
|
|
ReturnLength: ?*ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtQuerySystemInformation(
|
|
SystemInformationClass: SYSTEM_INFORMATION_CLASS,
|
|
SystemInformation: PVOID,
|
|
SystemInformationLength: ULONG,
|
|
ReturnLength: ?*ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtSetInformationThread(
|
|
ThreadHandle: HANDLE,
|
|
ThreadInformationClass: THREADINFOCLASS,
|
|
ThreadInformation: *const anyopaque,
|
|
ThreadInformationLength: ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn RtlGetVersion(
|
|
lpVersionInformation: *RTL_OSVERSIONINFOW,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn RtlCaptureStackBackTrace(
|
|
FramesToSkip: DWORD,
|
|
FramesToCapture: DWORD,
|
|
BackTrace: **anyopaque,
|
|
BackTraceHash: ?*DWORD,
|
|
) callconv(WINAPI) WORD;
|
|
pub extern "ntdll" fn RtlCaptureContext(ContextRecord: *CONTEXT) callconv(WINAPI) void;
|
|
pub extern "ntdll" fn RtlLookupFunctionEntry(
|
|
ControlPc: DWORD64,
|
|
ImageBase: *DWORD64,
|
|
HistoryTable: *UNWIND_HISTORY_TABLE,
|
|
) callconv(WINAPI) ?*RUNTIME_FUNCTION;
|
|
pub extern "ntdll" fn RtlVirtualUnwind(
|
|
HandlerType: DWORD,
|
|
ImageBase: DWORD64,
|
|
ControlPc: DWORD64,
|
|
FunctionEntry: *RUNTIME_FUNCTION,
|
|
ContextRecord: *CONTEXT,
|
|
HandlerData: *?PVOID,
|
|
EstablisherFrame: *DWORD64,
|
|
ContextPointers: ?*KNONVOLATILE_CONTEXT_POINTERS,
|
|
) callconv(WINAPI) *EXCEPTION_ROUTINE;
|
|
pub extern "ntdll" fn NtQueryInformationFile(
|
|
FileHandle: HANDLE,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
FileInformation: *anyopaque,
|
|
Length: ULONG,
|
|
FileInformationClass: FILE_INFORMATION_CLASS,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn NtSetInformationFile(
|
|
FileHandle: HANDLE,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
FileInformation: PVOID,
|
|
Length: ULONG,
|
|
FileInformationClass: FILE_INFORMATION_CLASS,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtQueryAttributesFile(
|
|
ObjectAttributes: *OBJECT_ATTRIBUTES,
|
|
FileAttributes: *FILE_BASIC_INFORMATION,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn RtlQueryPerformanceCounter(PerformanceCounter: *LARGE_INTEGER) callconv(WINAPI) BOOL;
|
|
pub extern "ntdll" fn RtlQueryPerformanceFrequency(PerformanceFrequency: *LARGE_INTEGER) callconv(WINAPI) BOOL;
|
|
pub extern "ntdll" fn NtQueryPerformanceCounter(
|
|
PerformanceCounter: *LARGE_INTEGER,
|
|
PerformanceFrequency: ?*LARGE_INTEGER,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtCreateFile(
|
|
FileHandle: *HANDLE,
|
|
DesiredAccess: ACCESS_MASK,
|
|
ObjectAttributes: *OBJECT_ATTRIBUTES,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
AllocationSize: ?*LARGE_INTEGER,
|
|
FileAttributes: ULONG,
|
|
ShareAccess: ULONG,
|
|
CreateDisposition: ULONG,
|
|
CreateOptions: ULONG,
|
|
EaBuffer: ?*anyopaque,
|
|
EaLength: ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn NtCreateSection(
|
|
SectionHandle: *HANDLE,
|
|
DesiredAccess: ACCESS_MASK,
|
|
ObjectAttributes: ?*OBJECT_ATTRIBUTES,
|
|
MaximumSize: ?*LARGE_INTEGER,
|
|
SectionPageProtection: ULONG,
|
|
AllocationAttributes: ULONG,
|
|
FileHandle: ?HANDLE,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn NtMapViewOfSection(
|
|
SectionHandle: HANDLE,
|
|
ProcessHandle: HANDLE,
|
|
BaseAddress: *PVOID,
|
|
ZeroBits: ?*ULONG,
|
|
CommitSize: SIZE_T,
|
|
SectionOffset: ?*LARGE_INTEGER,
|
|
ViewSize: *SIZE_T,
|
|
InheritDispostion: SECTION_INHERIT,
|
|
AllocationType: ULONG,
|
|
Win32Protect: ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn NtUnmapViewOfSection(
|
|
ProcessHandle: HANDLE,
|
|
BaseAddress: PVOID,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn NtDeviceIoControlFile(
|
|
FileHandle: HANDLE,
|
|
Event: ?HANDLE,
|
|
ApcRoutine: ?IO_APC_ROUTINE,
|
|
ApcContext: ?*anyopaque,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
IoControlCode: ULONG,
|
|
InputBuffer: ?*const anyopaque,
|
|
InputBufferLength: ULONG,
|
|
OutputBuffer: ?PVOID,
|
|
OutputBufferLength: ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn NtFsControlFile(
|
|
FileHandle: HANDLE,
|
|
Event: ?HANDLE,
|
|
ApcRoutine: ?IO_APC_ROUTINE,
|
|
ApcContext: ?*anyopaque,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
FsControlCode: ULONG,
|
|
InputBuffer: ?*const anyopaque,
|
|
InputBufferLength: ULONG,
|
|
OutputBuffer: ?PVOID,
|
|
OutputBufferLength: ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn NtClose(Handle: HANDLE) callconv(WINAPI) NTSTATUS;
|
|
pub extern "ntdll" fn RtlDosPathNameToNtPathName_U(
|
|
DosPathName: [*:0]const u16,
|
|
NtPathName: *UNICODE_STRING,
|
|
NtFileNamePart: ?*?[*:0]const u16,
|
|
DirectoryInfo: ?*CURDIR,
|
|
) callconv(WINAPI) BOOL;
|
|
pub extern "ntdll" fn RtlFreeUnicodeString(UnicodeString: *UNICODE_STRING) callconv(WINAPI) void;
|
|
|
|
/// Returns the number of bytes written to `Buffer`.
|
|
/// If the returned count is larger than `BufferByteLength`, the buffer was too small.
|
|
/// If the returned count is zero, an error occurred.
|
|
pub extern "ntdll" fn RtlGetFullPathName_U(
|
|
FileName: [*:0]const u16,
|
|
BufferByteLength: ULONG,
|
|
Buffer: [*]u16,
|
|
ShortName: ?*[*:0]const u16,
|
|
) callconv(windows.WINAPI) windows.ULONG;
|
|
|
|
pub extern "ntdll" fn NtQueryDirectoryFile(
|
|
FileHandle: HANDLE,
|
|
Event: ?HANDLE,
|
|
ApcRoutine: ?IO_APC_ROUTINE,
|
|
ApcContext: ?*anyopaque,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
FileInformation: *anyopaque,
|
|
Length: ULONG,
|
|
FileInformationClass: FILE_INFORMATION_CLASS,
|
|
ReturnSingleEntry: BOOLEAN,
|
|
FileName: ?*UNICODE_STRING,
|
|
RestartScan: BOOLEAN,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtCreateKeyedEvent(
|
|
KeyedEventHandle: *HANDLE,
|
|
DesiredAccess: ACCESS_MASK,
|
|
ObjectAttributes: ?PVOID,
|
|
Flags: ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtReleaseKeyedEvent(
|
|
EventHandle: ?HANDLE,
|
|
Key: ?*const anyopaque,
|
|
Alertable: BOOLEAN,
|
|
Timeout: ?*const LARGE_INTEGER,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtWaitForKeyedEvent(
|
|
EventHandle: ?HANDLE,
|
|
Key: ?*const anyopaque,
|
|
Alertable: BOOLEAN,
|
|
Timeout: ?*const LARGE_INTEGER,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn RtlSetCurrentDirectory_U(PathName: *UNICODE_STRING) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtQueryObject(
|
|
Handle: HANDLE,
|
|
ObjectInformationClass: OBJECT_INFORMATION_CLASS,
|
|
ObjectInformation: PVOID,
|
|
ObjectInformationLength: ULONG,
|
|
ReturnLength: ?*ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtQueryVolumeInformationFile(
|
|
FileHandle: HANDLE,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
FsInformation: *anyopaque,
|
|
Length: ULONG,
|
|
FsInformationClass: FS_INFORMATION_CLASS,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn RtlWakeAddressAll(
|
|
Address: ?*const anyopaque,
|
|
) callconv(WINAPI) void;
|
|
|
|
pub extern "ntdll" fn RtlWakeAddressSingle(
|
|
Address: ?*const anyopaque,
|
|
) callconv(WINAPI) void;
|
|
|
|
pub extern "ntdll" fn RtlWaitOnAddress(
|
|
Address: ?*const anyopaque,
|
|
CompareAddress: ?*const anyopaque,
|
|
AddressSize: SIZE_T,
|
|
Timeout: ?*const LARGE_INTEGER,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn RtlEqualUnicodeString(
|
|
String1: *const UNICODE_STRING,
|
|
String2: *const UNICODE_STRING,
|
|
CaseInSensitive: BOOLEAN,
|
|
) callconv(WINAPI) BOOLEAN;
|
|
|
|
pub extern "ntdll" fn RtlUpcaseUnicodeChar(
|
|
SourceCharacter: u16,
|
|
) callconv(WINAPI) u16;
|
|
|
|
pub extern "ntdll" fn NtLockFile(
|
|
FileHandle: HANDLE,
|
|
Event: ?HANDLE,
|
|
ApcRoutine: ?*IO_APC_ROUTINE,
|
|
ApcContext: ?*anyopaque,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
ByteOffset: *const LARGE_INTEGER,
|
|
Length: *const LARGE_INTEGER,
|
|
Key: ?*ULONG,
|
|
FailImmediately: BOOLEAN,
|
|
ExclusiveLock: BOOLEAN,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtUnlockFile(
|
|
FileHandle: HANDLE,
|
|
IoStatusBlock: *IO_STATUS_BLOCK,
|
|
ByteOffset: *const LARGE_INTEGER,
|
|
Length: *const LARGE_INTEGER,
|
|
Key: ?*ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtOpenKey(
|
|
KeyHandle: *HANDLE,
|
|
DesiredAccess: ACCESS_MASK,
|
|
ObjectAttributes: OBJECT_ATTRIBUTES,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn RtlQueryRegistryValues(
|
|
RelativeTo: ULONG,
|
|
Path: PCWSTR,
|
|
QueryTable: [*]RTL_QUERY_REGISTRY_TABLE,
|
|
Context: ?*anyopaque,
|
|
Environment: ?*anyopaque,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtReadVirtualMemory(
|
|
ProcessHandle: HANDLE,
|
|
BaseAddress: ?PVOID,
|
|
Buffer: LPVOID,
|
|
NumberOfBytesToRead: SIZE_T,
|
|
NumberOfBytesRead: ?*SIZE_T,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtWriteVirtualMemory(
|
|
ProcessHandle: HANDLE,
|
|
BaseAddress: ?PVOID,
|
|
Buffer: LPCVOID,
|
|
NumberOfBytesToWrite: SIZE_T,
|
|
NumberOfBytesWritten: ?*SIZE_T,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn NtProtectVirtualMemory(
|
|
ProcessHandle: HANDLE,
|
|
BaseAddress: *?PVOID,
|
|
NumberOfBytesToProtect: *SIZE_T,
|
|
NewAccessProtection: ULONG,
|
|
OldAccessProtection: *ULONG,
|
|
) callconv(WINAPI) NTSTATUS;
|
|
|
|
pub extern "ntdll" fn RtlExitUserProcess(
|
|
ExitStatus: u32,
|
|
) callconv(WINAPI) noreturn;
|