comparison fuhtark_test/include/winapi/winternl.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef _WINTERNL_
7 #define _WINTERNL_
8
9 #include <windef.h>
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 typedef struct _UNICODE_STRING {
16 USHORT Length;
17 USHORT MaximumLength;
18 PWSTR Buffer;
19 } UNICODE_STRING;
20
21 typedef struct _PEB_LDR_DATA {
22 BYTE Reserved1[8];
23 PVOID Reserved2[3];
24 LIST_ENTRY InMemoryOrderModuleList;
25 } PEB_LDR_DATA,*PPEB_LDR_DATA;
26
27 typedef struct _LDR_DATA_TABLE_ENTRY {
28 BYTE Reserved1[2];
29 LIST_ENTRY InMemoryOrderLinks;
30 PVOID Reserved2[2];
31 PVOID DllBase;
32 PVOID Reserved3[2];
33 UNICODE_STRING FullDllName;
34 BYTE Reserved4[8];
35 PVOID Reserved5[3];
36 __MINGW_EXTENSION union {
37 ULONG CheckSum;
38 PVOID Reserved6;
39 };
40 ULONG TimeDateStamp;
41 } LDR_DATA_TABLE_ENTRY,*PLDR_DATA_TABLE_ENTRY;
42
43 typedef struct _RTL_USER_PROCESS_PARAMETERS {
44 BYTE Reserved1[16];
45 PVOID Reserved2[10];
46 UNICODE_STRING ImagePathName;
47 UNICODE_STRING CommandLine;
48 } RTL_USER_PROCESS_PARAMETERS,*PRTL_USER_PROCESS_PARAMETERS;
49
50 /* This function pointer is undocumented and just valid for windows 2000.
51 Therefore I guess. */
52 typedef VOID (WINAPI *PPS_POST_PROCESS_INIT_ROUTINE)(VOID);
53
54 typedef struct _PEB {
55 BYTE Reserved1[2];
56 BYTE BeingDebugged;
57 BYTE Reserved2[1];
58 PVOID Reserved3[2];
59 PPEB_LDR_DATA Ldr;
60 PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
61 BYTE Reserved4[104];
62 PVOID Reserved5[52];
63 PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
64 BYTE Reserved6[128];
65 PVOID Reserved7[1];
66 ULONG SessionId;
67 } PEB,*PPEB;
68
69 typedef struct _TEB {
70 BYTE Reserved1[1952];
71 PVOID Reserved2[412];
72 PVOID TlsSlots[64];
73 BYTE Reserved3[8];
74 PVOID Reserved4[26];
75 PVOID ReservedForOle;
76 PVOID Reserved5[4];
77 PVOID TlsExpansionSlots;
78 } TEB;
79
80 typedef TEB *PTEB;
81 typedef LONG NTSTATUS;
82 typedef CONST char *PCSZ;
83
84 typedef struct _STRING {
85 USHORT Length;
86 USHORT MaximumLength;
87 PCHAR Buffer;
88 } STRING;
89
90 typedef STRING *PSTRING;
91 typedef STRING ANSI_STRING;
92 typedef PSTRING PANSI_STRING;
93 typedef PSTRING PCANSI_STRING;
94 typedef STRING OEM_STRING;
95 typedef PSTRING POEM_STRING;
96 typedef CONST STRING *PCOEM_STRING;
97
98 typedef UNICODE_STRING *PUNICODE_STRING;
99 typedef const UNICODE_STRING *PCUNICODE_STRING;
100
101 typedef struct _OBJECT_ATTRIBUTES {
102 ULONG Length;
103 HANDLE RootDirectory;
104 PUNICODE_STRING ObjectName;
105 ULONG Attributes;
106 PVOID SecurityDescriptor;
107 PVOID SecurityQualityOfService;
108 } OBJECT_ATTRIBUTES;
109
110 typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
111
112 typedef struct _IO_STATUS_BLOCK {
113 __MINGW_EXTENSION union {
114 NTSTATUS Status;
115 PVOID Pointer;
116 };
117 ULONG_PTR Information;
118 } IO_STATUS_BLOCK,*PIO_STATUS_BLOCK;
119
120 typedef VOID (NTAPI *PIO_APC_ROUTINE)(PVOID ApcContext,PIO_STATUS_BLOCK IoStatusBlock,ULONG Reserved);
121
122 #ifdef __ia64__
123 typedef struct _FRAME_POINTERS {
124 ULONGLONG MemoryStackFp;
125 ULONGLONG BackingStoreFp;
126 } FRAME_POINTERS,*PFRAME_POINTERS;
127
128 #define UNWIND_HISTORY_TABLE_SIZE 12
129
130 typedef struct _RUNTIME_FUNCTION {
131 ULONG BeginAddress;
132 ULONG EndAddress;
133 ULONG UnwindInfoAddress;
134 } RUNTIME_FUNCTION,*PRUNTIME_FUNCTION;
135
136 typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
137 ULONG64 ImageBase;
138 ULONG64 Gp;
139 PRUNTIME_FUNCTION FunctionEntry;
140 } UNWIND_HISTORY_TABLE_ENTRY,*PUNWIND_HISTORY_TABLE_ENTRY;
141
142 typedef struct _UNWIND_HISTORY_TABLE {
143 ULONG Count;
144 UCHAR Search;
145 ULONG64 LowAddress;
146 ULONG64 HighAddress;
147 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
148 } UNWIND_HISTORY_TABLE,*PUNWIND_HISTORY_TABLE;
149 #endif
150
151 typedef struct _VM_COUNTERS {
152 SIZE_T PeakVirtualSize;
153 SIZE_T VirtualSize;
154 ULONG PageFaultCount;
155 SIZE_T PeakWorkingSetSize;
156 SIZE_T WorkingSetSize;
157 SIZE_T QuotaPeakPagedPoolUsage;
158 SIZE_T QuotaPagedPoolUsage;
159 SIZE_T QuotaPeakNonPagedPoolUsage;
160 SIZE_T QuotaNonPagedPoolUsage;
161 SIZE_T PagefileUsage;
162 SIZE_T PeakPagefileUsage;
163 } VM_COUNTERS, *PVM_COUNTERS;
164
165 typedef enum _THREAD_STATE {
166 StateInitialized = 0,
167 StateReady, StateRunning, StateStandby, StateTerminated,
168 StateWait, StateTransition,
169 StateUnknown
170 } THREAD_STATE;
171
172 typedef struct _CLIENT_ID {
173 HANDLE UniqueProcess;
174 HANDLE UniqueThread;
175 } CLIENT_ID, *PCLIENT_ID;
176
177 typedef LONG KPRIORITY;
178
179 typedef enum _KWAIT_REASON {
180 Executive = 0,
181 FreePage, PageIn, PoolAllocation, DelayExecution,
182 Suspended, UserRequest, WrExecutive, WrFreePage, WrPageIn,
183 WrPoolAllocation, WrDelayExecution, WrSuspended,
184 WrUserRequest, WrEventPair, WrQueue, WrLpcReceive,
185 WrLpcReply, WrVirtualMemory, WrPageOut, WrRendezvous,
186 Spare2, Spare3, Spare4, Spare5, Spare6, WrKernel,
187 MaximumWaitReason
188 } KWAIT_REASON;
189
190 typedef struct _SYSTEM_THREADS
191 {
192 LARGE_INTEGER KernelTime;
193 LARGE_INTEGER UserTime;
194 LARGE_INTEGER CreateTime;
195 ULONG WaitTime;
196 PVOID StartAddress;
197 CLIENT_ID ClientId;
198 KPRIORITY Priority;
199 KPRIORITY BasePriority;
200 ULONG ContextSwitchCount;
201 THREAD_STATE State;
202 KWAIT_REASON WaitReason;
203 } SYSTEM_THREADS, *PSYSTEM_THREADS;
204
205 typedef struct _PROCESS_BASIC_INFORMATION {
206 NTSTATUS ExitStatus;
207 PPEB PebBaseAddress;
208 KAFFINITY AffinityMask;
209 KPRIORITY BasePriority;
210 ULONG_PTR UniqueProcessId;
211 ULONG_PTR InheritedFromUniqueProcessId;
212 } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
213
214 typedef struct _KERNEL_USER_TIMES {
215 FILETIME CreateTime;
216 FILETIME ExitTime;
217 LARGE_INTEGER KernelTime;
218 LARGE_INTEGER UserTime;
219 } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
220
221 typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
222 LARGE_INTEGER IdleTime;
223 LARGE_INTEGER KernelTime;
224 LARGE_INTEGER UserTime;
225 LARGE_INTEGER Reserved1[2];
226 ULONG Reserved2;
227 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION,*PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
228
229 typedef struct _SYSTEM_PROCESS_INFORMATION {
230 ULONG NextEntryOffset;
231 BYTE Reserved1[52];
232 PVOID Reserved2[3];
233 HANDLE UniqueProcessId;
234 HANDLE InheritedFromUniqueProcessId;
235 ULONG HandleCount;
236 ULONG Reserved4[2];
237 VM_COUNTERS VirtualMemoryCounters;
238 SIZE_T PrivatePageCount;
239 IO_COUNTERS IoCounters;
240 } SYSTEM_PROCESS_INFORMATION,*PSYSTEM_PROCESS_INFORMATION;
241
242 typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
243 ULONG RegistryQuotaAllowed;
244 ULONG RegistryQuotaUsed;
245 PVOID Reserved1;
246 } SYSTEM_REGISTRY_QUOTA_INFORMATION,*PSYSTEM_REGISTRY_QUOTA_INFORMATION;
247
248 typedef struct _SYSTEM_BASIC_INFORMATION {
249 BYTE Reserved1[4];
250 ULONG MaximumIncrement;
251 ULONG PhysicalPageSize;
252 ULONG NumberOfPhysicalPages;
253 ULONG LowestPhysicalPage;
254 ULONG HighestPhysicalPage;
255 ULONG AllocationGranularity;
256 ULONG LowestUserAddress;
257 ULONG HighestUserAddress;
258 ULONG ActiveProcessors;
259 CCHAR NumberOfProcessors;
260 } SYSTEM_BASIC_INFORMATION,*PSYSTEM_BASIC_INFORMATION;
261
262 typedef struct _SYSTEM_PROCESSOR_INFORMATION {
263 USHORT ProcessorArchitecture;
264 USHORT ProcessorLevel;
265 USHORT ProcessorRevision;
266 USHORT Unknown;
267 ULONG FeatureBits;
268 } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
269
270 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
271 LARGE_INTEGER BootTime;
272 LARGE_INTEGER CurrentTime;
273 LARGE_INTEGER TimeZoneBias;
274 ULONG CurrentTimeZoneId;
275 BYTE Reserved1[20];
276 } SYSTEM_TIMEOFDAY_INFORMATION,*PSYSTEM_TIMEOFDAY_INFORMATION;
277
278 typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
279 LARGE_INTEGER IdleTime;
280 LARGE_INTEGER ReadTransferCount;
281 LARGE_INTEGER WriteTransferCount;
282 LARGE_INTEGER OtherTransferCount;
283 ULONG ReadOperationCount;
284 ULONG WriteOperationCount;
285 ULONG OtherOperationCount;
286 ULONG AvailablePages;
287 ULONG TotalCommittedPages;
288 ULONG TotalCommitLimit;
289 ULONG PeakCommitment;
290 ULONG PageFaults;
291 ULONG WriteCopyFaults;
292 ULONG TransitionFaults;
293 ULONG CacheTransitionFaults;
294 ULONG DemandZeroFaults;
295 ULONG PagesRead;
296 ULONG PageReadIos;
297 ULONG CacheReads;
298 ULONG CacheIos;
299 ULONG PagefilePagesWritten;
300 ULONG PagefilePageWriteIos;
301 ULONG MappedFilePagesWritten;
302 ULONG MappedFilePageWriteIos;
303 ULONG PagedPoolUsage;
304 ULONG NonPagedPoolUsage;
305 ULONG PagedPoolAllocs;
306 ULONG PagedPoolFrees;
307 ULONG NonPagedPoolAllocs;
308 ULONG NonPagedPoolFrees;
309 ULONG TotalFreeSystemPtes;
310 ULONG SystemCodePage;
311 ULONG TotalSystemDriverPages;
312 ULONG TotalSystemCodePages;
313 ULONG SmallNonPagedLookasideListAllocateHits;
314 ULONG SmallPagedLookasideListAllocateHits;
315 ULONG Reserved3;
316 ULONG MmSystemCachePage;
317 ULONG PagedPoolPage;
318 ULONG SystemDriverPage;
319 ULONG FastReadNoWait;
320 ULONG FastReadWait;
321 ULONG FastReadResourceMiss;
322 ULONG FastReadNotPossible;
323 ULONG FastMdlReadNoWait;
324 ULONG FastMdlReadWait;
325 ULONG FastMdlReadResourceMiss;
326 ULONG FastMdlReadNotPossible;
327 ULONG MapDataNoWait;
328 ULONG MapDataWait;
329 ULONG MapDataNoWaitMiss;
330 ULONG MapDataWaitMiss;
331 ULONG PinMappedDataCount;
332 ULONG PinReadNoWait;
333 ULONG PinReadWait;
334 ULONG PinReadNoWaitMiss;
335 ULONG PinReadWaitMiss;
336 ULONG CopyReadNoWait;
337 ULONG CopyReadWait;
338 ULONG CopyReadNoWaitMiss;
339 ULONG CopyReadWaitMiss;
340 ULONG MdlReadNoWait;
341 ULONG MdlReadWait;
342 ULONG MdlReadNoWaitMiss;
343 ULONG MdlReadWaitMiss;
344 ULONG ReadAheadIos;
345 ULONG LazyWriteIos;
346 ULONG LazyWritePages;
347 ULONG DataFlushes;
348 ULONG DataPages;
349 ULONG ContextSwitches;
350 ULONG FirstLevelTbFills;
351 ULONG SecondLevelTbFills;
352 ULONG SystemCalls;
353 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
354
355 typedef struct _SYSTEM_EXCEPTION_INFORMATION {
356 BYTE Reserved1[16];
357 } SYSTEM_EXCEPTION_INFORMATION,*PSYSTEM_EXCEPTION_INFORMATION;
358
359 typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
360 BYTE Reserved1[32];
361 } SYSTEM_LOOKASIDE_INFORMATION,*PSYSTEM_LOOKASIDE_INFORMATION;
362
363 typedef struct _SYSTEM_INTERRUPT_INFORMATION {
364 BYTE Reserved1[24];
365 } SYSTEM_INTERRUPT_INFORMATION,*PSYSTEM_INTERRUPT_INFORMATION;
366
367 typedef enum _FILE_INFORMATION_CLASS {
368 FileDirectoryInformation = 1
369 } FILE_INFORMATION_CLASS;
370
371 typedef enum _PROCESSINFOCLASS {
372 ProcessBasicInformation = 0,ProcessQuotaLimits = 1,ProcessIoCounters = 2,ProcessVmCounters = 3,ProcessTimes = 4,ProcessBasePriority = 5,
373 ProcessRaisePriority = 6,ProcessDebugPort = 7,ProcessExceptionPort = 8,ProcessAccessToken = 9,ProcessWow64Information = 26,ProcessImageFileName = 27
374 } PROCESSINFOCLASS;
375
376 typedef enum _THREADINFOCLASS {
377 ThreadIsIoPending = 16
378 } THREADINFOCLASS;
379
380 typedef enum _SYSTEM_INFORMATION_CLASS {
381 SystemBasicInformation = 0,SystemProcessorInformation = 1,SystemPerformanceInformation = 2,SystemTimeOfDayInformation = 3,SystemProcessInformation = 5,
382 SystemProcessorPerformanceInformation = 8,SystemInterruptInformation = 23,SystemExceptionInformation = 33,SystemRegistryQuotaInformation = 37,
383 SystemLookasideInformation = 45
384 } SYSTEM_INFORMATION_CLASS;
385
386 #define INTERNAL_TS_ACTIVE_CONSOLE_ID (*((volatile ULONG*)(0x7ffe02d8)))
387
388 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
389 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
390 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
391
392 NTSTATUS WINAPI NtClose(HANDLE Handle);
393 NTSTATUS WINAPI NtCreateFile(PHANDLE FileHandle,ACCESS_MASK DesiredAccess,POBJECT_ATTRIBUTES ObjectAttributes,PIO_STATUS_BLOCK IoStatusBlock,PLARGE_INTEGER AllocationSize,ULONG FileAttributes,ULONG ShareAccess,ULONG CreateDisposition,ULONG CreateOptions,PVOID EaBuffer,ULONG EaLength);
394 NTSTATUS WINAPI NtOpenFile(PHANDLE FileHandle,ACCESS_MASK DesiredAccess,POBJECT_ATTRIBUTES ObjectAttributes,PIO_STATUS_BLOCK IoStatusBlock,ULONG ShareAccess,ULONG OpenOptions);
395 NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE FileHandle,HANDLE Event,PIO_APC_ROUTINE ApcRoutine,PVOID ApcContext,PIO_STATUS_BLOCK IoStatusBlock,ULONG IoControlCode,PVOID InputBuffer,ULONG InputBufferLength,PVOID OutputBuffer,ULONG OutputBufferLength);
396 NTSTATUS WINAPI NtWaitForSingleObject(HANDLE Handle,BOOLEAN Alertable,PLARGE_INTEGER Timeout);
397 BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(PUNICODE_STRING Name,POEM_STRING OemName,PBOOLEAN NameContainsSpaces);
398 ULONG WINAPI RtlNtStatusToDosError (NTSTATUS Status);
399 NTSTATUS WINAPI NtQueryInformationProcess(HANDLE ProcessHandle,PROCESSINFOCLASS ProcessInformationClass,PVOID ProcessInformation,ULONG ProcessInformationLength,PULONG ReturnLength);
400 NTSTATUS WINAPI NtQueryInformationThread(HANDLE ThreadHandle,THREADINFOCLASS ThreadInformationClass,PVOID ThreadInformation,ULONG ThreadInformationLength,PULONG ReturnLength);
401 NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS SystemInformationClass,PVOID SystemInformation,ULONG SystemInformationLength,PULONG ReturnLength);
402 NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER SystemTime);
403 NTSTATUS WINAPI RtlLocalTimeToSystemTime(PLARGE_INTEGER LocalTime,PLARGE_INTEGER SystemTime);
404 BOOLEAN WINAPI RtlTimeToSecondsSince1970(PLARGE_INTEGER Time,PULONG ElapsedSeconds);
405 VOID WINAPI RtlFreeAnsiString(PANSI_STRING AnsiString);
406 VOID WINAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString);
407 VOID WINAPI RtlFreeOemString(POEM_STRING OemString);
408 VOID WINAPI RtlInitString (PSTRING DestinationString,PCSZ SourceString);
409 VOID WINAPI RtlInitAnsiString(PANSI_STRING DestinationString,PCSZ SourceString);
410 VOID WINAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString,PCWSTR SourceString);
411 NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString,PCANSI_STRING SourceString,BOOLEAN AllocateDestinationString);
412 NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString,PCUNICODE_STRING SourceString,BOOLEAN AllocateDestinationString);
413 NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING DestinationString,PCUNICODE_STRING SourceString,BOOLEAN AllocateDestinationString);
414 NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG BytesInMultiByteString,PWCH UnicodeString,ULONG BytesInUnicodeString);
415 NTSTATUS WINAPI RtlCharToInteger (PCSZ String,ULONG Base,PULONG Value);
416 NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING UnicodeString,PSID Sid,BOOLEAN AllocateDestinationString);
417 ULONG WINAPI RtlUniform(PULONG Seed);
418 VOID WINAPI RtlUnwind (PVOID TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue);
419
420 #ifdef __ia64__
421 VOID RtlUnwind2(FRAME_POINTERS TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue,PCONTEXT ContextRecord);
422 VOID RtlUnwindEx(FRAME_POINTERS TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue,PCONTEXT ContextRecord,PUNWIND_HISTORY_TABLE HistoryTable);
423 #endif
424
425 #define LOGONID_CURRENT ((ULONG)-1)
426 #define SERVERNAME_CURRENT ((HANDLE)NULL)
427
428 typedef enum _WINSTATIONINFOCLASS {
429 WinStationInformation = 8
430 } WINSTATIONINFOCLASS;
431
432 typedef struct _WINSTATIONINFORMATIONW {
433 BYTE Reserved2[70];
434 ULONG LogonId;
435 BYTE Reserved3[1140];
436 } WINSTATIONINFORMATIONW,*PWINSTATIONINFORMATIONW;
437
438 typedef BOOLEAN (WINAPI *PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG);
439
440 #ifdef __cplusplus
441 }
442 #endif
443
444 #endif
445