[1166] | 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
|
---|
| 12 | extern "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
|
---|