1const std = @import("../../std.zig");
2const windows = std.os.windows;
3
4const BOOL = windows.BOOL;
5const DWORD = windows.DWORD;
6const ULONG = windows.ULONG;
7const WINAPI = windows.WINAPI;
8const NTSTATUS = windows.NTSTATUS;
9const WORD = windows.WORD;
10const HANDLE = windows.HANDLE;
11const ACCESS_MASK = windows.ACCESS_MASK;
12const IO_APC_ROUTINE = windows.IO_APC_ROUTINE;
13const BOOLEAN = windows.BOOLEAN;
14const OBJECT_ATTRIBUTES = windows.OBJECT_ATTRIBUTES;
15const PVOID = windows.PVOID;
16const IO_STATUS_BLOCK = windows.IO_STATUS_BLOCK;
17const LARGE_INTEGER = windows.LARGE_INTEGER;
18const OBJECT_INFORMATION_CLASS = windows.OBJECT_INFORMATION_CLASS;
19const FILE_INFORMATION_CLASS = windows.FILE_INFORMATION_CLASS;
20const UNICODE_STRING = windows.UNICODE_STRING;
21const RTL_OSVERSIONINFOW = windows.RTL_OSVERSIONINFOW;
22const FILE_BASIC_INFORMATION = windows.FILE_BASIC_INFORMATION;
23const SIZE_T = windows.SIZE_T;
24const CURDIR = windows.CURDIR;
25
26pub extern "NtDll" fn RtlGetVersion(
27    lpVersionInformation: *RTL_OSVERSIONINFOW,
28) callconv(WINAPI) NTSTATUS;
29pub extern "NtDll" fn RtlCaptureStackBackTrace(
30    FramesToSkip: DWORD,
31    FramesToCapture: DWORD,
32    BackTrace: **anyopaque,
33    BackTraceHash: ?*DWORD,
34) callconv(WINAPI) WORD;
35pub extern "NtDll" fn NtQueryInformationFile(
36    FileHandle: HANDLE,
37    IoStatusBlock: *IO_STATUS_BLOCK,
38    FileInformation: *anyopaque,
39    Length: ULONG,
40    FileInformationClass: FILE_INFORMATION_CLASS,
41) callconv(WINAPI) NTSTATUS;
42pub extern "NtDll" fn NtSetInformationFile(
43    FileHandle: HANDLE,
44    IoStatusBlock: *IO_STATUS_BLOCK,
45    FileInformation: PVOID,
46    Length: ULONG,
47    FileInformationClass: FILE_INFORMATION_CLASS,
48) callconv(WINAPI) NTSTATUS;
49
50pub extern "NtDll" fn NtQueryAttributesFile(
51    ObjectAttributes: *OBJECT_ATTRIBUTES,
52    FileAttributes: *FILE_BASIC_INFORMATION,
53) callconv(WINAPI) NTSTATUS;
54
55pub extern "NtDll" fn NtCreateFile(
56    FileHandle: *HANDLE,
57    DesiredAccess: ACCESS_MASK,
58    ObjectAttributes: *OBJECT_ATTRIBUTES,
59    IoStatusBlock: *IO_STATUS_BLOCK,
60    AllocationSize: ?*LARGE_INTEGER,
61    FileAttributes: ULONG,
62    ShareAccess: ULONG,
63    CreateDisposition: ULONG,
64    CreateOptions: ULONG,
65    EaBuffer: ?*anyopaque,
66    EaLength: ULONG,
67) callconv(WINAPI) NTSTATUS;
68pub extern "NtDll" fn NtDeviceIoControlFile(
69    FileHandle: HANDLE,
70    Event: ?HANDLE,
71    ApcRoutine: ?IO_APC_ROUTINE,
72    ApcContext: ?*anyopaque,
73    IoStatusBlock: *IO_STATUS_BLOCK,
74    IoControlCode: ULONG,
75    InputBuffer: ?*const anyopaque,
76    InputBufferLength: ULONG,
77    OutputBuffer: ?PVOID,
78    OutputBufferLength: ULONG,
79) callconv(WINAPI) NTSTATUS;
80pub extern "NtDll" fn NtFsControlFile(
81    FileHandle: HANDLE,
82    Event: ?HANDLE,
83    ApcRoutine: ?IO_APC_ROUTINE,
84    ApcContext: ?*anyopaque,
85    IoStatusBlock: *IO_STATUS_BLOCK,
86    FsControlCode: ULONG,
87    InputBuffer: ?*const anyopaque,
88    InputBufferLength: ULONG,
89    OutputBuffer: ?PVOID,
90    OutputBufferLength: ULONG,
91) callconv(WINAPI) NTSTATUS;
92pub extern "NtDll" fn NtClose(Handle: HANDLE) callconv(WINAPI) NTSTATUS;
93pub extern "NtDll" fn RtlDosPathNameToNtPathName_U(
94    DosPathName: [*:0]const u16,
95    NtPathName: *UNICODE_STRING,
96    NtFileNamePart: ?*?[*:0]const u16,
97    DirectoryInfo: ?*CURDIR,
98) callconv(WINAPI) BOOL;
99pub extern "NtDll" fn RtlFreeUnicodeString(UnicodeString: *UNICODE_STRING) callconv(WINAPI) void;
100
101pub extern "NtDll" fn NtQueryDirectoryFile(
102    FileHandle: HANDLE,
103    Event: ?HANDLE,
104    ApcRoutine: ?IO_APC_ROUTINE,
105    ApcContext: ?*anyopaque,
106    IoStatusBlock: *IO_STATUS_BLOCK,
107    FileInformation: *anyopaque,
108    Length: ULONG,
109    FileInformationClass: FILE_INFORMATION_CLASS,
110    ReturnSingleEntry: BOOLEAN,
111    FileName: ?*UNICODE_STRING,
112    RestartScan: BOOLEAN,
113) callconv(WINAPI) NTSTATUS;
114
115pub extern "NtDll" fn NtCreateKeyedEvent(
116    KeyedEventHandle: *HANDLE,
117    DesiredAccess: ACCESS_MASK,
118    ObjectAttributes: ?PVOID,
119    Flags: ULONG,
120) callconv(WINAPI) NTSTATUS;
121
122pub extern "NtDll" fn NtReleaseKeyedEvent(
123    EventHandle: ?HANDLE,
124    Key: ?*const anyopaque,
125    Alertable: BOOLEAN,
126    Timeout: ?*const LARGE_INTEGER,
127) callconv(WINAPI) NTSTATUS;
128
129pub extern "NtDll" fn NtWaitForKeyedEvent(
130    EventHandle: ?HANDLE,
131    Key: ?*const anyopaque,
132    Alertable: BOOLEAN,
133    Timeout: ?*const LARGE_INTEGER,
134) callconv(WINAPI) NTSTATUS;
135
136pub extern "NtDll" fn RtlSetCurrentDirectory_U(PathName: *UNICODE_STRING) callconv(WINAPI) NTSTATUS;
137
138pub extern "NtDll" fn NtQueryObject(
139    Handle: HANDLE,
140    ObjectInformationClass: OBJECT_INFORMATION_CLASS,
141    ObjectInformation: PVOID,
142    ObjectInformationLength: ULONG,
143    ReturnLength: ?*ULONG,
144) callconv(WINAPI) NTSTATUS;
145
146pub extern "NtDll" fn RtlWakeAddressAll(
147    Address: ?*const anyopaque,
148) callconv(WINAPI) void;
149
150pub extern "NtDll" fn RtlWakeAddressSingle(
151    Address: ?*const anyopaque,
152) callconv(WINAPI) void;
153
154pub extern "NtDll" fn RtlWaitOnAddress(
155    Address: ?*const anyopaque,
156    CompareAddress: ?*const anyopaque,
157    AddressSize: SIZE_T,
158    Timeout: ?*const LARGE_INTEGER,
159) callconv(WINAPI) NTSTATUS;
160
161pub extern "NtDll" fn NtLockFile(
162    FileHandle: HANDLE,
163    Event: ?HANDLE,
164    ApcRoutine: ?*IO_APC_ROUTINE,
165    ApcContext: ?*anyopaque,
166    IoStatusBlock: *IO_STATUS_BLOCK,
167    ByteOffset: *const LARGE_INTEGER,
168    Length: *const LARGE_INTEGER,
169    Key: ?*ULONG,
170    FailImmediately: BOOLEAN,
171    ExclusiveLock: BOOLEAN,
172) callconv(WINAPI) NTSTATUS;
173
174pub extern "NtDll" fn NtUnlockFile(
175    FileHandle: HANDLE,
176    IoStatusBlock: *IO_STATUS_BLOCK,
177    ByteOffset: *const LARGE_INTEGER,
178    Length: *const LARGE_INTEGER,
179    Key: ?*ULONG,
180) callconv(WINAPI) NTSTATUS;
181