source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/evntprov.h@ 1180

Last change on this file since 1180 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 6.8 KB
RevLine 
[1166]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 * evntprov.h
7 *
8 * This file is part of the ReactOS PSDK package.
9 *
10 * Contributors:
11 * Created by Amine Khaldi.
12 * Extended by Kai Tietz for mingw-w64
13 *
14 * THIS SOFTWARE IS NOT COPYRIGHTED
15 *
16 * This source code is offered for use in the public domain. You may
17 * use, modify or distribute it freely.
18 *
19 * This code is distributed in the hope that it will be useful but
20 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
21 * DISCLAIMED. This includes but is not limited to warranties of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
23 *
24 */
25
26#ifndef _EVNTPROV_H_
27#define _EVNTPROV_H_
28
29#include <winapifamily.h>
30
31#if !defined (EVNTAPI) && !defined (__WIDL__) && !defined (MIDL_PASS)
32#ifdef _EVNT_SOURCE_
33#ifdef _ARM_
34#define EVNTAPI
35#else
36#define EVNTAPI __stdcall
37#endif
38#else
39#ifdef _ARM_
40#define EVNTAPI DECLSPEC_IMPORT
41#else
42#define EVNTAPI DECLSPEC_IMPORT __stdcall
43#endif
44#endif
45#endif
46
47#define EVENT_MIN_LEVEL (0)
48#define EVENT_MAX_LEVEL (0xff)
49
50#define EVENT_ACTIVITY_CTRL_GET_ID (1)
51#define EVENT_ACTIVITY_CTRL_SET_ID (2)
52#define EVENT_ACTIVITY_CTRL_CREATE_ID (3)
53#define EVENT_ACTIVITY_CTRL_GET_SET_ID (4)
54#define EVENT_ACTIVITY_CTRL_CREATE_SET_ID (5)
55
56#define EVENT_FILTER_TYPE_SCHEMATIZED (0x80000000)
57#define EVENT_FILTER_TYPE_SYSTEM_FLAGS (0x80000001)
58#define EVENT_FILTER_TYPE_TRACEHANDLE (0x80000002)
59
60#define MAX_EVENT_DATA_DESCRIPTORS (128)
61#define MAX_EVENT_FILTER_DATA_SIZE (1024)
62
63#ifdef __cplusplus
64extern "C" {
65#endif
66
67#include <guiddef.h>
68
69 typedef ULONGLONG REGHANDLE,*PREGHANDLE;
70
71 typedef struct _EVENT_DATA_DESCRIPTOR {
72 ULONGLONG Ptr;
73 ULONG Size;
74 ULONG Reserved;
75 } EVENT_DATA_DESCRIPTOR,*PEVENT_DATA_DESCRIPTOR;
76
77#ifndef EVENT_DESCRIPTOR_DEF
78#define EVENT_DESCRIPTOR_DEF
79 typedef struct _EVENT_DESCRIPTOR {
80 USHORT Id;
81 UCHAR Version;
82 UCHAR Channel;
83 UCHAR Level;
84 UCHAR Opcode;
85 USHORT Task;
86 ULONGLONG Keyword;
87 } EVENT_DESCRIPTOR,*PEVENT_DESCRIPTOR;
88 typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR;
89#endif
90
91 struct _EVENT_FILTER_DESCRIPTOR {
92 ULONGLONG Ptr;
93 ULONG Size;
94 ULONG Type;
95 };
96
97#ifndef DEFINED_PEVENT_FILTER_DESC
98#define DEFINED_PEVENT_FILTER_DESC
99 typedef struct _EVENT_FILTER_DESCRIPTOR EVENT_FILTER_DESCRIPTOR,*PEVENT_FILTER_DESCRIPTOR;
100#endif /* for evntrace.h */
101
102 typedef struct _EVENT_FILTER_HEADER {
103 USHORT Id;
104 UCHAR Version;
105 UCHAR Reserved[5];
106 ULONGLONG InstanceId;
107 ULONG Size;
108 ULONG NextOffset;
109 } EVENT_FILTER_HEADER,*PEVENT_FILTER_HEADER;
110
111#if !defined (_ETW_KM_) && !defined (__WIDL__) /* for wdm.h & widl */
112 typedef enum _EVENT_INFO_CLASS {
113 EventProviderBinaryTrackInfo,
114 MaxEventInfo
115 } EVENT_INFO_CLASS;
116
117 typedef VOID (NTAPI *PENABLECALLBACK) (LPCGUID SourceId, ULONG IsEnabled, UCHAR Level, ULONGLONG MatchAnyKeyword, ULONGLONG MatchAllKeyword, PEVENT_FILTER_DESCRIPTOR FilterData, PVOID CallbackContext);
118
119#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
120#if WINVER >= 0x0600
121 BOOLEAN EVNTAPI EventEnabled (REGHANDLE RegHandle, PCEVENT_DESCRIPTOR EventDescriptor);
122 BOOLEAN EVNTAPI EventProviderEnabled (REGHANDLE RegHandle, UCHAR Level, ULONGLONG Keyword);
123 ULONG EVNTAPI EventWriteTransfer (REGHANDLE RegHandle, PCEVENT_DESCRIPTOR EventDescriptor, LPCGUID ActivityId, LPCGUID RelatedActivityId, ULONG UserDataCount, PEVENT_DATA_DESCRIPTOR UserData);
124 ULONG EVNTAPI EventWriteString (REGHANDLE RegHandle, UCHAR Level, ULONGLONG Keyword, PCWSTR String);
125 ULONG EVNTAPI EventActivityIdControl (ULONG ControlCode, LPGUID ActivityId);
126#endif
127#if WINVER >= 0x0601
128 ULONG EVNTAPI EventWriteEx (REGHANDLE RegHandle, PCEVENT_DESCRIPTOR EventDescriptor, ULONG64 Filter, ULONG Flags, LPCGUID ActivityId, LPCGUID RelatedActivityId, ULONG UserDataCount, PEVENT_DATA_DESCRIPTOR UserData);
129#endif
130#endif
131
132#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
133#if WINVER >= 0x0600
134 ULONG EVNTAPI EventRegister (LPCGUID ProviderId, PENABLECALLBACK EnableCallback, PVOID CallbackContext, PREGHANDLE RegHandle);
135 ULONG EVNTAPI EventUnregister (REGHANDLE RegHandle);
136 ULONG EVNTAPI EventWrite (REGHANDLE RegHandle, PCEVENT_DESCRIPTOR EventDescriptor, ULONG UserDataCount, PEVENT_DATA_DESCRIPTOR UserData);
137#endif
138#if WINVER >= 0x0602
139 ULONG EVNTAPI EventSetInformation (REGHANDLE RegHandle, EVENT_INFO_CLASS InformationClass, PVOID EventInformation, ULONG InformationLength);
140#endif
141#endif
142
143#endif
144
145#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
146 FORCEINLINE VOID EventDataDescCreate (PEVENT_DATA_DESCRIPTOR evp, const VOID *d, ULONG sz) {
147 evp->Ptr = (ULONGLONG) (ULONG_PTR) d;
148 evp->Size = sz;
149 evp->Reserved = 0;
150 }
151#endif
152
153#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
154 FORCEINLINE VOID EventDescCreate (PEVENT_DESCRIPTOR ev, USHORT Id, UCHAR ver, UCHAR ch, UCHAR lvl, USHORT t, UCHAR opc, ULONGLONG keyw) {
155 ev->Id = Id;
156 ev->Version = ver;
157 ev->Channel = ch;
158 ev->Level = lvl;
159 ev->Task = t;
160 ev->Opcode = opc;
161 ev->Keyword = keyw;
162 }
163
164 FORCEINLINE UCHAR EventDescGetChannel (PCEVENT_DESCRIPTOR ev) {
165 return ev->Channel;
166 }
167
168 FORCEINLINE USHORT EventDescGetId (PCEVENT_DESCRIPTOR ev) {
169 return ev->Id;
170 }
171
172 FORCEINLINE ULONGLONG EventDescGetKeyword (PCEVENT_DESCRIPTOR ev) {
173 return ev->Keyword;
174 }
175
176 FORCEINLINE UCHAR EventDescGetLevel (PCEVENT_DESCRIPTOR ev) {
177 return ev->Level;
178 }
179
180 FORCEINLINE UCHAR EventDescGetOpcode (PCEVENT_DESCRIPTOR ev) {
181 return ev->Opcode;
182 }
183
184 FORCEINLINE USHORT EventDescGetTask (PCEVENT_DESCRIPTOR ev) {
185 return ev->Task;
186 }
187
188 FORCEINLINE PEVENT_DESCRIPTOR EventDescOrKeyword (PEVENT_DESCRIPTOR ev, ULONGLONG keyw) {
189 ev->Keyword |= keyw;
190 return ev;
191 }
192
193 FORCEINLINE UCHAR EventDescGetVersion (PCEVENT_DESCRIPTOR ev) {
194 return ev->Version;
195 }
196
197 FORCEINLINE PEVENT_DESCRIPTOR EventDescSetChannel (PEVENT_DESCRIPTOR ev, UCHAR ch) {
198 ev->Channel = ch;
199 return ev;
200 }
201
202 FORCEINLINE PEVENT_DESCRIPTOR EventDescSetId (PEVENT_DESCRIPTOR ev, USHORT Id) {
203 ev->Id = Id;
204 return ev;
205 }
206
207 FORCEINLINE PEVENT_DESCRIPTOR EventDescSetKeyword (PEVENT_DESCRIPTOR ev, ULONGLONG keyw) {
208 ev->Keyword = keyw;
209 return ev;
210 }
211
212 FORCEINLINE PEVENT_DESCRIPTOR EventDescSetLevel (PEVENT_DESCRIPTOR ev, UCHAR lvl) {
213 ev->Level = lvl;
214 return ev;
215 }
216
217 FORCEINLINE PEVENT_DESCRIPTOR EventDescSetOpcode (PEVENT_DESCRIPTOR ev, UCHAR opc) {
218 ev->Opcode = opc;
219 return ev;
220 }
221
222 FORCEINLINE PEVENT_DESCRIPTOR EventDescSetTask (PEVENT_DESCRIPTOR ev, USHORT t) {
223 ev->Task = t;
224 return ev;
225 }
226
227 FORCEINLINE PEVENT_DESCRIPTOR EventDescSetVersion (PEVENT_DESCRIPTOR ev, UCHAR ver) {
228 ev->Version = ver;
229 return ev;
230 }
231
232 FORCEINLINE VOID EventDescZero (PEVENT_DESCRIPTOR ev) {
233 memset (ev, 0, sizeof (EVENT_DESCRIPTOR));
234 }
235#endif
236
237#ifdef __cplusplus
238}
239#endif
240
241#endif
Note: See TracBrowser for help on using the repository browser.