[DDK]
[reactos.git] / include / psdk / evntrace.h
1 #ifndef _EVNTRACE_
2 #define _EVNTRACE_
3
4 #ifndef WMIAPI
5 #ifndef MIDL_PASS
6 #ifdef _WMI_SOURCE_
7 #define WMIAPI __stdcall
8 #else
9 #define WMIAPI DECLSPEC_IMPORT __stdcall
10 #endif
11 #endif
12 #endif
13
14 typedef struct _EVENT_TRACE_PROPERTIES
15 {
16 WNODE_HEADER Wnode;
17 ULONG BufferSize;
18 ULONG MinimumBuffers;
19 ULONG MaximumBuffers;
20 ULONG MaximumFileSize;
21 ULONG LogFileMode;
22 ULONG FlushTimer;
23 ULONG EnableFlags;
24 LONG AgeLimit;
25 ULONG NumberOfBuffers;
26 ULONG FreeBuffers;
27 ULONG EventsLost;
28 ULONG BuffersWritten;
29 ULONG LogBuffersLost;
30 ULONG RealTimeBuffersLost;
31 HANDLE LoggerThreadId;
32 ULONG LogFileNameOffset;
33 ULONG LoggerNameOffset;
34 } EVENT_TRACE_PROPERTIES, *PEVENT_TRACE_PROPERTIES;
35
36 typedef struct _EVENT_TRACE_HEADER
37 {
38 USHORT Size;
39 union {
40 USHORT FieldTypeFlags;
41 struct {
42 UCHAR HeaderType;
43 UCHAR MarkerFlags;
44 };
45 };
46 union {
47 ULONG Version;
48 struct {
49 UCHAR Type;
50 UCHAR Level;
51 USHORT Version;
52 } Class;
53 };
54 ULONG ThreadId;
55 ULONG ProcessId;
56 LARGE_INTEGER TimeStamp;
57 union {
58 GUID Guid;
59 ULONGLONG GuidPtr;
60 };
61 union {
62 struct {
63 ULONG ClientContext;
64 ULONG Flags;
65 };
66 struct {
67 ULONG KernelTime;
68 ULONG UserTime;
69 };
70 ULONG64 ProcessorTime;
71 };
72 } EVENT_TRACE_HEADER;
73
74 #ifndef PEVENT_TRACE_HEADER_DEFINED
75 #define PEVENT_TRACE_HEADER_DEFINED
76 typedef struct _EVENT_TRACE_HEADER *PEVENT_TRACE_HEADER;
77 #endif
78
79
80 typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
81 typedef ULONG (WINAPI *WMIDPREQUEST)(
82 WMIDPREQUESTCODE RequestCode,
83 PVOID RequestContext,
84 ULONG *BufferSize,
85 PVOID Buffer
86 );
87
88 typedef struct _TRACE_GUID_REGISTRATION
89 {
90 LPCGUID Guid;
91 HANDLE RegHandle;
92 } TRACE_GUID_REGISTRATION, *PTRACE_GUID_REGISTRATION;
93
94
95 ULONG WMIAPI TraceEvent(TRACEHANDLE,PEVENT_TRACE_HEADER);
96 TRACEHANDLE WMIAPI GetTraceLoggerHandle(PVOID);
97 ULONG WMIAPI GetTraceEnableFlags(TRACEHANDLE);
98 UCHAR WMIAPI GetTraceEnableLevel(TRACEHANDLE);
99 ULONG WMIAPI RegisterTraceGuidsA(WMIDPREQUEST,PVOID,LPCGUID,ULONG,PTRACE_GUID_REGISTRATION,LPCSTR,LPCSTR,PTRACEHANDLE);
100 ULONG WMIAPI RegisterTraceGuidsW(WMIDPREQUEST,PVOID,LPCGUID,ULONG,PTRACE_GUID_REGISTRATION,LPCWSTR,LPCWSTR,PTRACEHANDLE);
101 ULONG WMIAPI UnregisterTraceGuids(TRACEHANDLE);
102
103 #if defined (UNICODE) || defined (_UNICODE)
104 #define RegisterTraceGuids RegisterTraceGuidsW
105 #else
106 #define RegisterTraceGuids RegisterTraceGuidsA
107 #endif
108
109 #endif /* ENVTRACE_H */
110