1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 
6 #include <winapifamily.h>
7 
8 #ifndef _EVNTRACE_
9 #define _EVNTRACE_
10 
11 #if defined (_WINNT_) || defined (WINNT)
12 
13 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
14 
15 #if !defined (WMIAPI) && !defined (__WIDL__) && !defined (MIDL_PASS)
16 #ifdef _WMI_SOURCE_
17 #ifdef _ARM_
18 #define WMIAPI
19 #else
20 #define WMIAPI __stdcall
21 #endif
22 #else
23 #ifdef _ARM_
24 #define WMIAPI DECLSPEC_IMPORT
25 #else
26 #define WMIAPI DECLSPEC_IMPORT __stdcall
27 #endif
28 #endif
29 #endif
30 
31 #include <guiddef.h>
32 
33 #if defined (_NTDDK_) || defined (_NTIFS_) || defined (_WMIKM_)
34 #define _EVNTRACE_KERNEL_MODE
35 #endif
36 
37 #ifndef _EVNTRACE_KERNEL_MODE
38 #include <wmistr.h>
39 #endif
40 
41 DEFINE_GUID (EventTraceGuid, 0x68fdd900, 0x4a3e, 0x11d1, 0x84, 0xf4, 0x00, 0x00, 0xf8, 0x04, 0x64, 0xe3);
42 DEFINE_GUID (SystemTraceControlGuid, 0x9e814aad, 0x3204, 0x11d2, 0x9a, 0x82, 0x00, 0x60, 0x08, 0xa8, 0x69, 0x39);
43 DEFINE_GUID (EventTraceConfigGuid, 0x01853a65, 0x418f, 0x4f36, 0xae, 0xfc, 0xdc, 0x0f, 0x1d, 0x2f, 0xd2, 0x35);
44 DEFINE_GUID (DefaultTraceSecurityGuid, 0x0811c1af, 0x7a07, 0x4a06, 0x82, 0xed, 0x86, 0x94, 0x55, 0xcd, 0xf7, 0x13);
45 
46 #define KERNEL_LOGGER_NAMEW L"NT Kernel Logger"
47 #define GLOBAL_LOGGER_NAMEW L"GlobalLogger"
48 #define EVENT_LOGGER_NAMEW L"EventLog"
49 #define DIAG_LOGGER_NAMEW L"DiagLog"
50 
51 #define KERNEL_LOGGER_NAMEA "NT Kernel Logger"
52 #define GLOBAL_LOGGER_NAMEA "GlobalLogger"
53 #define EVENT_LOGGER_NAMEA "EventLog"
54 #define DIAG_LOGGER_NAMEA "DiagLog"
55 
56 #define MAX_MOF_FIELDS 16
57 
58 #ifndef _TRACEHANDLE_DEFINED
59 #define _TRACEHANDLE_DEFINED
60 typedef ULONG64 TRACEHANDLE,*PTRACEHANDLE;
61 #endif
62 
63 #define SYSTEM_EVENT_TYPE 1
64 
65 #define EVENT_TRACE_TYPE_INFO 0x00
66 #define EVENT_TRACE_TYPE_START 0x01
67 #define EVENT_TRACE_TYPE_END 0x02
68 #define EVENT_TRACE_TYPE_STOP 0x02
69 #define EVENT_TRACE_TYPE_DC_START 0x03
70 #define EVENT_TRACE_TYPE_DC_END 0x04
71 #define EVENT_TRACE_TYPE_EXTENSION 0x05
72 #define EVENT_TRACE_TYPE_REPLY 0x06
73 #define EVENT_TRACE_TYPE_DEQUEUE 0x07
74 #define EVENT_TRACE_TYPE_RESUME 0x07
75 #define EVENT_TRACE_TYPE_CHECKPOINT 0x08
76 #define EVENT_TRACE_TYPE_SUSPEND 0x08
77 #define EVENT_TRACE_TYPE_WINEVT_SEND 0x09
78 #define EVENT_TRACE_TYPE_WINEVT_RECEIVE 0xf0
79 
80 #define TRACE_LEVEL_NONE 0
81 #define TRACE_LEVEL_CRITICAL 1
82 #define TRACE_LEVEL_FATAL 1
83 #define TRACE_LEVEL_ERROR 2
84 #define TRACE_LEVEL_WARNING 3
85 #define TRACE_LEVEL_INFORMATION 4
86 #define TRACE_LEVEL_VERBOSE 5
87 #define TRACE_LEVEL_RESERVED6 6
88 #define TRACE_LEVEL_RESERVED7 7
89 #define TRACE_LEVEL_RESERVED8 8
90 #define TRACE_LEVEL_RESERVED9 9
91 
92 #define EVENT_TRACE_TYPE_LOAD 0x0a
93 
94 #define EVENT_TRACE_TYPE_IO_READ 0x0a
95 #define EVENT_TRACE_TYPE_IO_WRITE 0x0b
96 #define EVENT_TRACE_TYPE_IO_READ_INIT 0x0c
97 #define EVENT_TRACE_TYPE_IO_WRITE_INIT 0x0d
98 #define EVENT_TRACE_TYPE_IO_FLUSH 0x0e
99 #define EVENT_TRACE_TYPE_IO_FLUSH_INIT 0x0f
100 
101 #define EVENT_TRACE_TYPE_MM_TF 0x0a
102 #define EVENT_TRACE_TYPE_MM_DZF 0x0b
103 #define EVENT_TRACE_TYPE_MM_COW 0x0c
104 #define EVENT_TRACE_TYPE_MM_GPF 0x0d
105 #define EVENT_TRACE_TYPE_MM_HPF 0x0e
106 #define EVENT_TRACE_TYPE_MM_AV 0x0f
107 
108 #define EVENT_TRACE_TYPE_SEND 0x0a
109 #define EVENT_TRACE_TYPE_RECEIVE 0x0b
110 #define EVENT_TRACE_TYPE_CONNECT 0x0c
111 #define EVENT_TRACE_TYPE_DISCONNECT 0x0d
112 #define EVENT_TRACE_TYPE_RETRANSMIT 0x0e
113 #define EVENT_TRACE_TYPE_ACCEPT 0x0f
114 #define EVENT_TRACE_TYPE_RECONNECT 0x10
115 #define EVENT_TRACE_TYPE_CONNFAIL 0x11
116 #define EVENT_TRACE_TYPE_COPY_TCP 0x12
117 #define EVENT_TRACE_TYPE_COPY_ARP 0x13
118 #define EVENT_TRACE_TYPE_ACKFULL 0x14
119 #define EVENT_TRACE_TYPE_ACKPART 0x15
120 #define EVENT_TRACE_TYPE_ACKDUP 0x16
121 
122 #define EVENT_TRACE_TYPE_GUIDMAP 0x0a
123 #define EVENT_TRACE_TYPE_CONFIG 0x0b
124 #define EVENT_TRACE_TYPE_SIDINFO 0x0c
125 #define EVENT_TRACE_TYPE_SECURITY 0x0d
126 #define EVENT_TRACE_TYPE_DBGID_RSDS 0x40
127 
128 #define EVENT_TRACE_TYPE_REGCREATE 0x0a
129 #define EVENT_TRACE_TYPE_REGOPEN 0x0b
130 #define EVENT_TRACE_TYPE_REGDELETE 0x0c
131 #define EVENT_TRACE_TYPE_REGQUERY 0x0d
132 #define EVENT_TRACE_TYPE_REGSETVALUE 0x0e
133 #define EVENT_TRACE_TYPE_REGDELETEVALUE 0x0f
134 #define EVENT_TRACE_TYPE_REGQUERYVALUE 0x10
135 #define EVENT_TRACE_TYPE_REGENUMERATEKEY 0x11
136 #define EVENT_TRACE_TYPE_REGENUMERATEVALUEKEY 0x12
137 #define EVENT_TRACE_TYPE_REGQUERYMULTIPLEVALUE 0x13
138 #define EVENT_TRACE_TYPE_REGSETINFORMATION 0x14
139 #define EVENT_TRACE_TYPE_REGFLUSH 0x15
140 #define EVENT_TRACE_TYPE_REGKCBCREATE 0x16
141 #define EVENT_TRACE_TYPE_REGKCBDELETE 0x17
142 #define EVENT_TRACE_TYPE_REGKCBRUNDOWNBEGIN 0x18
143 #define EVENT_TRACE_TYPE_REGKCBRUNDOWNEND 0x19
144 #define EVENT_TRACE_TYPE_REGVIRTUALIZE 0x1a
145 #define EVENT_TRACE_TYPE_REGCLOSE 0x1b
146 #define EVENT_TRACE_TYPE_REGSETSECURITY 0x1c
147 #define EVENT_TRACE_TYPE_REGQUERYSECURITY 0x1d
148 #define EVENT_TRACE_TYPE_REGCOMMIT 0x1e
149 #define EVENT_TRACE_TYPE_REGPREPARE 0x1f
150 #define EVENT_TRACE_TYPE_REGROLLBACK 0x20
151 #define EVENT_TRACE_TYPE_REGMOUNTHIVE 0x21
152 
153 #define EVENT_TRACE_TYPE_CONFIG_CPU 0x0a
154 #define EVENT_TRACE_TYPE_CONFIG_PHYSICALDISK 0x0b
155 #define EVENT_TRACE_TYPE_CONFIG_LOGICALDISK 0x0c
156 #define EVENT_TRACE_TYPE_CONFIG_NIC 0x0d
157 #define EVENT_TRACE_TYPE_CONFIG_VIDEO 0x0e
158 #define EVENT_TRACE_TYPE_CONFIG_SERVICES 0x0f
159 #define EVENT_TRACE_TYPE_CONFIG_POWER 0x10
160 #define EVENT_TRACE_TYPE_CONFIG_NETINFO 0x11
161 #define EVENT_TRACE_TYPE_CONFIG_OPTICALMEDIA 0x12
162 
163 #define EVENT_TRACE_TYPE_CONFIG_IRQ 0x15
164 #define EVENT_TRACE_TYPE_CONFIG_PNP 0x16
165 #define EVENT_TRACE_TYPE_CONFIG_IDECHANNEL 0x17
166 #define EVENT_TRACE_TYPE_CONFIG_NUMANODE 0x18
167 #define EVENT_TRACE_TYPE_CONFIG_PLATFORM 0x19
168 #define EVENT_TRACE_TYPE_CONFIG_PROCESSORGROUP 0x1a
169 #define EVENT_TRACE_TYPE_CONFIG_PROCESSORNUMBER 0x1b
170 #define EVENT_TRACE_TYPE_CONFIG_DPI 0x1c
171 
172 #define EVENT_TRACE_TYPE_OPTICAL_IO_READ 0x37
173 #define EVENT_TRACE_TYPE_OPTICAL_IO_WRITE 0x38
174 #define EVENT_TRACE_TYPE_OPTICAL_IO_FLUSH 0x39
175 #define EVENT_TRACE_TYPE_OPTICAL_IO_READ_INIT 0x3a
176 #define EVENT_TRACE_TYPE_OPTICAL_IO_WRITE_INIT 0x3b
177 #define EVENT_TRACE_TYPE_OPTICAL_IO_FLUSH_INIT 0x3c
178 
179 #define EVENT_TRACE_TYPE_FLT_PREOP_INIT 0x60
180 #define EVENT_TRACE_TYPE_FLT_POSTOP_INIT 0x61
181 #define EVENT_TRACE_TYPE_FLT_PREOP_COMPLETION 0x62
182 #define EVENT_TRACE_TYPE_FLT_POSTOP_COMPLETION 0x63
183 #define EVENT_TRACE_TYPE_FLT_PREOP_FAILURE 0x64
184 #define EVENT_TRACE_TYPE_FLT_POSTOP_FAILURE 0x65
185 
186 #define EVENT_TRACE_FLAG_PROCESS 0x00000001
187 #define EVENT_TRACE_FLAG_THREAD 0x00000002
188 #define EVENT_TRACE_FLAG_IMAGE_LOAD 0x00000004
189 
190 #define EVENT_TRACE_FLAG_DISK_IO 0x00000100
191 #define EVENT_TRACE_FLAG_DISK_FILE_IO 0x00000200
192 
193 #define EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS 0x00001000
194 #define EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS 0x00002000
195 
196 #define EVENT_TRACE_FLAG_NETWORK_TCPIP 0x00010000
197 
198 #define EVENT_TRACE_FLAG_REGISTRY 0x00020000
199 #define EVENT_TRACE_FLAG_DBGPRINT 0x00040000
200 
201 #define EVENT_TRACE_FLAG_PROCESS_COUNTERS 0x00000008
202 #define EVENT_TRACE_FLAG_CSWITCH 0x00000010
203 #define EVENT_TRACE_FLAG_DPC 0x00000020
204 #define EVENT_TRACE_FLAG_INTERRUPT 0x00000040
205 #define EVENT_TRACE_FLAG_SYSTEMCALL 0x00000080
206 
207 #define EVENT_TRACE_FLAG_DISK_IO_INIT 0x00000400
208 #define EVENT_TRACE_FLAG_ALPC 0x00100000
209 #define EVENT_TRACE_FLAG_SPLIT_IO 0x00200000
210 
211 #define EVENT_TRACE_FLAG_DRIVER 0x00800000
212 #define EVENT_TRACE_FLAG_PROFILE 0x01000000
213 #define EVENT_TRACE_FLAG_FILE_IO 0x02000000
214 #define EVENT_TRACE_FLAG_FILE_IO_INIT 0x04000000
215 
216 #define EVENT_TRACE_FLAG_DISPATCHER 0x00000800
217 #define EVENT_TRACE_FLAG_VIRTUAL_ALLOC 0x00004000
218 
219 #define EVENT_TRACE_FLAG_VAMAP 0x00008000
220 #define EVENT_TRACE_FLAG_NO_SYSCONFIG 0x10000000
221 
222 #define EVENT_TRACE_FLAG_EXTENSION 0x80000000
223 #define EVENT_TRACE_FLAG_FORWARD_WMI 0x40000000
224 #define EVENT_TRACE_FLAG_ENABLE_RESERVE 0x20000000
225 
226 #define EVENT_TRACE_FILE_MODE_NONE 0x00000000
227 #define EVENT_TRACE_FILE_MODE_SEQUENTIAL 0x00000001
228 #define EVENT_TRACE_FILE_MODE_CIRCULAR 0x00000002
229 #define EVENT_TRACE_FILE_MODE_APPEND 0x00000004
230 
231 #define EVENT_TRACE_REAL_TIME_MODE 0x00000100
232 #define EVENT_TRACE_DELAY_OPEN_FILE_MODE 0x00000200
233 #define EVENT_TRACE_BUFFERING_MODE 0x00000400
234 #define EVENT_TRACE_PRIVATE_LOGGER_MODE 0x00000800
235 #define EVENT_TRACE_ADD_HEADER_MODE 0x00001000
236 
237 #define EVENT_TRACE_USE_GLOBAL_SEQUENCE 0x00004000
238 #define EVENT_TRACE_USE_LOCAL_SEQUENCE 0x00008000
239 
240 #define EVENT_TRACE_RELOG_MODE 0x00010000
241 
242 #define EVENT_TRACE_USE_PAGED_MEMORY 0x01000000
243 
244 #define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008
245 #define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020
246 
247 #define EVENT_TRACE_NONSTOPPABLE_MODE 0x00000040
248 #define EVENT_TRACE_SECURE_MODE 0x00000080
249 #define EVENT_TRACE_USE_KBYTES_FOR_SIZE 0x00002000
250 #define EVENT_TRACE_PRIVATE_IN_PROC 0x00020000
251 #define EVENT_TRACE_MODE_RESERVED 0x00100000
252 
253 #define EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 0x10000000
254 
255 #define EVENT_TRACE_SYSTEM_LOGGER_MODE 0x02000000
256 #define EVENT_TRACE_ADDTO_TRIAGE_DUMP 0x80000000
257 #define EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN 0x00400000
258 #define EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN 0x00800000
259 
260 #define EVENT_TRACE_CONTROL_QUERY 0
261 #define EVENT_TRACE_CONTROL_STOP 1
262 #define EVENT_TRACE_CONTROL_UPDATE 2
263 #define EVENT_TRACE_CONTROL_FLUSH 3
264 
265 #define TRACE_MESSAGE_SEQUENCE 1
266 #define TRACE_MESSAGE_GUID 2
267 #define TRACE_MESSAGE_COMPONENTID 4
268 #define TRACE_MESSAGE_TIMESTAMP 8
269 #define TRACE_MESSAGE_PERFORMANCE_TIMESTAMP 16
270 #define TRACE_MESSAGE_SYSTEMINFO 32
271 
272 #define TRACE_MESSAGE_POINTER32 0x0040
273 #define TRACE_MESSAGE_POINTER64 0x0080
274 
275 #define TRACE_MESSAGE_FLAG_MASK 0xffff
276 
277 #define TRACE_MESSAGE_MAXIMUM_SIZE (64 * 1024)
278 
279 #define EVENT_TRACE_USE_PROCTIME 0x0001
280 #define EVENT_TRACE_USE_NOCPUTIME 0x0002
281 
282 #define TRACE_HEADER_FLAG_USE_TIMESTAMP 0x00000200
283 #define TRACE_HEADER_FLAG_TRACED_GUID 0x00020000
284 #define TRACE_HEADER_FLAG_LOG_WNODE 0x00040000
285 #define TRACE_HEADER_FLAG_USE_GUID_PTR 0x00080000
286 #define TRACE_HEADER_FLAG_USE_MOF_PTR 0x00100000
287 
288 typedef struct _EVENT_TRACE_HEADER {
289   USHORT Size;
290   __C89_NAMELESS union {
291     USHORT FieldTypeFlags;
292     __C89_NAMELESS struct {
293       UCHAR HeaderType;
294       UCHAR MarkerFlags;
295     } DUMMYSTRUCTNAME;
296   } DUMMYUNIONNAME;
297   __C89_NAMELESS union {
298     ULONG Version;
299     struct {
300       UCHAR Type;
301       UCHAR Level;
302       USHORT Version;
303     } Class;
304   } DUMMYUNIONNAME2;
305   ULONG ThreadId;
306   ULONG ProcessId;
307   LARGE_INTEGER TimeStamp;
308   __C89_NAMELESS union {
309     GUID Guid;
310     ULONGLONG GuidPtr;
311   } DUMMYUNIONNAME3;
312   __C89_NAMELESS union {
313     __C89_NAMELESS struct {
314       ULONG KernelTime;
315       ULONG UserTime;
316     } DUMMYSTRUCTNAME;
317     ULONG64 ProcessorTime;
318     __C89_NAMELESS struct {
319       ULONG ClientContext;
320       ULONG Flags;
321     } DUMMYSTRUCTNAME2;
322   } DUMMYUNIONNAME4;
323 } EVENT_TRACE_HEADER,*PEVENT_TRACE_HEADER;
324 
325 typedef struct _EVENT_INSTANCE_HEADER {
326   USHORT Size;
327   __C89_NAMELESS union {
328     USHORT FieldTypeFlags;
329     __C89_NAMELESS struct {
330       UCHAR HeaderType;
331       UCHAR MarkerFlags;
332     } DUMMYSTRUCTNAME;
333   } DUMMYUNIONNAME;
334   __C89_NAMELESS union {
335     ULONG Version;
336     struct {
337       UCHAR Type;
338       UCHAR Level;
339       USHORT Version;
340     } Class;
341   } DUMMYUNIONNAME2;
342   ULONG ThreadId;
343   ULONG ProcessId;
344   LARGE_INTEGER TimeStamp;
345   ULONGLONG RegHandle;
346   ULONG InstanceId;
347   ULONG ParentInstanceId;
348   __C89_NAMELESS union {
349     __C89_NAMELESS struct {
350       ULONG KernelTime;
351       ULONG UserTime;
352     } DUMMYSTRUCTNAME;
353     ULONG64 ProcessorTime;
354     __C89_NAMELESS struct {
355       ULONG EventId;
356       ULONG Flags;
357     } DUMMYSTRUCTNAME2;
358   } DUMMYUNIONNAME3;
359   ULONGLONG ParentRegHandle;
360 } EVENT_INSTANCE_HEADER,*PEVENT_INSTANCE_HEADER;
361 
362 #define ETW_NULL_TYPE_VALUE 0
363 #define ETW_OBJECT_TYPE_VALUE 1
364 #define ETW_STRING_TYPE_VALUE 2
365 #define ETW_SBYTE_TYPE_VALUE 3
366 #define ETW_BYTE_TYPE_VALUE 4
367 #define ETW_INT16_TYPE_VALUE 5
368 #define ETW_UINT16_TYPE_VALUE 6
369 #define ETW_INT32_TYPE_VALUE 7
370 #define ETW_UINT32_TYPE_VALUE 8
371 #define ETW_INT64_TYPE_VALUE 9
372 #define ETW_UINT64_TYPE_VALUE 10
373 #define ETW_CHAR_TYPE_VALUE 11
374 #define ETW_SINGLE_TYPE_VALUE 12
375 #define ETW_DOUBLE_TYPE_VALUE 13
376 #define ETW_BOOLEAN_TYPE_VALUE 14
377 #define ETW_DECIMAL_TYPE_VALUE 15
378 
379 #define ETW_GUID_TYPE_VALUE 101
380 #define ETW_ASCIICHAR_TYPE_VALUE 102
381 #define ETW_ASCIISTRING_TYPE_VALUE 103
382 #define ETW_COUNTED_STRING_TYPE_VALUE 104
383 #define ETW_POINTER_TYPE_VALUE 105
384 #define ETW_SIZET_TYPE_VALUE 106
385 #define ETW_HIDDEN_TYPE_VALUE 107
386 #define ETW_BOOL_TYPE_VALUE 108
387 #define ETW_COUNTED_ANSISTRING_TYPE_VALUE 109
388 #define ETW_REVERSED_COUNTED_STRING_TYPE_VALUE 110
389 #define ETW_REVERSED_COUNTED_ANSISTRING_TYPE_VALUE 111
390 #define ETW_NON_NULL_TERMINATED_STRING_TYPE_VALUE 112
391 #define ETW_REDUCED_ANSISTRING_TYPE_VALUE 113
392 #define ETW_REDUCED_STRING_TYPE_VALUE 114
393 #define ETW_SID_TYPE_VALUE 115
394 #define ETW_VARIANT_TYPE_VALUE 116
395 #define ETW_PTVECTOR_TYPE_VALUE 117
396 #define ETW_WMITIME_TYPE_VALUE 118
397 #define ETW_DATETIME_TYPE_VALUE 119
398 #define ETW_REFRENCE_TYPE_VALUE 120
399 
400 #define DEFINE_TRACE_MOF_FIELD(M, P, LEN, TYP) (M)->DataPtr = (ULONG64) (ULONG_PTR) P; (M)->Length = (ULONG) LEN; (M)->DataType = (ULONG) TYP;
401 
402 typedef struct _MOF_FIELD {
403   ULONG64 DataPtr;
404   ULONG Length;
405   ULONG DataType;
406 } MOF_FIELD,*PMOF_FIELD;
407 
408 #if !defined (_EVNTRACE_KERNEL_MODE) || defined (_WMIKM_)
409 typedef struct _TRACE_LOGFILE_HEADER {
410   ULONG BufferSize;
411   __C89_NAMELESS union {
412     ULONG Version;
413     struct {
414       UCHAR MajorVersion;
415       UCHAR MinorVersion;
416       UCHAR SubVersion;
417       UCHAR SubMinorVersion;
418     } VersionDetail;
419   } DUMMYUNIONNAME;
420   ULONG ProviderVersion;
421   ULONG NumberOfProcessors;
422   LARGE_INTEGER EndTime;
423   ULONG TimerResolution;
424   ULONG MaximumFileSize;
425   ULONG LogFileMode;
426   ULONG BuffersWritten;
427   __C89_NAMELESS union {
428     GUID LogInstanceGuid;
429     __C89_NAMELESS struct {
430       ULONG StartBuffers;
431       ULONG PointerSize;
432       ULONG EventsLost;
433       ULONG CpuSpeedInMHz;
434     } DUMMYSTRUCTNAME;
435   } DUMMYUNIONNAME2;
436 #if defined (_WMIKM_)
437   PWCHAR LoggerName;
438   PWCHAR LogFileName;
439   RTL_TIME_ZONE_INFORMATION TimeZone;
440 #else
441   LPWSTR LoggerName;
442   LPWSTR LogFileName;
443   TIME_ZONE_INFORMATION TimeZone;
444 #endif
445   LARGE_INTEGER BootTime;
446   LARGE_INTEGER PerfFreq;
447   LARGE_INTEGER StartTime;
448   ULONG ReservedFlags;
449   ULONG BuffersLost;
450 } TRACE_LOGFILE_HEADER,*PTRACE_LOGFILE_HEADER;
451 
452 typedef struct _TRACE_LOGFILE_HEADER32 {
453   ULONG BufferSize;
454   __C89_NAMELESS union {
455     ULONG Version;
456     struct {
457       UCHAR MajorVersion;
458       UCHAR MinorVersion;
459       UCHAR SubVersion;
460       UCHAR SubMinorVersion;
461     } VersionDetail;
462   };
463   ULONG ProviderVersion;
464   ULONG NumberOfProcessors;
465   LARGE_INTEGER EndTime;
466   ULONG TimerResolution;
467   ULONG MaximumFileSize;
468   ULONG LogFileMode;
469   ULONG BuffersWritten;
470   __C89_NAMELESS union {
471     GUID LogInstanceGuid;
472     __C89_NAMELESS struct {
473       ULONG StartBuffers;
474       ULONG PointerSize;
475       ULONG EventsLost;
476       ULONG CpuSpeedInMHz;
477     };
478   };
479   ULONG32 LoggerName;
480   ULONG32 LogFileName;
481 #if defined (_WMIKM_)
482   RTL_TIME_ZONE_INFORMATION TimeZone;
483 #else
484   TIME_ZONE_INFORMATION TimeZone;
485 #endif
486   LARGE_INTEGER BootTime;
487   LARGE_INTEGER PerfFreq;
488   LARGE_INTEGER StartTime;
489   ULONG ReservedFlags;
490   ULONG BuffersLost;
491 } TRACE_LOGFILE_HEADER32,*PTRACE_LOGFILE_HEADER32;
492 
493 typedef struct _TRACE_LOGFILE_HEADER64 {
494   ULONG BufferSize;
495   __C89_NAMELESS union {
496     ULONG Version;
497     __C89_NAMELESS struct {
498       UCHAR MajorVersion;
499       UCHAR MinorVersion;
500       UCHAR SubVersion;
501       UCHAR SubMinorVersion;
502     } VersionDetail;
503   };
504   ULONG ProviderVersion;
505   ULONG NumberOfProcessors;
506   LARGE_INTEGER EndTime;
507   ULONG TimerResolution;
508   ULONG MaximumFileSize;
509   ULONG LogFileMode;
510   ULONG BuffersWritten;
511   __C89_NAMELESS union {
512     GUID LogInstanceGuid;
513     __C89_NAMELESS struct {
514       ULONG StartBuffers;
515       ULONG PointerSize;
516       ULONG EventsLost;
517       ULONG CpuSpeedInMHz;
518     };
519   };
520   ULONG64 LoggerName;
521   ULONG64 LogFileName;
522 #if defined (_WMIKM_)
523   RTL_TIME_ZONE_INFORMATION TimeZone;
524 #else
525   TIME_ZONE_INFORMATION TimeZone;
526 #endif
527   LARGE_INTEGER BootTime;
528   LARGE_INTEGER PerfFreq;
529   LARGE_INTEGER StartTime;
530   ULONG ReservedFlags;
531   ULONG BuffersLost;
532 } TRACE_LOGFILE_HEADER64,*PTRACE_LOGFILE_HEADER64;
533 #endif
534 
535 typedef struct EVENT_INSTANCE_INFO {
536   HANDLE RegHandle;
537   ULONG InstanceId;
538 } EVENT_INSTANCE_INFO,*PEVENT_INSTANCE_INFO;
539 
540 #ifndef _EVNTRACE_KERNEL_MODE
541 typedef struct _EVENT_TRACE_PROPERTIES {
542   WNODE_HEADER Wnode;
543   ULONG BufferSize;
544   ULONG MinimumBuffers;
545   ULONG MaximumBuffers;
546   ULONG MaximumFileSize;
547   ULONG LogFileMode;
548   ULONG FlushTimer;
549   ULONG EnableFlags;
550   LONG AgeLimit;
551   ULONG NumberOfBuffers;
552   ULONG FreeBuffers;
553   ULONG EventsLost;
554   ULONG BuffersWritten;
555   ULONG LogBuffersLost;
556   ULONG RealTimeBuffersLost;
557   HANDLE LoggerThreadId;
558   ULONG LogFileNameOffset;
559   ULONG LoggerNameOffset;
560 } EVENT_TRACE_PROPERTIES,*PEVENT_TRACE_PROPERTIES;
561 
562 typedef struct _TRACE_GUID_REGISTRATION {
563   LPCGUID Guid;
564   HANDLE RegHandle;
565 } TRACE_GUID_REGISTRATION,*PTRACE_GUID_REGISTRATION;
566 #endif
567 
568 typedef struct _TRACE_GUID_PROPERTIES {
569   GUID Guid;
570   ULONG GuidType;
571   ULONG LoggerId;
572   ULONG EnableLevel;
573   ULONG EnableFlags;
574   BOOLEAN IsEnable;
575 } TRACE_GUID_PROPERTIES,*PTRACE_GUID_PROPERTIES;
576 
577 #ifndef ETW_BUFFER_CONTEXT_DEF
578 #define ETW_BUFFER_CONTEXT_DEF
579 
580 typedef struct _ETW_BUFFER_CONTEXT {
581   __C89_NAMELESS union {
582     __C89_NAMELESS struct {
583       UCHAR ProcessorNumber;
584       UCHAR Alignment;
585     } DUMMYSTRUCTNAME;
586     USHORT ProcessorIndex;
587   } DUMMYUNIONNAME;
588   USHORT LoggerId;
589 } ETW_BUFFER_CONTEXT,*PETW_BUFFER_CONTEXT;
590 #endif
591 
592 #define TRACE_PROVIDER_FLAG_LEGACY (0x00000001)
593 #define TRACE_PROVIDER_FLAG_PRE_ENABLE (0x00000002)
594 
595 typedef struct _TRACE_ENABLE_INFO {
596   ULONG IsEnabled;
597   UCHAR Level;
598   UCHAR Reserved1;
599   USHORT LoggerId;
600   ULONG EnableProperty;
601   ULONG Reserved2;
602   ULONGLONG MatchAnyKeyword;
603   ULONGLONG MatchAllKeyword;
604 } TRACE_ENABLE_INFO,*PTRACE_ENABLE_INFO;
605 
606 typedef struct _TRACE_PROVIDER_INSTANCE_INFO {
607   ULONG NextOffset;
608   ULONG EnableCount;
609   ULONG Pid;
610   ULONG Flags;
611 } TRACE_PROVIDER_INSTANCE_INFO,*PTRACE_PROVIDER_INSTANCE_INFO;
612 
613 typedef struct _TRACE_GUID_INFO {
614   ULONG InstanceCount;
615   ULONG Reserved;
616 } TRACE_GUID_INFO,*PTRACE_GUID_INFO;
617 
618 typedef struct _PROFILE_SOURCE_INFO {
619   ULONG NextEntryOffset;
620   ULONG Source;
621   ULONG MinInterval;
622   ULONG MaxInterval;
623   ULONG64 Reserved;
624   WCHAR Description[ANYSIZE_ARRAY];
625 } PROFILE_SOURCE_INFO,*PPROFILE_SOURCE_INFO;
626 
627 typedef struct _EVENT_TRACE {
628   EVENT_TRACE_HEADER Header;
629   ULONG InstanceId;
630   ULONG ParentInstanceId;
631   GUID ParentGuid;
632   PVOID MofData;
633   ULONG MofLength;
634   __C89_NAMELESS union {
635     ULONG ClientContext;
636     ETW_BUFFER_CONTEXT BufferContext;
637   } DUMMYUNIONNAME;
638 } EVENT_TRACE,*PEVENT_TRACE;
639 
640 #define EVENT_CONTROL_CODE_DISABLE_PROVIDER 0
641 #define EVENT_CONTROL_CODE_ENABLE_PROVIDER 1
642 #define EVENT_CONTROL_CODE_CAPTURE_STATE 2
643 #endif
644 
645 #ifndef _EVNTRACE_KERNEL_MODE
646 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
647 typedef struct _EVENT_RECORD EVENT_RECORD,*PEVENT_RECORD;
648 typedef struct _EVENT_TRACE_LOGFILEW EVENT_TRACE_LOGFILEW,*PEVENT_TRACE_LOGFILEW;
649 typedef struct _EVENT_TRACE_LOGFILEA EVENT_TRACE_LOGFILEA,*PEVENT_TRACE_LOGFILEA;
650 typedef ULONG (WINAPI *PEVENT_TRACE_BUFFER_CALLBACKW) (PEVENT_TRACE_LOGFILEW Logfile);
651 typedef ULONG (WINAPI *PEVENT_TRACE_BUFFER_CALLBACKA) (PEVENT_TRACE_LOGFILEA Logfile);
652 typedef VOID (WINAPI *PEVENT_CALLBACK) (PEVENT_TRACE pEvent);
653 typedef VOID (WINAPI *PEVENT_RECORD_CALLBACK) (PEVENT_RECORD EventRecord);
654 typedef ULONG (WINAPI *WMIDPREQUEST) (WMIDPREQUESTCODE RequestCode, PVOID RequestContext, ULONG *BufferSize, PVOID Buffer);
655 
656 struct _EVENT_TRACE_LOGFILEW {
657   LPWSTR LogFileName;
658   LPWSTR LoggerName;
659   LONGLONG CurrentTime;
660   ULONG BuffersRead;
661   __C89_NAMELESS union {
662     ULONG LogFileMode;
663     ULONG ProcessTraceMode;
664   } DUMMYUNIONNAME;
665   EVENT_TRACE CurrentEvent;
666   TRACE_LOGFILE_HEADER LogfileHeader;
667   PEVENT_TRACE_BUFFER_CALLBACKW BufferCallback;
668   ULONG BufferSize;
669   ULONG Filled;
670   ULONG EventsLost;
671   __C89_NAMELESS union {
672     PEVENT_CALLBACK EventCallback;
673     PEVENT_RECORD_CALLBACK EventRecordCallback;
674   } DUMMYUNIONNAME2;
675   ULONG IsKernelTrace;
676   PVOID Context;
677 };
678 
679 struct _EVENT_TRACE_LOGFILEA {
680   LPSTR LogFileName;
681   LPSTR LoggerName;
682   LONGLONG CurrentTime;
683   ULONG BuffersRead;
684   __C89_NAMELESS union {
685     ULONG LogFileMode;
686     ULONG ProcessTraceMode;
687   } DUMMYUNIONNAME;
688   EVENT_TRACE CurrentEvent;
689   TRACE_LOGFILE_HEADER LogfileHeader;
690   PEVENT_TRACE_BUFFER_CALLBACKA BufferCallback;
691   ULONG BufferSize;
692   ULONG Filled;
693   ULONG EventsLost;
694   __C89_NAMELESS union {
695     PEVENT_CALLBACK EventCallback;
696     PEVENT_RECORD_CALLBACK EventRecordCallback;
697   } DUMMYUNIONNAME2;
698   ULONG IsKernelTrace;
699   PVOID Context;
700 };
701 
702 #if defined (_UNICODE) || defined (UNICODE)
703 #define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKW
704 #define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEW
705 #define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEW
706 #define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEW
707 #define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEW
708 #define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEW
709 #else
710 #define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKA
711 #define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEA
712 #define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEA
713 #define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEA
714 #define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEA
715 #define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEA
716 #endif
717 #endif
718 
719 #ifdef __cplusplus
720 extern "C" {
721 #endif
722 
723 #define ENABLE_TRACE_PARAMETERS_VERSION 1
724 
725   typedef enum _TRACE_QUERY_INFO_CLASS {
726     TraceGuidQueryList,
727     TraceGuidQueryInfo,
728     TraceGuidQueryProcess,
729     TraceStackTracingInfo,
730     TraceSystemTraceEnableFlagsInfo,
731     TraceSampledProfileIntervalInfo,
732     TraceProfileSourceConfigInfo,
733     TraceProfileSourceListInfo,
734     TracePmcEventListInfo,
735     TracePmcCounterListInfo,
736     MaxTraceSetInfoClass
737   } TRACE_QUERY_INFO_CLASS, TRACE_INFO_CLASS;
738 
739   typedef struct _EVENT_FILTER_DESCRIPTOR EVENT_FILTER_DESCRIPTOR,*PEVENT_FILTER_DESCRIPTOR;
740 
741   typedef struct _ENABLE_TRACE_PARAMETERS {
742     ULONG Version;
743     ULONG EnableProperty;
744     ULONG ControlFlags;
745     GUID SourceId;
746     PEVENT_FILTER_DESCRIPTOR EnableFilterDesc;
747   } ENABLE_TRACE_PARAMETERS,*PENABLE_TRACE_PARAMETERS;
748 
749   /*To enable the read event type for disk IO events, set GUID to 3d6fa8d4-fe05-11d0-9dda-00c04fd7ba7c and Type to 10.*/
750   typedef struct _CLASSIC_EVENT_ID {
751     GUID EventGuid;
752     UCHAR Type;
753     UCHAR Reserved[7];
754   } CLASSIC_EVENT_ID,*PCLASSIC_EVENT_ID;
755 
756   typedef struct _TRACE_PROFILE_INTERVAL {
757     ULONG Source;
758     ULONG Interval;
759   } TRACE_PROFILE_INTERVAL,*PTRACE_PROFILE_INTERVAL;
760 
761 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
762   EXTERN_C ULONG WMIAPI StartTraceA (PTRACEHANDLE TraceHandle, LPCSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
763   EXTERN_C ULONG WMIAPI StopTraceA (TRACEHANDLE TraceHandle, LPCSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
764   EXTERN_C ULONG WMIAPI QueryTraceA (TRACEHANDLE TraceHandle, LPCSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
765   EXTERN_C ULONG WMIAPI UpdateTraceW (TRACEHANDLE TraceHandle, LPCWSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
766   EXTERN_C ULONG WMIAPI UpdateTraceA (TRACEHANDLE TraceHandle, LPCSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
767   EXTERN_C ULONG WMIAPI FlushTraceA (TRACEHANDLE TraceHandle, LPCSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
768   EXTERN_C ULONG WMIAPI ControlTraceA (TRACEHANDLE TraceHandle, LPCSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties, ULONG ControlCode);
769   EXTERN_C ULONG WMIAPI QueryAllTracesW (PEVENT_TRACE_PROPERTIES *PropertyArray, ULONG PropertyArrayCount, PULONG LoggerCount);
770   EXTERN_C ULONG WMIAPI QueryAllTracesA (PEVENT_TRACE_PROPERTIES *PropertyArray, ULONG PropertyArrayCount, PULONG LoggerCount);
771   EXTERN_C ULONG WMIAPI CreateTraceInstanceId (HANDLE RegHandle, PEVENT_INSTANCE_INFO InstInfo);
772   EXTERN_C ULONG WMIAPI TraceEvent (TRACEHANDLE TraceHandle, PEVENT_TRACE_HEADER EventTrace);
773   EXTERN_C ULONG WMIAPI TraceEventInstance (TRACEHANDLE TraceHandle, PEVENT_INSTANCE_HEADER EventTrace, PEVENT_INSTANCE_INFO InstInfo, PEVENT_INSTANCE_INFO ParentInstInfo);
774   EXTERN_C ULONG WMIAPI RegisterTraceGuidsA (WMIDPREQUEST RequestAddress, PVOID RequestContext, LPCGUID ControlGuid, ULONG GuidCount, PTRACE_GUID_REGISTRATION TraceGuidReg, LPCSTR MofImagePath, LPCSTR MofResourceName, PTRACEHANDLE RegistrationHandle);
775   EXTERN_C ULONG WMIAPI EnumerateTraceGuids (PTRACE_GUID_PROPERTIES *GuidPropertiesArray, ULONG PropertyArrayCount, PULONG GuidCount);
776   EXTERN_C TRACEHANDLE WMIAPI OpenTraceA (PEVENT_TRACE_LOGFILEA Logfile);
777   EXTERN_C TRACEHANDLE WMIAPI OpenTraceW (PEVENT_TRACE_LOGFILEW Logfile);
778   EXTERN_C ULONG WMIAPI ProcessTrace (PTRACEHANDLE HandleArray, ULONG HandleCount, LPFILETIME StartTime, LPFILETIME EndTime);
779   EXTERN_C ULONG WMIAPI CloseTrace (TRACEHANDLE TraceHandle);
780   EXTERN_C ULONG WMIAPI SetTraceCallback (LPCGUID pGuid, PEVENT_CALLBACK EventCallback);
781   EXTERN_C ULONG WMIAPI RemoveTraceCallback (LPCGUID pGuid);
782   EXTERN_C ULONG TraceMessageVa (TRACEHANDLE LoggerHandle, ULONG MessageFlags, LPCGUID MessageGuid, USHORT MessageNumber, va_list MessageArgList);
783 #if WINVER >= 0x0600
784   EXTERN_C ULONG WMIAPI EnableTraceEx (LPCGUID ProviderId, LPCGUID SourceId, TRACEHANDLE TraceHandle, ULONG IsEnabled, UCHAR Level, ULONGLONG MatchAnyKeyword, ULONGLONG MatchAllKeyword, ULONG EnableProperty, PEVENT_FILTER_DESCRIPTOR EnableFilterDesc);
785   EXTERN_C ULONG WMIAPI EnumerateTraceGuidsEx (TRACE_QUERY_INFO_CLASS TraceQueryInfoClass, PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, PULONG ReturnLength);
786 #endif
787 #if WINVER >= 0x0601
788   EXTERN_C ULONG WMIAPI EnableTraceEx2 (TRACEHANDLE TraceHandle, LPCGUID ProviderId, ULONG ControlCode, UCHAR Level, ULONGLONG MatchAnyKeyword, ULONGLONG MatchAllKeyword, ULONG Timeout, PENABLE_TRACE_PARAMETERS EnableParameters);
789   EXTERN_C ULONG WMIAPI TraceSetInformation (TRACEHANDLE SessionHandle, TRACE_INFO_CLASS InformationClass, PVOID TraceInformation, ULONG InformationLength);
790 #endif
791 #if WINVER >= 0x0602
792   EXTERN_C ULONG WMIAPI TraceQueryInformation (TRACEHANDLE SessionHandle, TRACE_INFO_CLASS InformationClass, PVOID TraceInformation, ULONG InformationLength, PULONG ReturnLength);
793 #endif
794 #endif
795 
796 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
797   EXTERN_C ULONG WMIAPI StartTraceW (PTRACEHANDLE TraceHandle, LPCWSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
798   EXTERN_C ULONG WMIAPI StopTraceW (TRACEHANDLE TraceHandle, LPCWSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
799   EXTERN_C ULONG WMIAPI QueryTraceW (TRACEHANDLE TraceHandle, LPCWSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
800   EXTERN_C ULONG WMIAPI FlushTraceW (TRACEHANDLE TraceHandle, LPCWSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties);
801   EXTERN_C ULONG WMIAPI ControlTraceW (TRACEHANDLE TraceHandle, LPCWSTR InstanceName, PEVENT_TRACE_PROPERTIES Properties, ULONG ControlCode);
802   EXTERN_C ULONG WMIAPI EnableTrace (ULONG Enable, ULONG EnableFlag, ULONG EnableLevel, LPCGUID ControlGuid, TRACEHANDLE TraceHandle);
803   EXTERN_C ULONG WMIAPI RegisterTraceGuidsW (WMIDPREQUEST RequestAddress, PVOID RequestContext, LPCGUID ControlGuid, ULONG GuidCount, PTRACE_GUID_REGISTRATION TraceGuidReg, LPCWSTR MofImagePath, LPCWSTR MofResourceName, PTRACEHANDLE RegistrationHandle);
804   EXTERN_C ULONG WMIAPI UnregisterTraceGuids (TRACEHANDLE RegistrationHandle);
805   EXTERN_C TRACEHANDLE WMIAPI GetTraceLoggerHandle (PVOID Buffer);
806   EXTERN_C UCHAR WMIAPI GetTraceEnableLevel (TRACEHANDLE TraceHandle);
807   EXTERN_C ULONG WMIAPI GetTraceEnableFlags (TRACEHANDLE TraceHandle);
808   EXTERN_C ULONG __cdecl TraceMessage (TRACEHANDLE LoggerHandle, ULONG MessageFlags, LPCGUID MessageGuid, USHORT MessageNumber,...);
809 #endif
810 
811 #ifdef __cplusplus
812 }
813 #endif
814 
815 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
816 #define INVALID_PROCESSTRACE_HANDLE ((TRACEHANDLE)INVALID_HANDLE_VALUE)
817 #endif
818 
819 #if defined (UNICODE) || defined (_UNICODE)
820 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
821 #define RegisterTraceGuids RegisterTraceGuidsW
822 #define StartTrace StartTraceW
823 #define ControlTrace ControlTraceW
824 
825 #ifdef __TRACE_W2K_COMPATIBLE
826 #define StopTrace(a, b, c) ControlTraceW ((a),(b),(c), EVENT_TRACE_CONTROL_STOP)
827 #define QueryTrace(a, b, c) ControlTraceW ((a),(b),(c), EVENT_TRACE_CONTROL_QUERY)
828 #define UpdateTrace(a, b, c) ControlTraceW ((a),(b),(c), EVENT_TRACE_CONTROL_UPDATE)
829 #else
830 #define StopTrace StopTraceW
831 #define QueryTrace QueryTraceW
832 #define UpdateTrace UpdateTraceW
833 #endif
834 
835 #define FlushTrace FlushTraceW
836 #define QueryAllTraces QueryAllTracesW
837 #define OpenTrace OpenTraceW
838 #endif
839 #else
840 
841 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
842 #define RegisterTraceGuids RegisterTraceGuidsA
843 #define StartTrace StartTraceA
844 #define ControlTrace ControlTraceA
845 
846 #ifdef __TRACE_W2K_COMPATIBLE
847 #define StopTrace(a, b, c) ControlTraceA ((a),(b),(c), EVENT_TRACE_CONTROL_STOP)
848 #define QueryTrace(a, b, c) ControlTraceA ((a),(b),(c), EVENT_TRACE_CONTROL_QUERY)
849 #define UpdateTrace(a, b, c) ControlTraceA ((a),(b),(c), EVENT_TRACE_CONTROL_UPDATE)
850 #else
851 #define StopTrace StopTraceA
852 #define QueryTrace QueryTraceA
853 #define UpdateTrace UpdateTraceA
854 #endif
855 
856 #define FlushTrace FlushTraceA
857 #define QueryAllTraces QueryAllTracesA
858 #define OpenTrace OpenTraceA
859 #endif
860 #endif
861 #endif
862 #endif
863 #endif
864