comctl32/tests: Use CRT allocation functions.
[wine.git] / include / evntrace.h
blob4620d60b031a1170c457e790a739c3a559fded1b
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 #ifndef WMIAPI
29 #ifdef _WMI_SOURCE_
30 #define WMIAPI WINAPI
31 #else
32 #define WMIAPI DECLSPEC_IMPORT WINAPI
33 #endif
34 #endif
36 #define EVENT_TRACE_CONTROL_QUERY 0
37 #define EVENT_TRACE_CONTROL_STOP 1
38 #define EVENT_TRACE_CONTROL_UPDATE 2
39 #define EVENT_TRACE_CONTROL_FLUSH 3
41 #define TRACE_LEVEL_NONE 0
42 #define TRACE_LEVEL_CRITICAL 1
43 #define TRACE_LEVEL_FATAL 1
44 #define TRACE_LEVEL_ERROR 2
45 #define TRACE_LEVEL_WARNING 3
46 #define TRACE_LEVEL_INFORMATION 4
47 #define TRACE_LEVEL_VERBOSE 5
49 #define EVENT_TRACE_FILE_MODE_NONE 0x00000000
50 #define EVENT_TRACE_FILE_MODE_SEQUENTIAL 0x00000001
51 #define EVENT_TRACE_FILE_MODE_CIRCULAR 0x00000002
52 #define EVENT_TRACE_FILE_MODE_APPEND 0x00000004
53 #define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008
54 #define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020
55 #define EVENT_TRACE_NONSTOPPABLE_MODE 0x00000040
56 #define EVENT_TRACE_SECURE_MODE 0x00000080
57 #define EVENT_TRACE_REAL_TIME_MODE 0x00000100
58 #define EVENT_TRACE_DELAY_OPEN_FILE_MODE 0x00000200
59 #define EVENT_TRACE_BUFFERING_MODE 0x00000400
60 #define EVENT_TRACE_PRIVATE_LOGGER_MODE 0x00000800
61 #define EVENT_TRACE_ADD_HEADER_MODE 0x00001000
62 #define EVENT_TRACE_USE_KBYTES_FOR_SIZE 0x00002000
63 #define EVENT_TRACE_USE_GLOBAL_SEQUENCE 0x00004000
64 #define EVENT_TRACE_USE_LOCAL_SEQUENCE 0x00008000
65 #define EVENT_TRACE_RELOG_MODE 0x00010000
66 #define EVENT_TRACE_PRIVATE_IN_PROC 0x00020000
67 #define EVENT_TRACE_MODE_RESERVED 0x00100000
68 #define EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN 0x00400000
69 #define EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN 0x00800000
70 #define EVENT_TRACE_USE_PAGED_MEMORY 0x01000000
71 #define EVENT_TRACE_SYSTEM_LOGGER_MODE 0x02000000
72 #define EVENT_TRACE_INDEPENDENT_SESSION_MODE 0x08000000
73 #define EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 0x10000000
74 #define EVENT_TRACE_ADDTO_TRIAGE_DUMP 0x80000000
76 DEFINE_GUID (SystemTraceControlGuid, 0x9e814aad, 0x3204, 0x11d2, 0x9a, 0x82, 0x00, 0x60, 0x08, 0xa8, 0x69, 0x39);
78 typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
80 struct _EVENT_TRACE_LOGFILEA;
81 struct _EVENT_TRACE_LOGFILEW;
83 typedef struct _EVENT_TRACE_LOGFILEA EVENT_TRACE_LOGFILEA, *PEVENT_TRACE_LOGFILEA;
84 typedef struct _EVENT_TRACE_LOGFILEW EVENT_TRACE_LOGFILEW, *PEVENT_TRACE_LOGFILEW;
86 typedef ULONG (WINAPI * PEVENT_TRACE_BUFFER_CALLBACKA)( PEVENT_TRACE_LOGFILEA );
87 typedef ULONG (WINAPI * PEVENT_TRACE_BUFFER_CALLBACKW)( PEVENT_TRACE_LOGFILEW );
89 typedef ULONG (WINAPI * WMIDPREQUEST)( WMIDPREQUESTCODE, PVOID, ULONG*, PVOID );
91 typedef struct _TRACE_GUID_REGISTRATION
93 LPCGUID Guid;
94 HANDLE RegHandle;
95 } TRACE_GUID_REGISTRATION, *PTRACE_GUID_REGISTRATION;
97 typedef struct _TRACE_GUID_PROPERTIES {
98 GUID Guid;
99 ULONG GuidType;
100 ULONG LoggerId;
101 ULONG EnableLevel;
102 ULONG EnableFlags;
103 BOOLEAN IsEnable;
104 } TRACE_GUID_PROPERTIES, *PTRACE_GUID_PROPERTIES;
106 typedef struct _EVENT_TRACE_HEADER
108 USHORT Size;
109 union
111 USHORT FieldTypeFlags;
112 struct
114 UCHAR HeaderType;
115 UCHAR MarkerFlags;
116 } DUMMYSTRUCTNAME;
117 } DUMMYUNIONNAME;
118 union
120 ULONG Version;
121 struct
123 UCHAR Type;
124 UCHAR Level;
125 USHORT Version;
126 } Class;
127 } DUMMYUNIONNAME1;
128 ULONG ThreadId;
129 ULONG ProcessId;
130 LARGE_INTEGER TimeStamp;
131 union
133 GUID Guid;
134 ULONGLONG GuidPtr;
135 } DUMMYUNIONNAME2;
136 union
138 struct
140 ULONG ClientContext;
141 ULONG Flags;
142 } DUMMYSTRUCTNAME1;
143 struct
145 ULONG KernelTime;
146 ULONG UserTime;
147 } DUMMYSTRUCTNAME2;
148 } DUMMYUNIONNAME3;
149 } EVENT_TRACE_HEADER, *PEVENT_TRACE_HEADER;
151 typedef struct _EVENT_TRACE
153 EVENT_TRACE_HEADER Header;
154 ULONG InstanceId;
155 ULONG ParentInstanceId;
156 GUID ParentGuid;
157 PVOID MofData;
158 ULONG MofLength;
159 ULONG ClientContext;
160 } EVENT_TRACE, *PEVENT_TRACE;
162 typedef VOID (WINAPI * PEVENT_CALLBACK)( PEVENT_TRACE );
164 typedef struct _TRACE_LOGFILE_HEADER
166 ULONG BufferSize;
167 union
169 ULONG Version;
170 struct
172 UCHAR MajorVersion;
173 UCHAR MinorVersion;
174 UCHAR SubVersion;
175 UCHAR SubMinorVersion;
176 } VersionDetail;
177 } DUMMYUNIONNAME;
178 ULONG ProviderVersion;
179 ULONG NumberOfProcessors;
180 LARGE_INTEGER EndTime;
181 ULONG TimerResolution;
182 ULONG MaximumFileSize;
183 ULONG LogFileMode;
184 ULONG BuffersWritten;
185 union
187 GUID LogInstanceGuid;
188 struct
190 ULONG StartBuffers;
191 ULONG PointerSize;
192 ULONG EventsLost;
193 ULONG CpuSpeedInMHZ;
194 } DUMMYSTRUCTNAME;
195 } DUMMYUNIONNAME1;
196 LPWSTR LoggerName;
197 LPWSTR LogFileName;
198 TIME_ZONE_INFORMATION TimeZone;
199 LARGE_INTEGER BootTime;
200 LARGE_INTEGER PerfFreq;
201 LARGE_INTEGER StartTime;
202 ULONG ReservedTime;
203 ULONG BuffersLost;
204 } TRACE_LOGFILE_HEADER, *PTRACE_LOGFILE_HEADER;
206 struct _EVENT_TRACE_LOGFILEW
208 LPWSTR LogFileName;
209 LPWSTR LoggerName;
210 LONGLONG CurrentTime;
211 ULONG LogFileMode;
212 EVENT_TRACE CurrentEvent;
213 TRACE_LOGFILE_HEADER LogfileHeader;
214 PEVENT_TRACE_BUFFER_CALLBACKW BufferCallback;
215 ULONG BufferSize;
216 ULONG Filled;
217 ULONG EventsLost;
218 PEVENT_CALLBACK EventCallback;
219 PVOID Context;
222 struct _EVENT_TRACE_LOGFILEA
224 LPSTR LogFileName;
225 LPSTR LoggerName;
226 LONGLONG CurrentTime;
227 ULONG LogFileMode;
228 EVENT_TRACE CurrentEvent;
229 TRACE_LOGFILE_HEADER LogfileHeader;
230 PEVENT_TRACE_BUFFER_CALLBACKA BufferCallback;
231 ULONG BufferSize;
232 ULONG Filled;
233 ULONG EventsLost;
234 PEVENT_CALLBACK EventCallback;
235 PVOID Context;
238 typedef struct _EVENT_TRACE_PROPERTIES
240 WNODE_HEADER Wnode;
241 ULONG BufferSize;
242 ULONG MinimumBuffers;
243 ULONG MaximumBuffers;
244 ULONG MaximumFileSize;
245 ULONG LogFileMode;
246 ULONG FlushTimer;
247 ULONG EnableFlags;
248 LONG AgeLimit;
249 ULONG NumberOfBuffers;
250 ULONG FreeBuffers;
251 ULONG EventsLost;
252 ULONG BuffersWritten;
253 ULONG LogBuffersLost;
254 ULONG RealTimeBuffersLost;
255 HANDLE LoggerThreadId;
256 ULONG LogFileNameOffset;
257 ULONG LoggerNameOffset;
258 } EVENT_TRACE_PROPERTIES, *PEVENT_TRACE_PROPERTIES;
260 typedef struct _ENABLE_TRACE_PARAMETERS
262 ULONG Version;
263 ULONG EnableProperty;
264 ULONG ControlFlags;
265 GUID SourceId;
266 struct _EVENT_FILTER_DESCRIPTOR *EnableFilterDesc;
267 ULONG FilterDescCount;
268 } ENABLE_TRACE_PARAMETERS, *PENABLE_TRACE_PARAMETERS;
270 typedef enum _TRACE_QUERY_INFO_CLASS
272 TraceGuidQueryList,
273 TraceGuidQueryInfo,
274 TraceGuidQueryProcess,
275 TraceStackTracingInfo,
276 TraceSystemTraceEnableFlagsInfo,
277 TraceSampledProfileIntervalInfo,
278 TraceProfileSourceConfigInfo,
279 TraceProfileSourceListInfo,
280 TracePmcEventListInfo,
281 TracePmcCounterListInfo,
282 TraceSetDisallowList,
283 TraceVersionInfo,
284 TraceGroupQueryList,
285 TraceGroupQueryInfo,
286 TraceDisallowListQuery,
287 TraceCompressionInfo,
288 TracePeriodicCaptureStateListInfo,
289 TracePeriodicCaptureStateInfo,
290 TraceProviderBinaryTracking,
291 TraceMaxLoggersQuery,
292 MaxTraceSetInfoClass
293 } TRACE_QUERY_INFO_CLASS, TRACE_INFO_CLASS;
295 #define INVALID_PROCESSTRACE_HANDLE ((TRACEHANDLE)~(ULONG_PTR)0)
297 ULONG WMIAPI CloseTrace(TRACEHANDLE);
298 ULONG WMIAPI ControlTraceA(TRACEHANDLE,LPCSTR,PEVENT_TRACE_PROPERTIES,ULONG);
299 ULONG WMIAPI ControlTraceW(TRACEHANDLE,LPCWSTR,PEVENT_TRACE_PROPERTIES,ULONG);
300 #define ControlTrace WINELIB_NAME_AW(ControlTrace)
301 ULONG WMIAPI EnableTrace(ULONG,ULONG,ULONG,LPCGUID,TRACEHANDLE);
302 ULONG WMIAPI EnableTraceEx2(TRACEHANDLE,LPCGUID,ULONG,UCHAR,ULONGLONG,ULONGLONG,ULONG,PENABLE_TRACE_PARAMETERS);
303 ULONG WMIAPI FlushTraceA(TRACEHANDLE,LPCSTR,PEVENT_TRACE_PROPERTIES);
304 ULONG WMIAPI FlushTraceW(TRACEHANDLE,LPCWSTR,PEVENT_TRACE_PROPERTIES);
305 #define FlushTrace WINELIB_NAME_AW(FlushTrace)
306 ULONG WMIAPI GetTraceEnableFlags(TRACEHANDLE);
307 UCHAR WMIAPI GetTraceEnableLevel(TRACEHANDLE);
308 TRACEHANDLE WMIAPI GetTraceLoggerHandle(PVOID);
309 ULONG WMIAPI QueryAllTracesA(PEVENT_TRACE_PROPERTIES*,ULONG,PULONG);
310 ULONG WMIAPI QueryAllTracesW(PEVENT_TRACE_PROPERTIES*,ULONG,PULONG);
311 #define QueryAllTraces WINELIB_NAME_AW(QueryAllTraces)
312 ULONG WMIAPI RegisterTraceGuidsA(WMIDPREQUEST,PVOID,LPCGUID,ULONG,PTRACE_GUID_REGISTRATION,LPCSTR,LPCSTR,PTRACEHANDLE);
313 ULONG WMIAPI RegisterTraceGuidsW(WMIDPREQUEST,PVOID,LPCGUID,ULONG,PTRACE_GUID_REGISTRATION,LPCWSTR,LPCWSTR,PTRACEHANDLE);
314 #define RegisterTraceGuids WINELIB_NAME_AW(RegisterTraceGuids)
315 ULONG WMIAPI StartTraceA(PTRACEHANDLE,LPCSTR,PEVENT_TRACE_PROPERTIES);
316 ULONG WMIAPI StartTraceW(PTRACEHANDLE,LPCWSTR,PEVENT_TRACE_PROPERTIES);
317 #define StartTrace WINELIB_NAME_AW(StartTrace)
318 ULONG WMIAPI TraceEvent(TRACEHANDLE,PEVENT_TRACE_HEADER);
319 ULONG WINAPIV TraceMessage(TRACEHANDLE,ULONG,LPGUID,USHORT,...);
320 #ifdef __ms_va_list
321 ULONG WMIAPI TraceMessageVa(TRACEHANDLE,ULONG,LPGUID,USHORT,__ms_va_list);
322 #endif
323 ULONG WMIAPI UnregisterTraceGuids(TRACEHANDLE);
325 #ifdef __cplusplus
327 #endif
329 #endif /* _EVNTRACE_ */