comparison fuhtark_test/include/winapi/evntrace.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 _EVNTRACE_
7 #define _EVNTRACE_
8
9 #if defined(_WINNT_) || defined(WINNT)
10 #ifndef WMIAPI
11 #define WMIAPI DECLSPEC_IMPORT WINAPI
12 #endif
13
14 #include <guiddef.h>
15
16 DEFINE_GUID (EventTraceGuid,0x68fdd900,0x4a3e,0x11d1,0x84,0xf4,0x00,0x00,0xf8,0x04,0x64,0xe3);
17 DEFINE_GUID (SystemTraceControlGuid,0x9e814aad,0x3204,0x11d2,0x9a,0x82,0x00,0x60,0x08,0xa8,0x69,0x39);
18 DEFINE_GUID (EventTraceConfigGuid,0x01853a65,0x418f,0x4f36,0xae,0xfc,0xdc,0x0f,0x1d,0x2f,0xd2,0x35);
19 DEFINE_GUID (DefaultTraceSecurityGuid,0x0811c1af,0x7a07,0x4a06,0x82,0xed,0x86,0x94,0x55,0xcd,0xf7,0x13);
20
21 #define KERNEL_LOGGER_NAMEW L"NT Kernel Logger"
22 #define GLOBAL_LOGGER_NAMEW L"GlobalLogger"
23 #define EVENT_LOGGER_NAMEW L"Event Log"
24
25 #define KERNEL_LOGGER_NAMEA "NT Kernel Logger"
26 #define GLOBAL_LOGGER_NAMEA "GlobalLogger"
27 #define EVENT_LOGGER_NAMEA "Event Log"
28
29 #define MAX_MOF_FIELDS 16
30 typedef ULONG64 TRACEHANDLE,*PTRACEHANDLE;
31
32 #define EVENT_TRACE_TYPE_INFO 0x00
33 #define EVENT_TRACE_TYPE_START 0x01
34 #define EVENT_TRACE_TYPE_END 0x02
35 #define EVENT_TRACE_TYPE_DC_START 0x03
36 #define EVENT_TRACE_TYPE_DC_END 0x04
37 #define EVENT_TRACE_TYPE_EXTENSION 0x05
38 #define EVENT_TRACE_TYPE_REPLY 0x06
39 #define EVENT_TRACE_TYPE_DEQUEUE 0x07
40 #define EVENT_TRACE_TYPE_CHECKPOINT 0x08
41 #define EVENT_TRACE_TYPE_RESERVED9 0x09
42
43 #define TRACE_LEVEL_NONE 0
44 #define TRACE_LEVEL_FATAL 1
45 #define TRACE_LEVEL_ERROR 2
46 #define TRACE_LEVEL_WARNING 3
47 #define TRACE_LEVEL_INFORMATION 4
48 #define TRACE_LEVEL_VERBOSE 5
49 #define TRACE_LEVEL_RESERVED6 6
50 #define TRACE_LEVEL_RESERVED7 7
51 #define TRACE_LEVEL_RESERVED8 8
52 #define TRACE_LEVEL_RESERVED9 9
53
54 #define EVENT_TRACE_TYPE_LOAD 0x0A
55 #define EVENT_TRACE_TYPE_IO_READ 0x0A
56 #define EVENT_TRACE_TYPE_IO_WRITE 0x0B
57
58 #define EVENT_TRACE_TYPE_MM_TF 0x0A
59 #define EVENT_TRACE_TYPE_MM_DZF 0x0B
60 #define EVENT_TRACE_TYPE_MM_COW 0x0C
61 #define EVENT_TRACE_TYPE_MM_GPF 0x0D
62 #define EVENT_TRACE_TYPE_MM_HPF 0x0E
63
64 #define EVENT_TRACE_TYPE_SEND 0x0A
65 #define EVENT_TRACE_TYPE_RECEIVE 0x0B
66 #define EVENT_TRACE_TYPE_CONNECT 0x0C
67 #define EVENT_TRACE_TYPE_DISCONNECT 0x0D
68 #define EVENT_TRACE_TYPE_RETRANSMIT 0x0E
69 #define EVENT_TRACE_TYPE_ACCEPT 0x0F
70 #define EVENT_TRACE_TYPE_RECONNECT 0x10
71 #define EVENT_TRACE_TYPE_CONNFAIL 0x11
72 #define EVENT_TRACE_TYPE_COPY_TCP 0x12
73 #define EVENT_TRACE_TYPE_COPY_ARP 0x13
74 #define EVENT_TRACE_TYPE_ACKFULL 0x14
75 #define EVENT_TRACE_TYPE_ACKPART 0x15
76 #define EVENT_TRACE_TYPE_ACKDUP 0x16
77
78 #define EVENT_TRACE_TYPE_GUIDMAP 0x0A
79 #define EVENT_TRACE_TYPE_CONFIG 0x0B
80 #define EVENT_TRACE_TYPE_SIDINFO 0x0C
81 #define EVENT_TRACE_TYPE_SECURITY 0x0D
82
83 #define EVENT_TRACE_TYPE_REGCREATE 0x0A
84 #define EVENT_TRACE_TYPE_REGOPEN 0x0B
85 #define EVENT_TRACE_TYPE_REGDELETE 0x0C
86 #define EVENT_TRACE_TYPE_REGQUERY 0x0D
87 #define EVENT_TRACE_TYPE_REGSETVALUE 0x0E
88 #define EVENT_TRACE_TYPE_REGDELETEVALUE 0x0F
89 #define EVENT_TRACE_TYPE_REGQUERYVALUE 0x10
90 #define EVENT_TRACE_TYPE_REGENUMERATEKEY 0x11
91 #define EVENT_TRACE_TYPE_REGENUMERATEVALUEKEY 0x12
92 #define EVENT_TRACE_TYPE_REGQUERYMULTIPLEVALUE 0x13
93 #define EVENT_TRACE_TYPE_REGSETINFORMATION 0x14
94 #define EVENT_TRACE_TYPE_REGFLUSH 0x15
95 #define EVENT_TRACE_TYPE_REGKCBDMP 0x16
96
97 #define EVENT_TRACE_TYPE_CONFIG_CPU 0x0A
98 #define EVENT_TRACE_TYPE_CONFIG_PHYSICALDISK 0x0B
99 #define EVENT_TRACE_TYPE_CONFIG_LOGICALDISK 0x0C
100 #define EVENT_TRACE_TYPE_CONFIG_NIC 0x0D
101 #define EVENT_TRACE_TYPE_CONFIG_VIDEO 0x0E
102 #define EVENT_TRACE_TYPE_CONFIG_SERVICES 0x0F
103 #define EVENT_TRACE_TYPE_CONFIG_POWER 0x10
104 #define EVENT_TRACE_TYPE_CONFIG_NETINFO 0x11
105
106 #define EVENT_TRACE_FLAG_PROCESS 0x00000001
107 #define EVENT_TRACE_FLAG_THREAD 0x00000002
108 #define EVENT_TRACE_FLAG_IMAGE_LOAD 0x00000004
109
110 #define EVENT_TRACE_FLAG_DISK_IO 0x00000100
111 #define EVENT_TRACE_FLAG_DISK_FILE_IO 0x00000200
112
113 #define EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS 0x00001000
114 #define EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS 0x00002000
115
116 #define EVENT_TRACE_FLAG_NETWORK_TCPIP 0x00010000
117
118 #define EVENT_TRACE_FLAG_REGISTRY 0x00020000
119 #define EVENT_TRACE_FLAG_DBGPRINT 0x00040000
120
121 #define EVENT_TRACE_FLAG_VOLMGR 0x00200000
122
123 #define EVENT_TRACE_FLAG_EXTENSION 0x80000000
124 #define EVENT_TRACE_FLAG_FORWARD_WMI 0x40000000
125 #define EVENT_TRACE_FLAG_ENABLE_RESERVE 0x20000000
126
127 #define EVENT_TRACE_FILE_MODE_NONE 0x00000000
128 #define EVENT_TRACE_FILE_MODE_SEQUENTIAL 0x00000001
129 #define EVENT_TRACE_FILE_MODE_CIRCULAR 0x00000002
130 #define EVENT_TRACE_FILE_MODE_APPEND 0x00000004
131 #define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008
132
133 #define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020
134
135 #define EVENT_TRACE_REAL_TIME_MODE 0x00000100
136 #define EVENT_TRACE_DELAY_OPEN_FILE_MODE 0x00000200
137 #define EVENT_TRACE_BUFFERING_MODE 0x00000400
138 #define EVENT_TRACE_PRIVATE_LOGGER_MODE 0x00000800
139 #define EVENT_TRACE_ADD_HEADER_MODE 0x00001000
140 #define EVENT_TRACE_USE_GLOBAL_SEQUENCE 0x00004000
141 #define EVENT_TRACE_USE_LOCAL_SEQUENCE 0x00008000
142
143 #define EVENT_TRACE_RELOG_MODE 0x00010000
144
145 #define EVENT_TRACE_USE_PAGED_MEMORY 0x01000000
146
147 #define EVENT_TRACE_CONTROL_QUERY 0
148 #define EVENT_TRACE_CONTROL_STOP 1
149 #define EVENT_TRACE_CONTROL_UPDATE 2
150 #define EVENT_TRACE_CONTROL_FLUSH 3
151
152 #define TRACE_MESSAGE_SEQUENCE 1
153 #define TRACE_MESSAGE_GUID 2
154 #define TRACE_MESSAGE_COMPONENTID 4
155 #define TRACE_MESSAGE_TIMESTAMP 8
156 #define TRACE_MESSAGE_PERFORMANCE_TIMESTAMP 16
157 #define TRACE_MESSAGE_SYSTEMINFO 32
158 #define TRACE_MESSAGE_FLAG_MASK 0xFFFF
159
160 #define TRACE_MESSAGE_MAXIMUM_SIZE 8*1024
161
162 #define EVENT_TRACE_USE_PROCTIME 0x0001
163 #define EVENT_TRACE_USE_NOCPUTIME 0x0002
164
165 typedef struct _EVENT_TRACE_HEADER {
166 USHORT Size;
167 __MINGW_EXTENSION union {
168 USHORT FieldTypeFlags;
169 __MINGW_EXTENSION struct {
170 UCHAR HeaderType;
171 UCHAR MarkerFlags;
172 };
173 };
174 __MINGW_EXTENSION union {
175 ULONG Version;
176 struct {
177 UCHAR Type;
178 UCHAR Level;
179 USHORT Version;
180 } Class;
181 };
182 ULONG ThreadId;
183 ULONG ProcessId;
184 LARGE_INTEGER TimeStamp;
185 __MINGW_EXTENSION union {
186 GUID Guid;
187 ULONGLONG GuidPtr;
188 };
189 __MINGW_EXTENSION union {
190 __MINGW_EXTENSION struct {
191 ULONG ClientContext;
192 ULONG Flags;
193 };
194 __MINGW_EXTENSION struct {
195 ULONG KernelTime;
196 ULONG UserTime;
197 };
198 ULONG64 ProcessorTime;
199 };
200 } EVENT_TRACE_HEADER,*PEVENT_TRACE_HEADER;
201
202 typedef struct _EVENT_INSTANCE_HEADER {
203 USHORT Size;
204 __MINGW_EXTENSION union {
205 USHORT FieldTypeFlags;
206 __MINGW_EXTENSION struct {
207 UCHAR HeaderType;
208 UCHAR MarkerFlags;
209 };
210 };
211 __MINGW_EXTENSION union {
212 ULONG Version;
213 struct {
214 UCHAR Type;
215 UCHAR Level;
216 USHORT Version;
217 } Class;
218 };
219 ULONG ThreadId;
220 ULONG ProcessId;
221 LARGE_INTEGER TimeStamp;
222 ULONGLONG RegHandle;
223 ULONG InstanceId;
224 ULONG ParentInstanceId;
225 __MINGW_EXTENSION union {
226 __MINGW_EXTENSION struct {
227 ULONG ClientContext;
228 ULONG Flags;
229 };
230 __MINGW_EXTENSION struct {
231 ULONG KernelTime;
232 ULONG UserTime;
233 };
234 ULONG64 ProcessorTime;
235 };
236 ULONGLONG ParentRegHandle;
237 } EVENT_INSTANCE_HEADER,*PEVENT_INSTANCE_HEADER;
238
239 #define DEFINE_TRACE_MOF_FIELD(MOF,ptr,length,type) (MOF)->DataPtr = (ULONG64) ptr; (MOF)->Length = (ULONG) length; (MOF)->DataType = (ULONG) type;
240
241 typedef struct _MOF_FIELD {
242 ULONG64 DataPtr;
243 ULONG Length;
244 ULONG DataType;
245 } MOF_FIELD,*PMOF_FIELD;
246
247 #ifndef _NTIFS_
248
249 typedef struct _TRACE_LOGFILE_HEADER {
250 ULONG BufferSize;
251 __MINGW_EXTENSION union {
252 ULONG Version;
253 struct {
254 UCHAR MajorVersion;
255 UCHAR MinorVersion;
256 UCHAR SubVersion;
257 UCHAR SubMinorVersion;
258 } VersionDetail;
259 };
260 ULONG ProviderVersion;
261 ULONG NumberOfProcessors;
262 LARGE_INTEGER EndTime;
263 ULONG TimerResolution;
264 ULONG MaximumFileSize;
265 ULONG LogFileMode;
266 ULONG BuffersWritten;
267 __MINGW_EXTENSION union {
268 GUID LogInstanceGuid;
269 __MINGW_EXTENSION struct {
270 ULONG StartBuffers;
271 ULONG PointerSize;
272 ULONG EventsLost;
273 ULONG CpuSpeedInMHz;
274 };
275 };
276 LPWSTR LoggerName;
277 LPWSTR LogFileName;
278 TIME_ZONE_INFORMATION TimeZone;
279 LARGE_INTEGER BootTime;
280 LARGE_INTEGER PerfFreq;
281 LARGE_INTEGER StartTime;
282 ULONG ReservedFlags;
283 ULONG BuffersLost;
284 } TRACE_LOGFILE_HEADER,*PTRACE_LOGFILE_HEADER;
285 #endif
286
287 typedef struct EVENT_INSTANCE_INFO {
288 HANDLE RegHandle;
289 ULONG InstanceId;
290 } EVENT_INSTANCE_INFO,*PEVENT_INSTANCE_INFO;
291
292 #ifndef _NTIFS_
293
294 typedef struct _EVENT_TRACE_PROPERTIES {
295 WNODE_HEADER Wnode;
296 ULONG BufferSize;
297 ULONG MinimumBuffers;
298 ULONG MaximumBuffers;
299 ULONG MaximumFileSize;
300 ULONG LogFileMode;
301 ULONG FlushTimer;
302 ULONG EnableFlags;
303 LONG AgeLimit;
304 ULONG NumberOfBuffers;
305 ULONG FreeBuffers;
306 ULONG EventsLost;
307 ULONG BuffersWritten;
308 ULONG LogBuffersLost;
309 ULONG RealTimeBuffersLost;
310 HANDLE LoggerThreadId;
311 ULONG LogFileNameOffset;
312 ULONG LoggerNameOffset;
313 } EVENT_TRACE_PROPERTIES,*PEVENT_TRACE_PROPERTIES;
314
315 typedef struct _TRACE_GUID_PROPERTIES {
316 GUID Guid;
317 ULONG GuidType;
318 ULONG LoggerId;
319 ULONG EnableLevel;
320 ULONG EnableFlags;
321 BOOLEAN IsEnable;
322 } TRACE_GUID_PROPERTIES,*PTRACE_GUID_PROPERTIES;
323
324 typedef struct _TRACE_GUID_REGISTRATION {
325 LPCGUID Guid;
326 HANDLE RegHandle;
327 } TRACE_GUID_REGISTRATION,*PTRACE_GUID_REGISTRATION;
328
329 typedef struct _EVENT_TRACE {
330 EVENT_TRACE_HEADER Header;
331 ULONG InstanceId;
332 ULONG ParentInstanceId;
333 GUID ParentGuid;
334 PVOID MofData;
335 ULONG MofLength;
336 ULONG ClientContext;
337 } EVENT_TRACE,*PEVENT_TRACE;
338
339 typedef struct _EVENT_TRACE_LOGFILEW EVENT_TRACE_LOGFILEW,*PEVENT_TRACE_LOGFILEW;
340 typedef struct _EVENT_TRACE_LOGFILEA EVENT_TRACE_LOGFILEA,*PEVENT_TRACE_LOGFILEA;
341 typedef ULONG (WINAPI *PEVENT_TRACE_BUFFER_CALLBACKW)(PEVENT_TRACE_LOGFILEW Logfile);
342 typedef ULONG (WINAPI *PEVENT_TRACE_BUFFER_CALLBACKA)(PEVENT_TRACE_LOGFILEA Logfile);
343 typedef VOID (WINAPI *PEVENT_CALLBACK)(PEVENT_TRACE pEvent);
344 typedef ULONG (WINAPI *WMIDPREQUEST)(WMIDPREQUESTCODE RequestCode,PVOID RequestContext,ULONG *BufferSize,PVOID Buffer);
345
346 struct _EVENT_TRACE_LOGFILEW {
347 LPWSTR LogFileName;
348 LPWSTR LoggerName;
349 LONGLONG CurrentTime;
350 ULONG BuffersRead;
351 ULONG LogFileMode;
352
353 EVENT_TRACE CurrentEvent;
354 TRACE_LOGFILE_HEADER LogfileHeader;
355 PEVENT_TRACE_BUFFER_CALLBACKW BufferCallback;
356 ULONG BufferSize;
357 ULONG Filled;
358 ULONG EventsLost;
359 PEVENT_CALLBACK EventCallback;
360 ULONG IsKernelTrace;
361 PVOID Context;
362 };
363
364 struct _EVENT_TRACE_LOGFILEA {
365 LPSTR LogFileName;
366 LPSTR LoggerName;
367 LONGLONG CurrentTime;
368 ULONG BuffersRead;
369 ULONG LogFileMode;
370 EVENT_TRACE CurrentEvent;
371 TRACE_LOGFILE_HEADER LogfileHeader;
372 PEVENT_TRACE_BUFFER_CALLBACKA BufferCallback;
373 ULONG BufferSize;
374 ULONG Filled;
375 ULONG EventsLost;
376 PEVENT_CALLBACK EventCallback;
377 ULONG IsKernelTrace;
378 PVOID Context;
379 };
380
381 #if defined(_UNICODE) || defined(UNICODE)
382 #define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKW
383 #define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEW
384 #define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEW
385 #define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEW
386 #define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEW
387 #define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEW
388 #else
389
390 #define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKA
391 #define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEA
392 #define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEA
393 #define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEA
394 #define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEA
395 #define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEA
396 #endif
397
398 #ifdef __cplusplus
399 extern "C" {
400 #endif
401
402 EXTERN_C ULONG WMIAPI StartTraceW(PTRACEHANDLE TraceHandle,LPCWSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
403 EXTERN_C ULONG WMIAPI StartTraceA(PTRACEHANDLE TraceHandle,LPCSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
404 EXTERN_C ULONG WMIAPI StopTraceW(TRACEHANDLE TraceHandle,LPCWSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
405 EXTERN_C ULONG WMIAPI StopTraceA(TRACEHANDLE TraceHandle,LPCSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
406 EXTERN_C ULONG WMIAPI QueryTraceW(TRACEHANDLE TraceHandle,LPCWSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
407 EXTERN_C ULONG WMIAPI QueryTraceA(TRACEHANDLE TraceHandle,LPCSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
408 EXTERN_C ULONG WMIAPI UpdateTraceW(TRACEHANDLE TraceHandle,LPCWSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
409 EXTERN_C ULONG WMIAPI UpdateTraceA(TRACEHANDLE TraceHandle,LPCSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
410 EXTERN_C ULONG WMIAPI FlushTraceW(TRACEHANDLE TraceHandle,LPCWSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
411 EXTERN_C ULONG WMIAPI FlushTraceA(TRACEHANDLE TraceHandle,LPCSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties);
412 EXTERN_C ULONG WMIAPI ControlTraceW(TRACEHANDLE TraceHandle,LPCWSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties,ULONG ControlCode);
413 EXTERN_C ULONG WMIAPI ControlTraceA(TRACEHANDLE TraceHandle,LPCSTR InstanceName,PEVENT_TRACE_PROPERTIES Properties,ULONG ControlCode);
414 EXTERN_C ULONG WMIAPI QueryAllTracesW(PEVENT_TRACE_PROPERTIES *PropertyArray,ULONG PropertyArrayCount,PULONG LoggerCount);
415 EXTERN_C ULONG WMIAPI QueryAllTracesA(PEVENT_TRACE_PROPERTIES *PropertyArray,ULONG PropertyArrayCount,PULONG LoggerCount);
416 EXTERN_C ULONG WMIAPI CreateTraceInstanceId(HANDLE RegHandle,PEVENT_INSTANCE_INFO pInstInfo);
417 EXTERN_C ULONG WMIAPI EnableTrace(ULONG Enable,ULONG EnableFlag,ULONG EnableLevel,LPCGUID ControlGuid,TRACEHANDLE TraceHandle);
418 EXTERN_C ULONG WMIAPI TraceEvent(TRACEHANDLE TraceHandle,PEVENT_TRACE_HEADER EventTrace);
419 EXTERN_C ULONG WMIAPI TraceEventInstance(TRACEHANDLE TraceHandle,PEVENT_INSTANCE_HEADER EventTrace,PEVENT_INSTANCE_INFO pInstInfo,PEVENT_INSTANCE_INFO pParentInstInfo);
420 EXTERN_C ULONG WMIAPI RegisterTraceGuidsW(WMIDPREQUEST RequestAddress,PVOID RequestContext,LPCGUID ControlGuid,ULONG GuidCount,PTRACE_GUID_REGISTRATION TraceGuidReg,LPCWSTR MofImagePath,LPCWSTR MofResourceName,PTRACEHANDLE RegistrationHandle);
421 EXTERN_C ULONG WMIAPI RegisterTraceGuidsA(WMIDPREQUEST RequestAddress,PVOID RequestContext,LPCGUID ControlGuid,ULONG GuidCount,PTRACE_GUID_REGISTRATION TraceGuidReg,LPCSTR MofImagePath,LPCSTR MofResourceName,PTRACEHANDLE RegistrationHandle);
422 EXTERN_C ULONG WMIAPI EnumerateTraceGuids(PTRACE_GUID_PROPERTIES *GuidPropertiesArray,ULONG PropertyArrayCount,PULONG GuidCount);
423 EXTERN_C ULONG WMIAPI UnregisterTraceGuids(TRACEHANDLE RegistrationHandle);
424 EXTERN_C TRACEHANDLE WMIAPI GetTraceLoggerHandle(PVOID Buffer);
425 EXTERN_C UCHAR WMIAPI GetTraceEnableLevel(TRACEHANDLE TraceHandle);
426 EXTERN_C ULONG WMIAPI GetTraceEnableFlags(TRACEHANDLE TraceHandle);
427 EXTERN_C TRACEHANDLE WMIAPI OpenTraceA(PEVENT_TRACE_LOGFILEA Logfile);
428 EXTERN_C TRACEHANDLE WMIAPI OpenTraceW(PEVENT_TRACE_LOGFILEW Logfile);
429 EXTERN_C ULONG WMIAPI ProcessTrace(PTRACEHANDLE HandleArray,ULONG HandleCount,LPFILETIME StartTime,LPFILETIME EndTime);
430 EXTERN_C ULONG WMIAPI CloseTrace(TRACEHANDLE TraceHandle);
431 EXTERN_C ULONG WMIAPI SetTraceCallback(LPCGUID pGuid,PEVENT_CALLBACK EventCallback);
432 EXTERN_C ULONG WMIAPI RemoveTraceCallback (LPCGUID pGuid);
433 EXTERN_C ULONG __cdecl TraceMessage(TRACEHANDLE LoggerHandle,ULONG MessageFlags,LPGUID MessageGuid,USHORT MessageNumber,...);
434 EXTERN_C ULONG TraceMessageVa(TRACEHANDLE LoggerHandle,ULONG MessageFlags,LPGUID MessageGuid,USHORT MessageNumber,va_list MessageArgList);
435
436 #ifdef __cplusplus
437 }
438 #endif
439
440 #if defined(UNICODE) || defined(_UNICODE)
441 #define RegisterTraceGuids RegisterTraceGuidsW
442 #define StartTrace StartTraceW
443 #define ControlTrace ControlTraceW
444 #ifdef __TRACE_W2K_COMPATIBLE
445 #define StopTrace(a,b,c) ControlTraceW((a),(b),(c),EVENT_TRACE_CONTROL_STOP)
446 #define QueryTrace(a,b,c) ControlTraceW((a),(b),(c),EVENT_TRACE_CONTROL_QUERY)
447 #define UpdateTrace(a,b,c) ControlTraceW((a),(b),(c),EVENT_TRACE_CONTROL_UPDATE)
448 #else
449 #define StopTrace StopTraceW
450 #define QueryTrace QueryTraceW
451 #define UpdateTrace UpdateTraceW
452 #endif
453 #define FlushTrace FlushTraceW
454 #define QueryAllTraces QueryAllTracesW
455 #define OpenTrace OpenTraceW
456 #else
457 #define RegisterTraceGuids RegisterTraceGuidsA
458 #define StartTrace StartTraceA
459 #define ControlTrace ControlTraceA
460 #ifdef __TRACE_W2K_COMPATIBLE
461 #define StopTrace(a,b,c) ControlTraceA((a),(b),(c),EVENT_TRACE_CONTROL_STOP)
462 #define QueryTrace(a,b,c) ControlTraceA((a),(b),(c),EVENT_TRACE_CONTROL_QUERY)
463 #define UpdateTrace(a,b,c) ControlTraceA((a),(b),(c),EVENT_TRACE_CONTROL_UPDATE)
464 #else
465 #define StopTrace StopTraceA
466 #define QueryTrace QueryTraceA
467 #define UpdateTrace UpdateTraceA
468 #endif
469 #define FlushTrace FlushTraceA
470 #define QueryAllTraces QueryAllTracesA
471 #define OpenTrace OpenTraceA
472 #endif
473 #endif
474 #endif
475 #endif