kernel32/tests: Fix a race condition in test_QueryInformationJobObject().
[wine.git] / include / evntrace.h
blob2c1c625583db4f2d1758fb1fce0d44a0b1eee9de
1 /*
2 * Copyright (C) 2005 Mike McCormack
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef _EVNTRACE_
20 #define _EVNTRACE_
22 #include <guiddef.h>
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
28 #define EVENT_TRACE_CONTROL_QUERY 0
29 #define EVENT_TRACE_CONTROL_STOP 1
30 #define EVENT_TRACE_CONTROL_UPDATE 2
31 #define EVENT_TRACE_CONTROL_FLUSH 3
33 #define TRACE_LEVEL_NONE 0
34 #define TRACE_LEVEL_CRITICAL 1
35 #define TRACE_LEVEL_FATAL 1
36 #define TRACE_LEVEL_ERROR 2
37 #define TRACE_LEVEL_WARNING 3
38 #define TRACE_LEVEL_INFORMATION 4
39 #define TRACE_LEVEL_VERBOSE 5
41 #define EVENT_TRACE_FILE_MODE_NONE 0x00000000
42 #define EVENT_TRACE_FILE_MODE_SEQUENTIAL 0x00000001
43 #define EVENT_TRACE_FILE_MODE_CIRCULAR 0x00000002
44 #define EVENT_TRACE_FILE_MODE_APPEND 0x00000004
45 #define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008
46 #define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020
47 #define EVENT_TRACE_NONSTOPPABLE_MODE 0x00000040
48 #define EVENT_TRACE_SECURE_MODE 0x00000080
49 #define EVENT_TRACE_REAL_TIME_MODE 0x00000100
50 #define EVENT_TRACE_DELAY_OPEN_FILE_MODE 0x00000200
51 #define EVENT_TRACE_BUFFERING_MODE 0x00000400
52 #define EVENT_TRACE_PRIVATE_LOGGER_MODE 0x00000800
53 #define EVENT_TRACE_ADD_HEADER_MODE 0x00001000
54 #define EVENT_TRACE_USE_KBYTES_FOR_SIZE 0x00002000
55 #define EVENT_TRACE_USE_GLOBAL_SEQUENCE 0x00004000
56 #define EVENT_TRACE_USE_LOCAL_SEQUENCE 0x00008000
57 #define EVENT_TRACE_RELOG_MODE 0x00010000
58 #define EVENT_TRACE_PRIVATE_IN_PROC 0x00020000
59 #define EVENT_TRACE_MODE_RESERVED 0x00100000
60 #define EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN 0x00400000
61 #define EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN 0x00800000
62 #define EVENT_TRACE_USE_PAGED_MEMORY 0x01000000
63 #define EVENT_TRACE_SYSTEM_LOGGER_MODE 0x02000000
64 #define EVENT_TRACE_INDEPENDENT_SESSION_MODE 0x08000000
65 #define EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 0x10000000
66 #define EVENT_TRACE_ADDTO_TRIAGE_DUMP 0x80000000
68 DEFINE_GUID (SystemTraceControlGuid, 0x9e814aad, 0x3204, 0x11d2, 0x9a, 0x82, 0x00, 0x60, 0x08, 0xa8, 0x69, 0x39);
70 typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
72 struct _EVENT_TRACE_LOGFILEA;
73 struct _EVENT_TRACE_LOGFILEW;
75 typedef struct _EVENT_TRACE_LOGFILEA EVENT_TRACE_LOGFILEA, *PEVENT_TRACE_LOGFILEA;
76 typedef struct _EVENT_TRACE_LOGFILEW EVENT_TRACE_LOGFILEW, *PEVENT_TRACE_LOGFILEW;
78 typedef ULONG (WINAPI * PEVENT_TRACE_BUFFER_CALLBACKA)( PEVENT_TRACE_LOGFILEA );
79 typedef ULONG (WINAPI * PEVENT_TRACE_BUFFER_CALLBACKW)( PEVENT_TRACE_LOGFILEW );
81 typedef ULONG (WINAPI * WMIDPREQUEST)( WMIDPREQUESTCODE, PVOID, ULONG*, PVOID );
83 typedef struct _TRACE_GUID_REGISTRATION
85 LPCGUID Guid;
86 HANDLE RegHandle;
87 } TRACE_GUID_REGISTRATION, *PTRACE_GUID_REGISTRATION;
89 typedef struct _TRACE_GUID_PROPERTIES {
90 GUID Guid;
91 ULONG GuidType;
92 ULONG LoggerId;
93 ULONG EnableLevel;
94 ULONG EnableFlags;
95 BOOLEAN IsEnable;
96 } TRACE_GUID_PROPERTIES, *PTRACE_GUID_PROPERTIES;
98 typedef struct _EVENT_TRACE_HEADER
100 USHORT Size;
101 union
103 USHORT FieldTypeFlags;
104 struct
106 UCHAR HeaderType;
107 UCHAR MarkerFlags;
108 } DUMMYSTRUCTNAME;
109 } DUMMYUNIONNAME;
110 union
112 ULONG Version;
113 struct
115 UCHAR Type;
116 UCHAR Level;
117 USHORT Version;
118 } Class;
119 } DUMMYUNIONNAME1;
120 ULONG ThreadId;
121 ULONG ProcessId;
122 LARGE_INTEGER TimeStamp;
123 union
125 GUID Guid;
126 ULONGLONG GuidPtr;
127 } DUMMYUNIONNAME2;
128 union
130 struct
132 ULONG ClientContext;
133 ULONG Flags;
134 } DUMMYSTRUCTNAME1;
135 struct
137 ULONG KernelTime;
138 ULONG UserTime;
139 } DUMMYSTRUCTNAME2;
140 } DUMMYUNIONNAME3;
141 } EVENT_TRACE_HEADER, *PEVENT_TRACE_HEADER;
143 typedef struct _EVENT_TRACE
145 EVENT_TRACE_HEADER Header;
146 ULONG InstanceId;
147 ULONG ParentInstanceId;
148 GUID ParentGuid;
149 PVOID MofData;
150 ULONG MofLength;
151 ULONG ClientContext;
152 } EVENT_TRACE, *PEVENT_TRACE;
154 typedef VOID (WINAPI * PEVENT_CALLBACK)( PEVENT_TRACE );
156 typedef struct _TRACE_LOGFILE_HEADER
158 ULONG BufferSize;
159 union
161 ULONG Version;
162 struct
164 UCHAR MajorVersion;
165 UCHAR MinorVersion;
166 UCHAR SubVersion;
167 UCHAR SubMinorVersion;
168 } VersionDetail;
169 } DUMMYUNIONNAME;
170 ULONG ProviderVersion;
171 ULONG NumberOfProcessors;
172 LARGE_INTEGER EndTime;
173 ULONG TimerResolution;
174 ULONG MaximumFileSize;
175 ULONG LogFileMode;
176 ULONG BuffersWritten;
177 union
179 GUID LogInstanceGuid;
180 struct
182 ULONG StartBuffers;
183 ULONG PointerSize;
184 ULONG EventsLost;
185 ULONG CpuSpeedInMHZ;
186 } DUMMYSTRUCTNAME;
187 } DUMMYUNIONNAME1;
188 LPWSTR LoggerName;
189 LPWSTR LogFileName;
190 TIME_ZONE_INFORMATION TimeZone;
191 LARGE_INTEGER BootTime;
192 LARGE_INTEGER PerfFreq;
193 LARGE_INTEGER StartTime;
194 ULONG ReservedTime;
195 ULONG BuffersLost;
196 } TRACE_LOGFILE_HEADER, *PTRACE_LOGFILE_HEADER;
198 struct _EVENT_TRACE_LOGFILEW
200 LPWSTR LogFileName;
201 LPWSTR LoggerName;
202 LONGLONG CurrentTime;
203 ULONG LogFileMode;
204 EVENT_TRACE CurrentEvent;
205 TRACE_LOGFILE_HEADER LogfileHeader;
206 PEVENT_TRACE_BUFFER_CALLBACKW BufferCallback;
207 ULONG BufferSize;
208 ULONG Filled;
209 ULONG EventsLost;
210 PEVENT_CALLBACK EventCallback;
211 PVOID Context;
214 struct _EVENT_TRACE_LOGFILEA
216 LPSTR LogFileName;
217 LPSTR LoggerName;
218 LONGLONG CurrentTime;
219 ULONG LogFileMode;
220 EVENT_TRACE CurrentEvent;
221 TRACE_LOGFILE_HEADER LogfileHeader;
222 PEVENT_TRACE_BUFFER_CALLBACKA BufferCallback;
223 ULONG BufferSize;
224 ULONG Filled;
225 ULONG EventsLost;
226 PEVENT_CALLBACK EventCallback;
227 PVOID Context;
230 typedef struct _EVENT_TRACE_PROPERTIES
232 WNODE_HEADER Wnode;
233 ULONG BufferSize;
234 ULONG MinimumBuffers;
235 ULONG MaximumBuffers;
236 ULONG MaximumFileSize;
237 ULONG LogFileMode;
238 ULONG FlushTimer;
239 ULONG EnableFlags;
240 LONG AgeLimit;
241 ULONG NumberOfBuffers;
242 ULONG FreeBuffers;
243 ULONG EventsLost;
244 ULONG BuffersWritten;
245 ULONG LogBuffersLost;
246 ULONG RealTimeBuffersLost;
247 HANDLE LoggerThreadId;
248 ULONG LogFileNameOffset;
249 ULONG LoggerNameOffset;
250 } EVENT_TRACE_PROPERTIES, *PEVENT_TRACE_PROPERTIES;
252 typedef struct _ENABLE_TRACE_PARAMETERS
254 ULONG Version;
255 ULONG EnableProperty;
256 ULONG ControlFlags;
257 GUID SourceId;
258 struct _EVENT_FILTER_DESCRIPTOR *EnableFilterDesc;
259 ULONG FilterDescCount;
260 } ENABLE_TRACE_PARAMETERS, *PENABLE_TRACE_PARAMETERS;
262 typedef enum _TRACE_QUERY_INFO_CLASS
264 TraceGuidQueryList,
265 TraceGuidQueryInfo,
266 TraceGuidQueryProcess,
267 TraceStackTracingInfo,
268 TraceSystemTraceEnableFlagsInfo,
269 TraceSampledProfileIntervalInfo,
270 TraceProfileSourceConfigInfo,
271 TraceProfileSourceListInfo,
272 TracePmcEventListInfo,
273 TracePmcCounterListInfo,
274 TraceSetDisallowList,
275 TraceVersionInfo,
276 TraceGroupQueryList,
277 TraceGroupQueryInfo,
278 TraceDisallowListQuery,
279 TraceCompressionInfo,
280 TracePeriodicCaptureStateListInfo,
281 TracePeriodicCaptureStateInfo,
282 TraceProviderBinaryTracking,
283 TraceMaxLoggersQuery,
284 MaxTraceSetInfoClass
285 } TRACE_QUERY_INFO_CLASS, TRACE_INFO_CLASS;
287 #define INVALID_PROCESSTRACE_HANDLE ((TRACEHANDLE)~(ULONG_PTR)0)
289 ULONG WINAPI CloseTrace(TRACEHANDLE);
290 ULONG WINAPI ControlTraceA(TRACEHANDLE,LPCSTR,PEVENT_TRACE_PROPERTIES,ULONG);
291 ULONG WINAPI ControlTraceW(TRACEHANDLE,LPCWSTR,PEVENT_TRACE_PROPERTIES,ULONG);
292 #define ControlTrace WINELIB_NAME_AW(ControlTrace)
293 ULONG WINAPI EnableTrace(ULONG,ULONG,ULONG,LPCGUID,TRACEHANDLE);
294 ULONG WINAPI EnableTraceEx2(TRACEHANDLE,LPCGUID,ULONG,UCHAR,ULONGLONG,ULONGLONG,ULONG,PENABLE_TRACE_PARAMETERS);
295 ULONG WINAPI FlushTraceA(TRACEHANDLE,LPCSTR,PEVENT_TRACE_PROPERTIES);
296 ULONG WINAPI FlushTraceW(TRACEHANDLE,LPCWSTR,PEVENT_TRACE_PROPERTIES);
297 #define FlushTrace WINELIB_NAME_AW(FlushTrace)
298 ULONG WINAPI GetTraceEnableFlags(TRACEHANDLE);
299 UCHAR WINAPI GetTraceEnableLevel(TRACEHANDLE);
300 TRACEHANDLE WINAPI GetTraceLoggerHandle(PVOID);
301 ULONG WINAPI QueryAllTracesA(PEVENT_TRACE_PROPERTIES*,ULONG,PULONG);
302 ULONG WINAPI QueryAllTracesW(PEVENT_TRACE_PROPERTIES*,ULONG,PULONG);
303 #define QueryAllTraces WINELIB_NAME_AW(QueryAllTraces)
304 ULONG WINAPI RegisterTraceGuidsA(WMIDPREQUEST,PVOID,LPCGUID,ULONG,PTRACE_GUID_REGISTRATION,LPCSTR,LPCSTR,PTRACEHANDLE);
305 ULONG WINAPI RegisterTraceGuidsW(WMIDPREQUEST,PVOID,LPCGUID,ULONG,PTRACE_GUID_REGISTRATION,LPCWSTR,LPCWSTR,PTRACEHANDLE);
306 #define RegisterTraceGuids WINELIB_NAME_AW(RegisterTraceGuids)
307 ULONG WINAPI StartTraceA(PTRACEHANDLE,LPCSTR,PEVENT_TRACE_PROPERTIES);
308 ULONG WINAPI StartTraceW(PTRACEHANDLE,LPCWSTR,PEVENT_TRACE_PROPERTIES);
309 #define StartTrace WINELIB_NAME_AW(StartTrace)
310 ULONG WINAPI TraceEvent(TRACEHANDLE,PEVENT_TRACE_HEADER);
311 ULONG WINAPIV TraceMessage(TRACEHANDLE,ULONG,LPGUID,USHORT,...);
312 ULONG WINAPI TraceMessageVa(TRACEHANDLE,ULONG,LPGUID,USHORT,__ms_va_list);
313 ULONG WINAPI UnregisterTraceGuids(TRACEHANDLE);
315 #ifdef __cplusplus
317 #endif
319 #endif /* _EVNTRACE_ */