source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/rtutils.h@ 1170

Last change on this file since 1170 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

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