8 #define WMIAPI __stdcall
10 #define WMIAPI DECLSPEC_IMPORT __stdcall
12 #endif /* MIDL_PASS */
21 DEFINE_GUID (EventTraceGuid
, 0x68fdd900, 0x4a3e, 0x11d1, 0x84, 0xf4, 0x00, 0x00, 0xf8, 0x04, 0x64, 0xe3);
22 DEFINE_GUID (SystemTraceControlGuid
, 0x9e814aad, 0x3204, 0x11d2, 0x9a, 0x82, 0x00, 0x60, 0x08, 0xa8, 0x69, 0x39);
23 DEFINE_GUID (EventTraceConfigGuid
, 0x01853a65, 0x418f, 0x4f36, 0xae, 0xfc, 0xdc, 0x0f, 0x1d, 0x2f, 0xd2, 0x35);
24 DEFINE_GUID (DefaultTraceSecurityGuid
, 0x0811c1af, 0x7a07, 0x4a06, 0x82, 0xed, 0x86, 0x94, 0x55, 0xcd, 0xf7, 0x13);
26 #define KERNEL_LOGGER_NAMEW L"NT Kernel Logger"
27 #define GLOBAL_LOGGER_NAMEW L"GlobalLogger"
28 #define EVENT_LOGGER_NAMEW L"EventLog"
29 #define DIAG_LOGGER_NAMEW L"DiagLog"
31 #define KERNEL_LOGGER_NAMEA "NT Kernel Logger"
32 #define GLOBAL_LOGGER_NAMEA "GlobalLogger"
33 #define EVENT_LOGGER_NAMEA "EventLog"
34 #define DIAG_LOGGER_NAMEA "DiagLog"
36 #define MAX_MOF_FIELDS 16
38 #ifndef _TRACEHANDLE_DEFINED
39 #define _TRACEHANDLE_DEFINED
40 typedef ULONG64 TRACEHANDLE
, *PTRACEHANDLE
;
43 #define SYSTEM_EVENT_TYPE 1
45 #define EVENT_TRACE_TYPE_INFO 0x00
46 #define EVENT_TRACE_TYPE_START 0x01
47 #define EVENT_TRACE_TYPE_END 0x02
48 #define EVENT_TRACE_TYPE_STOP 0x02
49 #define EVENT_TRACE_TYPE_DC_START 0x03
50 #define EVENT_TRACE_TYPE_DC_END 0x04
51 #define EVENT_TRACE_TYPE_EXTENSION 0x05
52 #define EVENT_TRACE_TYPE_REPLY 0x06
53 #define EVENT_TRACE_TYPE_DEQUEUE 0x07
54 #define EVENT_TRACE_TYPE_RESUME 0x07
55 #define EVENT_TRACE_TYPE_CHECKPOINT 0x08
56 #define EVENT_TRACE_TYPE_SUSPEND 0x08
57 #define EVENT_TRACE_TYPE_WINEVT_SEND 0x09
58 #define EVENT_TRACE_TYPE_WINEVT_RECEIVE 0XF0
60 #define TRACE_LEVEL_NONE 0
61 #define TRACE_LEVEL_CRITICAL 1
62 #define TRACE_LEVEL_FATAL 1
63 #define TRACE_LEVEL_ERROR 2
64 #define TRACE_LEVEL_WARNING 3
65 #define TRACE_LEVEL_INFORMATION 4
66 #define TRACE_LEVEL_VERBOSE 5
67 #define TRACE_LEVEL_RESERVED6 6
68 #define TRACE_LEVEL_RESERVED7 7
69 #define TRACE_LEVEL_RESERVED8 8
70 #define TRACE_LEVEL_RESERVED9 9
72 #define EVENT_TRACE_TYPE_LOAD 0x0A
74 #define EVENT_TRACE_TYPE_IO_READ 0x0A
75 #define EVENT_TRACE_TYPE_IO_WRITE 0x0B
76 #define EVENT_TRACE_TYPE_IO_READ_INIT 0x0C
77 #define EVENT_TRACE_TYPE_IO_WRITE_INIT 0x0D
78 #define EVENT_TRACE_TYPE_IO_FLUSH 0x0E
79 #define EVENT_TRACE_TYPE_IO_FLUSH_INIT 0x0F
81 #define EVENT_TRACE_TYPE_MM_TF 0x0A
82 #define EVENT_TRACE_TYPE_MM_DZF 0x0B
83 #define EVENT_TRACE_TYPE_MM_COW 0x0C
84 #define EVENT_TRACE_TYPE_MM_GPF 0x0D
85 #define EVENT_TRACE_TYPE_MM_HPF 0x0E
86 #define EVENT_TRACE_TYPE_MM_AV 0x0F
88 #define EVENT_TRACE_TYPE_SEND 0x0A
89 #define EVENT_TRACE_TYPE_RECEIVE 0x0B
90 #define EVENT_TRACE_TYPE_CONNECT 0x0C
91 #define EVENT_TRACE_TYPE_DISCONNECT 0x0D
92 #define EVENT_TRACE_TYPE_RETRANSMIT 0x0E
93 #define EVENT_TRACE_TYPE_ACCEPT 0x0F
94 #define EVENT_TRACE_TYPE_RECONNECT 0x10
95 #define EVENT_TRACE_TYPE_CONNFAIL 0x11
96 #define EVENT_TRACE_TYPE_COPY_TCP 0x12
97 #define EVENT_TRACE_TYPE_COPY_ARP 0x13
98 #define EVENT_TRACE_TYPE_ACKFULL 0x14
99 #define EVENT_TRACE_TYPE_ACKPART 0x15
100 #define EVENT_TRACE_TYPE_ACKDUP 0x16
102 #define EVENT_TRACE_TYPE_GUIDMAP 0x0A
103 #define EVENT_TRACE_TYPE_CONFIG 0x0B
104 #define EVENT_TRACE_TYPE_SIDINFO 0x0C
105 #define EVENT_TRACE_TYPE_SECURITY 0x0D
107 #define EVENT_TRACE_TYPE_REGCREATE 0x0A
108 #define EVENT_TRACE_TYPE_REGOPEN 0x0B
109 #define EVENT_TRACE_TYPE_REGDELETE 0x0C
110 #define EVENT_TRACE_TYPE_REGQUERY 0x0D
111 #define EVENT_TRACE_TYPE_REGSETVALUE 0x0E
112 #define EVENT_TRACE_TYPE_REGDELETEVALUE 0x0F
113 #define EVENT_TRACE_TYPE_REGQUERYVALUE 0x10
114 #define EVENT_TRACE_TYPE_REGENUMERATEKEY 0x11
115 #define EVENT_TRACE_TYPE_REGENUMERATEVALUEKEY 0x12
116 #define EVENT_TRACE_TYPE_REGQUERYMULTIPLEVALUE 0x13
117 #define EVENT_TRACE_TYPE_REGSETINFORMATION 0x14
118 #define EVENT_TRACE_TYPE_REGFLUSH 0x15
119 #define EVENT_TRACE_TYPE_REGKCBCREATE 0x16
120 #define EVENT_TRACE_TYPE_REGKCBDELETE 0x17
121 #define EVENT_TRACE_TYPE_REGKCBRUNDOWNBEGIN 0x18
122 #define EVENT_TRACE_TYPE_REGKCBRUNDOWNEND 0x19
123 #define EVENT_TRACE_TYPE_REGVIRTUALIZE 0x1A
124 #define EVENT_TRACE_TYPE_REGCLOSE 0x1B
125 #define EVENT_TRACE_TYPE_REGSETSECURITY 0x1C
126 #define EVENT_TRACE_TYPE_REGQUERYSECURITY 0x1D
127 #define EVENT_TRACE_TYPE_REGCOMMIT 0x1E
128 #define EVENT_TRACE_TYPE_REGPREPARE 0x1F
129 #define EVENT_TRACE_TYPE_REGROLLBACK 0x20
130 #define EVENT_TRACE_TYPE_REGMOUNTHIVE 0x21
132 #define EVENT_TRACE_TYPE_CONFIG_CPU 0x0A
133 #define EVENT_TRACE_TYPE_CONFIG_PHYSICALDISK 0x0B
134 #define EVENT_TRACE_TYPE_CONFIG_LOGICALDISK 0x0C
135 #define EVENT_TRACE_TYPE_CONFIG_NIC 0x0D
136 #define EVENT_TRACE_TYPE_CONFIG_VIDEO 0x0E
137 #define EVENT_TRACE_TYPE_CONFIG_SERVICES 0x0F
138 #define EVENT_TRACE_TYPE_CONFIG_POWER 0x10
139 #define EVENT_TRACE_TYPE_CONFIG_NETINFO 0x11
141 #define EVENT_TRACE_TYPE_CONFIG_IRQ 0x15
142 #define EVENT_TRACE_TYPE_CONFIG_PNP 0x16
143 #define EVENT_TRACE_TYPE_CONFIG_IDECHANNEL 0x17
144 #define EVENT_TRACE_TYPE_CONFIG_PLATFORM 0x19
146 #define EVENT_TRACE_FLAG_PROCESS 0x00000001
147 #define EVENT_TRACE_FLAG_THREAD 0x00000002
148 #define EVENT_TRACE_FLAG_IMAGE_LOAD 0x00000004
150 #define EVENT_TRACE_FLAG_DISK_IO 0x00000100
151 #define EVENT_TRACE_FLAG_DISK_FILE_IO 0x00000200
153 #define EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS 0x00001000
154 #define EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS 0x00002000
156 #define EVENT_TRACE_FLAG_NETWORK_TCPIP 0x00010000
158 #define EVENT_TRACE_FLAG_REGISTRY 0x00020000
159 #define EVENT_TRACE_FLAG_DBGPRINT 0x00040000
161 #define EVENT_TRACE_FLAG_PROCESS_COUNTERS 0x00000008
162 #define EVENT_TRACE_FLAG_CSWITCH 0x00000010
163 #define EVENT_TRACE_FLAG_DPC 0x00000020
164 #define EVENT_TRACE_FLAG_INTERRUPT 0x00000040
165 #define EVENT_TRACE_FLAG_SYSTEMCALL 0x00000080
167 #define EVENT_TRACE_FLAG_DISK_IO_INIT 0x00000400
169 #define EVENT_TRACE_FLAG_ALPC 0x00100000
170 #define EVENT_TRACE_FLAG_SPLIT_IO 0x00200000
172 #define EVENT_TRACE_FLAG_DRIVER 0x00800000
173 #define EVENT_TRACE_FLAG_PROFILE 0x01000000
174 #define EVENT_TRACE_FLAG_FILE_IO 0x02000000
175 #define EVENT_TRACE_FLAG_FILE_IO_INIT 0x04000000
177 #define EVENT_TRACE_FLAG_DISPATCHER 0x00000800
178 #define EVENT_TRACE_FLAG_VIRTUAL_ALLOC 0x00004000
180 #define EVENT_TRACE_FLAG_EXTENSION 0x80000000
181 #define EVENT_TRACE_FLAG_FORWARD_WMI 0x40000000
182 #define EVENT_TRACE_FLAG_ENABLE_RESERVE 0x20000000
184 #define EVENT_TRACE_FILE_MODE_NONE 0x00000000
185 #define EVENT_TRACE_FILE_MODE_SEQUENTIAL 0x00000001
186 #define EVENT_TRACE_FILE_MODE_CIRCULAR 0x00000002
187 #define EVENT_TRACE_FILE_MODE_APPEND 0x00000004
189 #define EVENT_TRACE_REAL_TIME_MODE 0x00000100
190 #define EVENT_TRACE_DELAY_OPEN_FILE_MODE 0x00000200
191 #define EVENT_TRACE_BUFFERING_MODE 0x00000400
192 #define EVENT_TRACE_PRIVATE_LOGGER_MODE 0x00000800
193 #define EVENT_TRACE_ADD_HEADER_MODE 0x00001000
195 #define EVENT_TRACE_USE_GLOBAL_SEQUENCE 0x00004000
196 #define EVENT_TRACE_USE_LOCAL_SEQUENCE 0x00008000
198 #define EVENT_TRACE_RELOG_MODE 0x00010000
200 #define EVENT_TRACE_USE_PAGED_MEMORY 0x01000000
202 #define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008
203 #define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020
205 #define EVENT_TRACE_NONSTOPPABLE_MODE 0x00000040
206 #define EVENT_TRACE_SECURE_MODE 0x00000080
207 #define EVENT_TRACE_USE_KBYTES_FOR_SIZE 0x00002000
208 #define EVENT_TRACE_PRIVATE_IN_PROC 0x00020000
209 #define EVENT_TRACE_MODE_RESERVED 0x00100000
211 #define EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 0x10000000
213 #define EVENT_TRACE_CONTROL_QUERY 0
214 #define EVENT_TRACE_CONTROL_STOP 1
215 #define EVENT_TRACE_CONTROL_UPDATE 2
217 #define EVENT_TRACE_CONTROL_FLUSH 3
219 #define TRACE_MESSAGE_SEQUENCE 1
220 #define TRACE_MESSAGE_GUID 2
221 #define TRACE_MESSAGE_COMPONENTID 4
222 #define TRACE_MESSAGE_TIMESTAMP 8
223 #define TRACE_MESSAGE_PERFORMANCE_TIMESTAMP 16
224 #define TRACE_MESSAGE_SYSTEMINFO 32
226 #define TRACE_MESSAGE_POINTER32 0x0040
227 #define TRACE_MESSAGE_POINTER64 0x0080
229 #define TRACE_MESSAGE_FLAG_MASK 0xFFFF
231 #define TRACE_MESSAGE_MAXIMUM_SIZE 8*1024
233 #define EVENT_TRACE_USE_PROCTIME 0x0001
234 #define EVENT_TRACE_USE_NOCPUTIME 0x0002
236 #define TRACE_HEADER_FLAG_USE_TIMESTAMP 0x00000200
237 #define TRACE_HEADER_FLAG_TRACED_GUID 0x00020000
238 #define TRACE_HEADER_FLAG_LOG_WNODE 0x00040000
239 #define TRACE_HEADER_FLAG_USE_GUID_PTR 0x00080000
240 #define TRACE_HEADER_FLAG_USE_MOF_PTR 0x00100000
242 #define ETW_NULL_TYPE_VALUE 0
243 #define ETW_OBJECT_TYPE_VALUE 1
244 #define ETW_STRING_TYPE_VALUE 2
245 #define ETW_SBYTE_TYPE_VALUE 3
246 #define ETW_BYTE_TYPE_VALUE 4
247 #define ETW_INT16_TYPE_VALUE 5
248 #define ETW_UINT16_TYPE_VALUE 6
249 #define ETW_INT32_TYPE_VALUE 7
250 #define ETW_UINT32_TYPE_VALUE 8
251 #define ETW_INT64_TYPE_VALUE 9
252 #define ETW_UINT64_TYPE_VALUE 10
253 #define ETW_CHAR_TYPE_VALUE 11
254 #define ETW_SINGLE_TYPE_VALUE 12
255 #define ETW_DOUBLE_TYPE_VALUE 13
256 #define ETW_BOOLEAN_TYPE_VALUE 14
257 #define ETW_DECIMAL_TYPE_VALUE 15
259 #define ETW_GUID_TYPE_VALUE 101
260 #define ETW_ASCIICHAR_TYPE_VALUE 102
261 #define ETW_ASCIISTRING_TYPE_VALUE 103
262 #define ETW_COUNTED_STRING_TYPE_VALUE 104
263 #define ETW_POINTER_TYPE_VALUE 105
264 #define ETW_SIZET_TYPE_VALUE 106
265 #define ETW_HIDDEN_TYPE_VALUE 107
266 #define ETW_BOOL_TYPE_VALUE 108
267 #define ETW_COUNTED_ANSISTRING_TYPE_VALUE 109
268 #define ETW_REVERSED_COUNTED_STRING_TYPE_VALUE 110
269 #define ETW_REVERSED_COUNTED_ANSISTRING_TYPE_VALUE 111
270 #define ETW_NON_NULL_TERMINATED_STRING_TYPE_VALUE 112
271 #define ETW_REDUCED_ANSISTRING_TYPE_VALUE 113
272 #define ETW_REDUCED_STRING_TYPE_VALUE 114
273 #define ETW_SID_TYPE_VALUE 115
274 #define ETW_VARIANT_TYPE_VALUE 116
275 #define ETW_PTVECTOR_TYPE_VALUE 117
276 #define ETW_WMITIME_TYPE_VALUE 118
277 #define ETW_DATETIME_TYPE_VALUE 119
278 #define ETW_REFRENCE_TYPE_VALUE 120
280 #define TRACE_PROVIDER_FLAG_LEGACY 0x00000001
281 #define TRACE_PROVIDER_FLAG_PRE_ENABLE 0x00000002
283 #define EVENT_CONTROL_CODE_DISABLE_PROVIDER 0
284 #define EVENT_CONTROL_CODE_ENABLE_PROVIDER 1
285 #define EVENT_CONTROL_CODE_CAPTURE_STATE 2
287 #define DEFINE_TRACE_MOF_FIELD(MOF, ptr, length, type) \
288 (MOF)->DataPtr = (ULONG64)(ULONG_PTR) ptr; \
289 (MOF)->Length = (ULONG) length; \
290 (MOF)->DataType = (ULONG) type;
292 typedef struct _EVENT_TRACE_HEADER
{
294 _ANONYMOUS_UNION
union {
295 USHORT FieldTypeFlags
;
296 _ANONYMOUS_STRUCT
struct {
301 _ANONYMOUS_UNION
union {
311 LARGE_INTEGER TimeStamp
;
312 _ANONYMOUS_UNION
union {
316 _ANONYMOUS_UNION
union {
317 _ANONYMOUS_STRUCT
struct {
321 ULONG64 ProcessorTime
;
322 _ANONYMOUS_STRUCT
struct {
327 } EVENT_TRACE_HEADER
;
329 #ifndef PEVENT_TRACE_HEADER_DEFINED
330 #define PEVENT_TRACE_HEADER_DEFINED
331 typedef struct _EVENT_TRACE_HEADER
*PEVENT_TRACE_HEADER
;
334 typedef struct _EVENT_INSTANCE_HEADER
{
336 _ANONYMOUS_UNION
union {
337 USHORT FieldTypeFlags
;
338 _ANONYMOUS_STRUCT
struct {
343 _ANONYMOUS_UNION
union {
353 LARGE_INTEGER TimeStamp
;
356 ULONG ParentInstanceId
;
357 _ANONYMOUS_UNION
union {
358 _ANONYMOUS_STRUCT
struct {
362 ULONG64 ProcessorTime
;
363 _ANONYMOUS_STRUCT
struct {
368 ULONGLONG ParentRegHandle
;
369 } EVENT_INSTANCE_HEADER
, *PEVENT_INSTANCE_HEADER
;
371 typedef struct _MOF_FIELD
{
375 } MOF_FIELD
, *PMOF_FIELD
;
377 typedef struct _EVENT_INSTANCE_INFO
{
380 } EVENT_INSTANCE_INFO
, *PEVENT_INSTANCE_INFO
;
382 typedef struct _TRACE_GUID_PROPERTIES
{
389 } TRACE_GUID_PROPERTIES
, *PTRACE_GUID_PROPERTIES
;
391 typedef struct _ETW_BUFFER_CONTEXT
{
392 UCHAR ProcessorNumber
;
395 } ETW_BUFFER_CONTEXT
, *PETW_BUFFER_CONTEXT
;
397 typedef struct _TRACE_ENABLE_INFO
{
402 ULONG EnableProperty
;
404 ULONGLONG MatchAnyKeyword
;
405 ULONGLONG MatchAllKeyword
;
406 } TRACE_ENABLE_INFO
, *PTRACE_ENABLE_INFO
;
408 typedef struct _TRACE_PROVIDER_INSTANCE_INFO
{
413 } TRACE_PROVIDER_INSTANCE_INFO
, *PTRACE_PROVIDER_INSTANCE_INFO
;
415 typedef struct _TRACE_GUID_INFO
{
418 } TRACE_GUID_INFO
, *PTRACE_GUID_INFO
;
420 typedef struct _EVENT_TRACE
{
421 EVENT_TRACE_HEADER Header
;
423 ULONG ParentInstanceId
;
427 _ANONYMOUS_UNION
union {
429 ETW_BUFFER_CONTEXT BufferContext
;
431 } EVENT_TRACE
, *PEVENT_TRACE
;
433 #if !(defined(_NTDDK_) || defined(_NTIFS_)) || defined(_WMIKM_)
435 typedef struct _TRACE_LOGFILE_HEADER
{
437 _ANONYMOUS_UNION
union {
443 UCHAR SubMinorVersion
;
446 ULONG ProviderVersion
;
447 ULONG NumberOfProcessors
;
448 LARGE_INTEGER EndTime
;
449 ULONG TimerResolution
;
450 ULONG MaximumFileSize
;
452 ULONG BuffersWritten
;
453 _ANONYMOUS_UNION
union {
454 GUID LogInstanceGuid
;
455 _ANONYMOUS_STRUCT
struct {
465 RTL_TIME_ZONE_INFORMATION TimeZone
;
469 TIME_ZONE_INFORMATION TimeZone
;
471 LARGE_INTEGER BootTime
;
472 LARGE_INTEGER PerfFreq
;
473 LARGE_INTEGER StartTime
;
476 } TRACE_LOGFILE_HEADER
, *PTRACE_LOGFILE_HEADER
;
478 typedef struct _TRACE_LOGFILE_HEADER32
{
480 _ANONYMOUS_UNION
union {
486 UCHAR SubMinorVersion
;
489 ULONG ProviderVersion
;
490 ULONG NumberOfProcessors
;
491 LARGE_INTEGER EndTime
;
492 ULONG TimerResolution
;
493 ULONG MaximumFileSize
;
495 ULONG BuffersWritten
;
496 _ANONYMOUS_UNION
union {
497 GUID LogInstanceGuid
;
498 _ANONYMOUS_STRUCT
struct {
508 RTL_TIME_ZONE_INFORMATION TimeZone
;
512 TIME_ZONE_INFORMATION TimeZone
;
514 LARGE_INTEGER BootTime
;
515 LARGE_INTEGER PerfFreq
;
516 LARGE_INTEGER StartTime
;
519 } TRACE_LOGFILE_HEADER32
, *PTRACE_LOGFILE_HEADER32
;
521 typedef struct _TRACE_LOGFILE_HEADER64
{
523 _ANONYMOUS_UNION
union {
529 UCHAR SubMinorVersion
;
532 ULONG ProviderVersion
;
533 ULONG NumberOfProcessors
;
534 LARGE_INTEGER EndTime
;
535 ULONG TimerResolution
;
536 ULONG MaximumFileSize
;
538 ULONG BuffersWritten
;
539 _ANONYMOUS_UNION
union {
540 GUID LogInstanceGuid
;
541 _ANONYMOUS_STRUCT
struct {
551 RTL_TIME_ZONE_INFORMATION TimeZone
;
555 TIME_ZONE_INFORMATION TimeZone
;
557 LARGE_INTEGER BootTime
;
558 LARGE_INTEGER PerfFreq
;
559 LARGE_INTEGER StartTime
;
562 } TRACE_LOGFILE_HEADER64
, *PTRACE_LOGFILE_HEADER64
;
564 #endif /* !_NTDDK_ || _WMIKM_ */
566 #if !defined(_WMIKM_) && !defined(_NTDDK_) && !defined(_NTIFS_)
568 #define ENABLE_TRACE_PARAMETERS_VERSION 1
570 typedef struct _EVENT_TRACE_PROPERTIES
{
573 ULONG MinimumBuffers
;
574 ULONG MaximumBuffers
;
575 ULONG MaximumFileSize
;
580 ULONG NumberOfBuffers
;
583 ULONG BuffersWritten
;
584 ULONG LogBuffersLost
;
585 ULONG RealTimeBuffersLost
;
586 HANDLE LoggerThreadId
;
587 ULONG LogFileNameOffset
;
588 ULONG LoggerNameOffset
;
589 } EVENT_TRACE_PROPERTIES
, *PEVENT_TRACE_PROPERTIES
;
591 typedef struct _TRACE_GUID_REGISTRATION
{
594 } TRACE_GUID_REGISTRATION
, *PTRACE_GUID_REGISTRATION
;
596 typedef struct _EVENT_RECORD EVENT_RECORD
, *PEVENT_RECORD
;
597 typedef struct _EVENT_TRACE_LOGFILEW EVENT_TRACE_LOGFILEW
, *PEVENT_TRACE_LOGFILEW
;
598 typedef struct _EVENT_TRACE_LOGFILEA EVENT_TRACE_LOGFILEA
, *PEVENT_TRACE_LOGFILEA
;
600 typedef struct _EVENT_FILTER_DESCRIPTOR EVENT_FILTER_DESCRIPTOR
, *PEVENT_FILTER_DESCRIPTOR
;
604 (WINAPI
*PEVENT_TRACE_BUFFER_CALLBACKW
)(
605 PEVENT_TRACE_LOGFILEW Logfile
);
608 (WINAPI
*PEVENT_TRACE_BUFFER_CALLBACKA
)(
609 PEVENT_TRACE_LOGFILEA Logfile
);
612 (WINAPI
*PEVENT_CALLBACK
)(
613 PEVENT_TRACE pEvent
);
616 (WINAPI
*PEVENT_RECORD_CALLBACK
)(
617 PEVENT_RECORD EventRecord
);
620 (WINAPI
*WMIDPREQUEST
)(
621 IN WMIDPREQUESTCODE RequestCode
,
622 IN PVOID RequestContext
,
623 IN OUT ULONG
*BufferSize
,
624 IN OUT PVOID Buffer
);
626 struct _EVENT_TRACE_LOGFILEW
{
629 LONGLONG CurrentTime
;
631 _ANONYMOUS_UNION
union {
633 ULONG ProcessTraceMode
;
635 EVENT_TRACE CurrentEvent
;
636 TRACE_LOGFILE_HEADER LogfileHeader
;
637 PEVENT_TRACE_BUFFER_CALLBACKW BufferCallback
;
641 _ANONYMOUS_UNION
union {
642 PEVENT_CALLBACK EventCallback
;
643 PEVENT_RECORD_CALLBACK EventRecordCallback
;
649 struct _EVENT_TRACE_LOGFILEA
{
652 LONGLONG CurrentTime
;
654 _ANONYMOUS_UNION
union {
656 ULONG ProcessTraceMode
;
658 EVENT_TRACE CurrentEvent
;
659 TRACE_LOGFILE_HEADER LogfileHeader
;
660 PEVENT_TRACE_BUFFER_CALLBACKA BufferCallback
;
664 _ANONYMOUS_UNION
union {
665 PEVENT_CALLBACK EventCallback
;
666 PEVENT_RECORD_CALLBACK EventRecordCallback
;
672 #if defined(_UNICODE) || defined(UNICODE)
674 #define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKW
675 #define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEW
676 #define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEW
677 #define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEW
678 #define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEW
679 #define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEW
683 #define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKA
684 #define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEA
685 #define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEA
686 #define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEA
687 #define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEA
688 #define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEA
690 #endif /* defined(_UNICODE) || defined(UNICODE) */
692 typedef enum _TRACE_QUERY_INFO_CLASS
{
695 TraceGuidQueryProcess
,
696 TraceStackTracingInfo
,
698 } TRACE_QUERY_INFO_CLASS
, TRACE_INFO_CLASS
;
700 typedef struct _CLASSIC_EVENT_ID
{
704 } CLASSIC_EVENT_ID
, *PCLASSIC_EVENT_ID
;
706 typedef struct _ENABLE_TRACE_PARAMETERS
{
708 ULONG EnableProperty
;
711 PEVENT_FILTER_DESCRIPTOR EnableFilterDesc
;
712 } ENABLE_TRACE_PARAMETERS
, *PENABLE_TRACE_PARAMETERS
;
714 #define INVALID_PROCESSTRACE_HANDLE ((TRACEHANDLE)INVALID_HANDLE_VALUE)
716 #if defined(UNICODE) || defined(_UNICODE)
718 #define RegisterTraceGuids RegisterTraceGuidsW
719 #define StartTrace StartTraceW
720 #define ControlTrace ControlTraceW
722 #if defined(__TRACE_W2K_COMPATIBLE)
724 #define StopTrace(a,b,c) ControlTraceW((a),(b),(c), EVENT_TRACE_CONTROL_STOP)
725 #define QueryTrace(a,b,c) ControlTraceW((a),(b),(c), EVENT_TRACE_CONTROL_QUERY)
726 #define UpdateTrace(a,b,c) ControlTraceW((a),(b),(c), EVENT_TRACE_CONTROL_UPDATE)
730 #define StopTrace StopTraceW
731 #define QueryTrace QueryTraceW
732 #define UpdateTrace UpdateTraceW
734 #endif /* defined(__TRACE_W2K_COMPATIBLE) */
736 #if (NTDDI_VERSION >= NTDDI_WINXP)
737 #define FlushTrace FlushTraceW
740 #define QueryAllTraces QueryAllTracesW
741 #define OpenTrace OpenTraceW
743 #else /* defined(UNICODE) || defined(_UNICODE) */
745 #define RegisterTraceGuids RegisterTraceGuidsA
746 #define StartTrace StartTraceA
747 #define ControlTrace ControlTraceA
749 #if defined(__TRACE_W2K_COMPATIBLE)
751 #define StopTrace(a,b,c) ControlTraceA((a),(b),(c), EVENT_TRACE_CONTROL_STOP)
752 #define QueryTrace(a,b,c) ControlTraceA((a),(b),(c), EVENT_TRACE_CONTROL_QUERY)
753 #define UpdateTrace(a,b,c) ControlTraceA((a),(b),(c), EVENT_TRACE_CONTROL_UPDATE)
757 #define StopTrace StopTraceA
758 #define QueryTrace QueryTraceA
759 #define UpdateTrace UpdateTraceA
761 #endif /* defined(__TRACE_W2K_COMPATIBLE) */
763 #if (NTDDI_VERSION >= NTDDI_WINXP)
764 #define FlushTrace FlushTraceA
767 #define QueryAllTraces QueryAllTracesA
768 #define OpenTrace OpenTraceA
770 #endif /* defined(UNICODE) || defined(_UNICODE) */
776 OUT PTRACEHANDLE TraceHandle
,
777 IN LPCWSTR InstanceName
,
778 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
784 OUT PTRACEHANDLE TraceHandle
,
785 IN LPCSTR InstanceName
,
786 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
792 IN TRACEHANDLE TraceHandle
,
793 IN LPCWSTR InstanceName OPTIONAL
,
794 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
800 IN TRACEHANDLE TraceHandle
,
801 IN LPCSTR InstanceName OPTIONAL
,
802 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
808 IN TRACEHANDLE TraceHandle
,
809 IN LPCWSTR InstanceName OPTIONAL
,
810 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
816 IN TRACEHANDLE TraceHandle
,
817 IN LPCSTR InstanceName OPTIONAL
,
818 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
824 IN TRACEHANDLE TraceHandle
,
825 IN LPCWSTR InstanceName OPTIONAL
,
826 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
832 IN TRACEHANDLE TraceHandle
,
833 IN LPCSTR InstanceName OPTIONAL
,
834 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
840 IN TRACEHANDLE TraceHandle
,
841 IN LPCWSTR InstanceName OPTIONAL
,
842 IN OUT PEVENT_TRACE_PROPERTIES Properties
,
843 IN ULONG ControlCode
);
849 IN TRACEHANDLE TraceHandle
,
850 IN LPCSTR InstanceName OPTIONAL
,
851 IN OUT PEVENT_TRACE_PROPERTIES Properties
,
852 IN ULONG ControlCode
);
858 OUT PEVENT_TRACE_PROPERTIES
*PropertyArray
,
859 IN ULONG PropertyArrayCount
,
860 OUT PULONG LoggerCount
);
866 OUT PEVENT_TRACE_PROPERTIES
*PropertyArray
,
867 IN ULONG PropertyArrayCount
,
868 OUT PULONG LoggerCount
);
876 IN ULONG EnableLevel
,
877 IN LPCGUID ControlGuid
,
878 IN TRACEHANDLE TraceHandle
);
883 CreateTraceInstanceId(
885 IN OUT PEVENT_INSTANCE_INFO InstInfo
);
891 IN TRACEHANDLE TraceHandle
,
892 IN PEVENT_TRACE_HEADER EventTrace
);
898 IN TRACEHANDLE TraceHandle
,
899 IN PEVENT_INSTANCE_HEADER EventTrace
,
900 IN PEVENT_INSTANCE_INFO InstInfo
,
901 IN PEVENT_INSTANCE_INFO ParentInstInfo OPTIONAL
);
907 IN WMIDPREQUEST RequestAddress
,
908 IN PVOID RequestContext OPTIONAL
,
909 IN LPCGUID ControlGuid
,
911 IN PTRACE_GUID_REGISTRATION TraceGuidReg OPTIONAL
,
912 IN LPCWSTR MofImagePath OPTIONAL
,
913 IN LPCWSTR MofResourceName OPTIONAL
,
914 OUT PTRACEHANDLE RegistrationHandle
);
920 IN WMIDPREQUEST RequestAddress
,
921 IN PVOID RequestContext OPTIONAL
,
922 IN LPCGUID ControlGuid
,
924 IN PTRACE_GUID_REGISTRATION TraceGuidReg OPTIONAL
,
925 IN LPCSTR MofImagePath OPTIONAL
,
926 IN LPCSTR MofResourceName OPTIONAL
,
927 OUT PTRACEHANDLE RegistrationHandle
);
932 UnregisterTraceGuids(
933 IN TRACEHANDLE RegistrationHandle
);
938 GetTraceLoggerHandle(
945 IN TRACEHANDLE TraceHandle
);
951 IN TRACEHANDLE TraceHandle
);
957 IN OUT PEVENT_TRACE_LOGFILEA Logfile
);
963 IN OUT PEVENT_TRACE_LOGFILEW Logfile
);
969 IN PTRACEHANDLE HandleArray
,
970 IN ULONG HandleCount
,
971 IN LPFILETIME StartTime OPTIONAL
,
972 IN LPFILETIME EndTime OPTIONAL
);
978 IN TRACEHANDLE TraceHandle
);
985 IN PEVENT_CALLBACK EventCallback
);
997 IN TRACEHANDLE LoggerHandle
,
998 IN ULONG MessageFlags
,
999 IN LPCGUID MessageGuid
,
1000 IN USHORT MessageNumber
,
1007 IN TRACEHANDLE LoggerHandle
,
1008 IN ULONG MessageFlags
,
1009 IN LPCGUID MessageGuid
,
1010 IN USHORT MessageNumber
,
1011 IN
va_list MessageArgList
);
1013 #if (WINVER >= _WIN32_WINNT_WINXP)
1018 EnumerateTraceGuids(
1019 IN OUT PTRACE_GUID_PROPERTIES
*GuidPropertiesArray
,
1020 IN ULONG PropertyArrayCount
,
1021 OUT PULONG GuidCount
);
1027 IN TRACEHANDLE TraceHandle
,
1028 IN LPCWSTR InstanceName OPTIONAL
,
1029 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
1035 IN TRACEHANDLE TraceHandle
,
1036 IN LPCSTR InstanceName OPTIONAL
,
1037 IN OUT PEVENT_TRACE_PROPERTIES Properties
);
1039 #endif /* (WINVER >= _WIN32_WINNT_WINXP) */
1041 #if (WINVER >= _WIN32_WINNT_VISTA)
1047 IN LPCGUID ProviderId
,
1048 IN LPCGUID SourceId OPTIONAL
,
1049 IN TRACEHANDLE TraceHandle
,
1052 IN ULONGLONG MatchAnyKeyword
,
1053 IN ULONGLONG MatchAllKeyword
,
1054 IN ULONG EnableProperty
,
1055 IN PEVENT_FILTER_DESCRIPTOR EnableFilterDesc OPTIONAL
);
1060 EnumerateTraceGuidsEx(
1061 IN TRACE_QUERY_INFO_CLASS TraceQueryInfoClass
,
1062 IN PVOID InBuffer OPTIONAL
,
1063 IN ULONG InBufferSize
,
1064 OUT PVOID OutBuffer OPTIONAL
,
1065 IN ULONG OutBufferSize
,
1066 OUT PULONG ReturnLength
);
1068 #endif /* (WINVER >= _WIN32_WINNT_VISTA) */
1070 #if (WINVER >= _WIN32_WINNT_WIN7)
1076 IN TRACEHANDLE TraceHandle
,
1077 IN LPCGUID ProviderId
,
1078 IN ULONG ControlCode
,
1080 IN ULONGLONG MatchAnyKeyword
,
1081 IN ULONGLONG MatchAllKeyword
,
1083 IN PENABLE_TRACE_PARAMETERS EnableParameters OPTIONAL
);
1088 TraceSetInformation(
1089 IN TRACEHANDLE SessionHandle
,
1090 IN TRACE_INFO_CLASS InformationClass
,
1091 IN PVOID TraceInformation
,
1092 IN ULONG InformationLength
);
1094 #endif /* (WINVER >= _WIN32_WINNT_WIN7) */
1096 #endif /* !defined(_WMIKM_) && !defined(_NTDDK_) && !defined(_NTIFS_) */