comparison fuhtark_test/include/winapi/rtutils.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 __ROUTING_RTUTILS_H__
7 #define __ROUTING_RTUTILS_H__
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 #define TRACE_USE_FILE 0x00000001
14 #define TRACE_USE_CONSOLE 0x00000002
15 #define TRACE_NO_SYNCH 0x00000004
16
17 #define TRACE_NO_STDINFO 0x00000001
18 #define TRACE_USE_MASK 0x00000002
19 #define TRACE_USE_MSEC 0x00000004
20 #define TRACE_USE_DATE 0x00000008
21
22 #define INVALID_TRACEID 0xFFFFFFFF
23
24 DWORD WINAPI TraceRegisterExA(LPCSTR lpszCallerName,DWORD dwFlags);
25 DWORD WINAPI TraceDeregisterA(DWORD dwTraceID);
26 DWORD WINAPI TraceDeregisterExA(DWORD dwTraceID,DWORD dwFlags);
27 DWORD WINAPI TraceGetConsoleA(DWORD dwTraceID,LPHANDLE lphConsole);
28 DWORD __cdecl TracePrintfA(DWORD dwTraceID,LPCSTR lpszFormat,...);
29 DWORD __cdecl TracePrintfExA(DWORD dwTraceID,DWORD dwFlags,LPCSTR lpszFormat,...);
30 DWORD WINAPI TraceVprintfExA(DWORD dwTraceID,DWORD dwFlags,LPCSTR lpszFormat,va_list arglist);
31 DWORD WINAPI TracePutsExA(DWORD dwTraceID,DWORD dwFlags,LPCSTR lpszString);
32 DWORD WINAPI TraceDumpExA(DWORD dwTraceID,DWORD dwFlags,LPBYTE lpbBytes,DWORD dwByteCount,DWORD dwGroupSize,WINBOOL bAddressPrefix,LPCSTR lpszPrefix);
33
34 #define TraceRegisterA(a) TraceRegisterExA(a,0)
35 #define TraceVprintfA(a,b,c) TraceVprintfExA(a,0,b,c)
36 #define TracePutsA(a,b) TracePutsExA(a,0,b)
37 #define TraceDumpA(a,b,c,d,e,f) TraceDumpExA(a,0,b,c,d,e,f)
38
39 DWORD WINAPI TraceRegisterExW(LPCWSTR lpszCallerName,DWORD dwFlags);
40 DWORD WINAPI TraceDeregisterW(DWORD dwTraceID);
41 DWORD WINAPI TraceDeregisterExW(DWORD dwTraceID,DWORD dwFlags);
42 DWORD WINAPI TraceGetConsoleW(DWORD dwTraceID,LPHANDLE lphConsole);
43 DWORD __cdecl TracePrintfW(DWORD dwTraceID,LPCWSTR lpszFormat,...);
44 DWORD __cdecl TracePrintfExW(DWORD dwTraceID,DWORD dwFlags,LPCWSTR lpszFormat,...);
45 DWORD WINAPI TraceVprintfExW(DWORD dwTraceID,DWORD dwFlags,LPCWSTR lpszFormat,va_list arglist);
46 DWORD WINAPI TracePutsExW(DWORD dwTraceID,DWORD dwFlags,LPCWSTR lpszString);
47 DWORD WINAPI TraceDumpExW(DWORD dwTraceID,DWORD dwFlags,LPBYTE lpbBytes,DWORD dwByteCount,DWORD dwGroupSize,WINBOOL bAddressPrefix,LPCWSTR lpszPrefix);
48
49 #define TraceRegisterW(a) TraceRegisterExW(a,0)
50 #define TraceVprintfW(a,b,c) TraceVprintfExW(a,0,b,c)
51 #define TracePutsW(a,b) TracePutsExW(a,0,b)
52 #define TraceDumpW(a,b,c,d,e,f) TraceDumpExW(a,0,b,c,d,e,f)
53
54 #ifdef UNICODE
55 #define TraceRegister TraceRegisterW
56 #define TraceDeregister TraceDeregisterW
57 #define TraceDeregisterEx TraceDeregisterExW
58 #define TraceGetConsole TraceGetConsoleW
59 #define TracePrintf TracePrintfW
60 #define TraceVprintf TraceVprintfW
61 #define TracePuts TracePutsW
62 #define TraceDump TraceDumpW
63 #define TraceRegisterEx TraceRegisterExW
64 #define TracePrintfEx TracePrintfExW
65 #define TraceVprintfEx TraceVprintfExW
66 #define TracePutsEx TracePutsExW
67 #define TraceDumpEx TraceDumpExW
68 #else
69 #define TraceRegister TraceRegisterA
70 #define TraceDeregister TraceDeregisterA
71 #define TraceDeregisterEx TraceDeregisterExA
72 #define TraceGetConsole TraceGetConsoleA
73 #define TracePrintf TracePrintfA
74 #define TraceVprintf TraceVprintfA
75 #define TracePuts TracePutsA
76 #define TraceDump TraceDumpA
77 #define TraceRegisterEx TraceRegisterExA
78 #define TracePrintfEx TracePrintfExA
79 #define TraceVprintfEx TraceVprintfExA
80 #define TracePutsEx TracePutsExA
81 #define TraceDumpEx TraceDumpExA
82 #endif
83
84 VOID WINAPI LogErrorA(DWORD dwMessageId,DWORD cNumberOfSubStrings,LPSTR *plpwsSubStrings,DWORD dwErrorCode);
85 VOID WINAPI LogEventA(DWORD wEventType,DWORD dwMessageId,DWORD cNumberOfSubStrings,LPSTR *plpwsSubStrings);
86 VOID LogErrorW(DWORD dwMessageId,DWORD cNumberOfSubStrings,LPWSTR *plpwsSubStrings,DWORD dwErrorCode);
87 VOID LogEventW(DWORD wEventType,DWORD dwMessageId,DWORD cNumberOfSubStrings,LPWSTR *plpwsSubStrings);
88
89 #ifdef UNICODE
90 #define LogError LogErrorW
91 #define LogEvent LogEventW
92 #else
93 #define LogError LogErrorA
94 #define LogEvent LogEventA
95 #endif
96
97 HANDLE RouterLogRegisterA(LPCSTR lpszSource);
98 VOID RouterLogDeregisterA(HANDLE hLogHandle);
99 VOID RouterLogEventA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPSTR *plpszSubStringArray,DWORD dwErrorCode);
100 VOID RouterLogEventDataA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPSTR *plpszSubStringArray,DWORD dwDataBytes,LPBYTE lpDataBytes);
101 VOID RouterLogEventStringA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPSTR *plpszSubStringArray,DWORD dwErrorCode,DWORD dwErrorIndex);
102 VOID __cdecl RouterLogEventExA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwErrorCode,DWORD dwMessageId,LPCSTR ptszFormat,...);
103 VOID RouterLogEventValistExA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwErrorCode,DWORD dwMessageId,LPCSTR ptszFormat,va_list arglist);
104 DWORD RouterGetErrorStringA(DWORD dwErrorCode,LPSTR *lplpszErrorString);
105
106 #define RouterLogErrorA(h,msg,count,array,err) RouterLogEventA(h,EVENTLOG_ERROR_TYPE,msg,count,array,err)
107 #define RouterLogWarningA(h,msg,count,array,err) RouterLogEventA(h,EVENTLOG_WARNING_TYPE,msg,count,array,err)
108 #define RouterLogInformationA(h,msg,count,array,err) RouterLogEventA(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,err)
109
110 #define RouterLogErrorDataA(h,msg,count,array,c,buf) RouterLogEventDataA(h,EVENTLOG_ERROR_TYPE,msg,count,array,c,buf)
111 #define RouterLogWarningDataA(h,msg,count,array,c,buf) RouterLogEventDataA(h,EVENTLOG_WARNING_TYPE,msg,count,array,c,buf)
112 #define RouterLogInformationDataA(h,msg,count,array,c,buf) RouterLogEventDataA(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,c,buf)
113
114 #define RouterLogErrorStringA(h,msg,count,array,err,index) RouterLogEventStringA(h,EVENTLOG_ERROR_TYPE,msg,count,array,err,index)
115 #define RouterLogWarningStringA(h,msg,count,array,err,index) RouterLogEventStringA(h,EVENTLOG_WARNING_TYPE,msg,count,array,err,index)
116 #define RouterLogInformationStringA(h,msg,count,array,err,index) RouterLogEventStringA(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,err,index)
117
118 HANDLE RouterLogRegisterW(LPCWSTR lpszSource);
119 VOID RouterLogDeregisterW(HANDLE hLogHandle);
120 VOID RouterLogEventW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPWSTR *plpszSubStringArray,DWORD dwErrorCode);
121 VOID RouterLogEventDataW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPWSTR *plpszSubStringArray,DWORD dwDataBytes,LPBYTE lpDataBytes);
122 VOID RouterLogEventStringW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPWSTR *plpszSubStringArray,DWORD dwErrorCode,DWORD dwErrorIndex);
123 VOID __cdecl RouterLogEventExW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwErrorCode,DWORD dwMessageId,LPCWSTR ptszFormat,...);
124 VOID RouterLogEventValistExW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwErrorCode,DWORD dwMessageId,LPCWSTR ptszFormat,va_list arglist);
125 DWORD RouterGetErrorStringW(DWORD dwErrorCode,LPWSTR *lplpwszErrorString);
126
127 #define RouterLogErrorW(h,msg,count,array,err) RouterLogEventW(h,EVENTLOG_ERROR_TYPE,msg,count,array,err)
128 #define RouterLogWarningW(h,msg,count,array,err) RouterLogEventW(h,EVENTLOG_WARNING_TYPE,msg,count,array,err)
129 #define RouterLogInformationW(h,msg,count,array,err) RouterLogEventW(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,err)
130
131 #define RouterLogErrorDataW(h,msg,count,array,c,buf) RouterLogEventDataW(h,EVENTLOG_ERROR_TYPE,msg,count,array,c,buf)
132 #define RouterLogWarningDataW(h,msg,count,array,c,buf) RouterLogEventDataW(h,EVENTLOG_WARNING_TYPE,msg,count,array,c,buf)
133 #define RouterLogInformationDataW(h,msg,count,array,c,buf) RouterLogEventDataW(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,c,buf)
134
135 #define RouterLogErrorStringW(h,msg,count,array,err,index) RouterLogEventStringW(h,EVENTLOG_ERROR_TYPE,msg,count,array,err,index)
136 #define RouterLogWarningStringW(h,msg,count,array,err,index) RouterLogEventStringW(h,EVENTLOG_WARNING_TYPE,msg,count,array,err,index)
137 #define RouterLogInformationStringW(h,msg,count,array,err,index) RouterLogEventStringW(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,err,index)
138
139 #ifdef UNICODE
140 #define RouterLogRegister RouterLogRegisterW
141 #define RouterLogDeregister RouterLogDeregisterW
142 #define RouterLogEvent RouterLogEventW
143 #define RouterLogError RouterLogErrorW
144 #define RouterLogWarning RouterLogWarningW
145 #define RouterLogInformation RouterLogInformationW
146 #define RouterLogEventData RouterLogEventDataW
147 #define RouterLogErrorData RouterLogErrorDataW
148 #define RouterLogWarningData RouterLogWarningDataW
149 #define RouterLogInformationData RouterLogInformationDataW
150 #define RouterLogEventString RouterLogEventStringW
151 #define RouterLogEventEx RouterLogEventExW
152 #define RouterLogEventValistEx RouterLogEventValistExW
153 #define RouterLogErrorString RouterLogErrorStringW
154 #define RouterLogWarningString RouterLogWarningStringW
155 #define RouterLogInformationString RouterLogInformationStringW
156 #define RouterGetErrorString RouterGetErrorStringW
157 #else
158 #define RouterLogRegister RouterLogRegisterA
159 #define RouterLogDeregister RouterLogDeregisterA
160 #define RouterLogEvent RouterLogEventA
161 #define RouterLogError RouterLogErrorA
162 #define RouterLogWarning RouterLogWarningA
163 #define RouterLogInformation RouterLogInformationA
164 #define RouterLogEventData RouterLogEventDataA
165 #define RouterLogErrorData RouterLogErrorDataA
166 #define RouterLogWarningData RouterLogWarningDataA
167 #define RouterLogInformationData RouterLogInformationDataA
168 #define RouterLogEventString RouterLogEventStringA
169 #define RouterLogEventEx RouterLogEventExA
170 #define RouterLogEventValistEx RouterLogEventValistExA
171 #define RouterLogErrorString RouterLogErrorStringA
172 #define RouterLogWarningString RouterLogWarningStringA
173 #define RouterLogInformationString RouterLogInformationStringA
174 #define RouterGetErrorString RouterGetErrorStringA
175 #endif
176
177 typedef VOID (WINAPI *WORKERFUNCTION)(PVOID);
178
179 DWORD WINAPI QueueWorkItem(WORKERFUNCTION functionptr,PVOID context,WINBOOL serviceinalertablethread);
180 DWORD WINAPI SetIoCompletionProc(HANDLE FileHandle,LPOVERLAPPED_COMPLETION_ROUTINE CompletionProc);
181
182 #define NUM_ALERTABLE_THREADS 2
183 #define MAX_WORKER_THREADS 10
184 #define WORK_QUEUE_TIMEOUT 1
185 #define THREAD_IDLE_TIMEOUT 10
186
187 VOID RouterAssert(PSTR pszFailedAssertion,PSTR pszFileName,DWORD dwLineNumber,PSTR pszMessage);
188
189 #define RTASSERT(exp)
190 #define RTASSERTMSG(msg,exp)
191
192 #define RTUTILS_MAX_PROTOCOL_NAME_LEN 40
193 #define RTUTILS_MAX_PROTOCOL_DLL_LEN 48
194
195 #ifndef MAX_PROTOCOL_NAME_LEN
196 #define MAX_PROTOCOL_NAME_LEN RTUTILS_MAX_PROTOCOL_NAME_LEN
197 #else
198 #undef MAX_PROTOCOL_NAME_LEN
199 #endif
200 #define MAX_PROTOCOL_DLL_LEN RTUTILS_MAX_PROTOCOL_DLL_LEN
201
202 typedef struct _MPR_PROTOCOL_0 {
203 DWORD dwProtocolId;
204 WCHAR wszProtocol[RTUTILS_MAX_PROTOCOL_NAME_LEN+1];
205 WCHAR wszDLLName[RTUTILS_MAX_PROTOCOL_DLL_LEN+1];
206 } MPR_PROTOCOL_0;
207
208 DWORD WINAPI MprSetupProtocolEnum(DWORD dwTransportId,LPBYTE *lplpBuffer,LPDWORD lpdwEntriesRead);
209 DWORD WINAPI MprSetupProtocolFree(LPVOID lpBuffer);
210
211 #define ROUTING_RESERVED
212 #define OPT1_1
213 #define OPT1_2
214 #define OPT2_1
215 #define OPT2_2
216 #define OPT3_1
217 #define OPT3_2
218
219 struct _WAIT_THREAD_ENTRY;
220 struct _WT_EVENT_ENTRY;
221
222 #define TIMER_INACTIVE 3
223 #define TIMER_ACTIVE 4
224
225 typedef struct _WT_TIMER_ENTRY {
226 LONGLONG te_Timeout;
227 WORKERFUNCTION te_Function;
228 PVOID te_Context;
229 DWORD te_ContextSz;
230 WINBOOL te_RunInServer;
231 DWORD te_Status;
232 DWORD te_ServerId;
233 struct _WAIT_THREAD_ENTRY *teP_wte;
234 LIST_ENTRY te_ServerLinks;
235 LIST_ENTRY te_Links;
236 WINBOOL te_Flag;
237 DWORD te_TimerId;
238 } WT_TIMER_ENTRY,*PWT_TIMER_ENTRY;
239
240 typedef struct _WT_WORK_ITEM {
241 WORKERFUNCTION wi_Function;
242 PVOID wi_Context;
243 DWORD wi_ContextSz;
244 WINBOOL wi_RunInServer;
245 struct _WT_EVENT_ENTRY *wiP_ee;
246 LIST_ENTRY wi_ServerLinks;
247 LIST_ENTRY wi_Links;
248 } WT_WORK_ITEM,*PWT_WORK_ITEM;
249
250 #define WT_EVENT_BINDING WT_WORK_ITEM
251 #define PWT_EVENT_BINDING PWT_WORK_ITEM
252
253 typedef struct _WT_EVENT_ENTRY {
254 HANDLE ee_Event;
255 WINBOOL ee_bManualReset;
256 WINBOOL ee_bInitialState;
257 WINBOOL ee_bDeleteEvent;
258 DWORD ee_Status;
259 WINBOOL ee_bHighPriority;
260
261 LIST_ENTRY eeL_wi;
262 WINBOOL ee_bSignalSingle;
263 WINBOOL ee_bOwnerSelf;
264 INT ee_ArrayIndex;
265 DWORD ee_ServerId;
266 struct _WAIT_THREAD_ENTRY *eeP_wte;
267 LIST_ENTRY ee_ServerLinks;
268 LIST_ENTRY ee_Links;
269 DWORD ee_RefCount;
270 WINBOOL ee_bFlag;
271 DWORD ee_EventId;
272 } WT_EVENT_ENTRY,*PWT_EVENT_ENTRY;
273
274 PWT_EVENT_ENTRY WINAPI CreateWaitEvent(HANDLE pEvent OPT1_1,LPSECURITY_ATTRIBUTES lpEventAttributes OPT1_2,WINBOOL bManualReset,WINBOOL bInitialState,LPCTSTR lpName OPT1_2,WINBOOL bHighPriority,WORKERFUNCTION pFunction OPT2_1,PVOID pContext OPT2_1,DWORD dwContextSz OPT2_1,WINBOOL bRunInServerContext OPT2_1);
275 PWT_EVENT_BINDING WINAPI CreateWaitEventBinding(PWT_EVENT_ENTRY pee,WORKERFUNCTION pFunction,PVOID pContext,DWORD dwContextSz,WINBOOL bRunInServerContext);
276 PWT_TIMER_ENTRY WINAPI CreateWaitTimer(WORKERFUNCTION pFunction,PVOID pContext,DWORD dwContextSz,WINBOOL bRunInServerContext);
277 DWORD WINAPI DeRegisterWaitEventBindingSelf(PWT_EVENT_BINDING pwiWorkItem);
278 DWORD WINAPI DeRegisterWaitEventBinding(PWT_EVENT_BINDING pwiWorkItem);
279 DWORD WINAPI DeRegisterWaitEventsTimers (PLIST_ENTRY pLEvents,PLIST_ENTRY pLTimers);
280 DWORD WINAPI DeRegisterWaitEventsTimersSelf(PLIST_ENTRY pLEvents,PLIST_ENTRY pLTimers);
281 DWORD WINAPI RegisterWaitEventBinding(PWT_EVENT_BINDING pwiWorkItem);
282 DWORD WINAPI RegisterWaitEventsTimers(PLIST_ENTRY pLEventsToAdd,PLIST_ENTRY pLTimersToAdd);
283 DWORD WINAPI UpdateWaitTimer(PWT_TIMER_ENTRY pte,LONGLONG *time);
284 VOID WINAPI WTFree (PVOID ptr);
285 VOID WINAPI WTFreeEvent(PWT_EVENT_ENTRY peeEvent);
286 VOID WINAPI WTFreeTimer(PWT_TIMER_ENTRY pteTimer);
287 VOID WINAPI DebugPrintWaitWorkerThreads (DWORD dwDebugLevel);
288
289 #define DEBUGPRINT_FILTER_NONCLIENT_EVENTS 0x2
290 #define DEBUGPRINT_FILTER_EVENTS 0x4
291 #define DEBUGPRINT_FILTER_TIMERS 0x8
292
293 #define ERROR_WAIT_THREAD_UNAVAILABLE 1
294 #define ERROR_WT_EVENT_ALREADY_DELETED 2
295 #define TIMER_HIGH(time) (((LARGE_INTEGER*)&time)->HighPart)
296 #define TIMER_LOW(time) (((LARGE_INTEGER*)&time)->LowPart)
297
298 #ifdef __cplusplus
299 }
300 #endif
301 #endif