source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/relogger.idl@ 1170

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

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

File size: 5.1 KB
Line 
1/*
2 * Copyright 2021 Jacek Caban for CodeWeavers
3 *
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.
8 *
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.
13 *
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
17 */
18
19import "unknwn.idl";
20import "oaidl.idl";
21import "ocidl.idl";
22
23#ifndef __WIDL__
24#define threading(model)
25#endif
26
27typedef struct _EVENT_DESCRIPTOR
28{
29 USHORT Id;
30 UCHAR Version;
31 UCHAR Channel;
32 UCHAR Level;
33 UCHAR Opcode;
34 USHORT Task;
35 ULONGLONG Keyword;
36} EVENT_DESCRIPTOR, *PEVENT_DESCRIPTOR;
37typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR;
38
39typedef struct _EVENT_HEADER
40{
41 USHORT Size;
42 USHORT HeaderType;
43 USHORT Flags;
44 USHORT EventProperty;
45 ULONG ThreadId;
46 ULONG ProcessId;
47 LARGE_INTEGER TimeStamp;
48 GUID ProviderId;
49 EVENT_DESCRIPTOR EventDescriptor;
50 union {
51 struct {
52 ULONG KernelTime;
53 ULONG UserTime;
54 } DUMMYSTRUCTNAME;
55 ULONG64 ProcessorTime;
56 } DUMMYUNIONNAME;
57 GUID ActivityId;
58} EVENT_HEADER, *PEVENT_HEADER;
59
60typedef struct _ETW_BUFFER_CONTEXT
61{
62 union {
63 struct {
64 UCHAR ProcessorNumber;
65 UCHAR Alignment;
66 } DUMMYSTRUCTNAME;
67 USHORT ProcessorIndex;
68 } DUMMYUNIONNAME;
69 USHORT LoggerId;
70} ETW_BUFFER_CONTEXT, *PETW_BUFFER_CONTEXT;
71
72typedef struct _EVENT_HEADER_EXTENDED_DATA_ITEM
73{
74 USHORT Reserved1;
75 USHORT ExtType;
76 USHORT Linkage;
77 USHORT DataSize;
78 ULONGLONG DataPtr;
79} EVENT_HEADER_EXTENDED_DATA_ITEM, *PEVENT_HEADER_EXTENDED_DATA_ITEM;
80
81typedef struct _EVENT_RECORD
82{
83 EVENT_HEADER EventHeader;
84 ETW_BUFFER_CONTEXT BufferContext;
85 USHORT ExtendedDataCount;
86 USHORT UserDataLength;
87 EVENT_HEADER_EXTENDED_DATA_ITEM *ExtendedData;
88 void *UserData;
89 void *UserContext;
90} EVENT_RECORD, *PEVENT_RECORD;
91
92typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
93
94[
95 object,
96 uuid(8cc97f40-9028-4ff3-9b62-7d1f79ca7bcb),
97 local
98]
99interface ITraceEvent : IUnknown
100{
101 HRESULT Clone([out, retval] ITraceEvent **NewEvent);
102
103 HRESULT GetUserContext([out, retval] void **UserContext);
104
105 HRESULT GetEventRecord([out, retval] PEVENT_RECORD *EventRecord);
106
107 HRESULT SetPayload([in, size_is(PayloadSize)] BYTE *Payload,
108 [in] ULONG PayloadSize);
109
110 HRESULT SetEventDescriptor([in] PCEVENT_DESCRIPTOR EventDescriptor);
111
112 HRESULT SetProcessId([in] ULONG ProcessId);
113
114 HRESULT SetProcessorIndex([in] ULONG ProcessorIndex);
115
116 HRESULT SetThreadId([in] ULONG ThreadId);
117
118 HRESULT SetThreadTimes([in] ULONG KernelTime,
119 [in] ULONG UserTime);
120
121 HRESULT SetActivityId([in] LPCGUID ActivityId);
122
123 HRESULT SetTimeStamp([in] LARGE_INTEGER *TimeStamp);
124
125 HRESULT SetProviderId([in] LPCGUID ProviderId);
126}
127
128interface ITraceRelogger;
129
130[
131 object,
132 uuid(3ed25501-593f-43e9-8f38-3ab46f5a4a52)
133]
134interface ITraceEventCallback : IUnknown
135{
136 HRESULT OnBeginProcessTrace([in] ITraceEvent *HeaderEvent,
137 [in] ITraceRelogger *Relogger);
138
139 HRESULT OnFinalizeProcessTrace([in] ITraceRelogger *Relogger);
140
141 HRESULT OnEvent([in] ITraceEvent *Event,
142 [in] ITraceRelogger *Relogger);
143}
144
145[
146 object,
147 uuid(f754ad43-3bcc-4286-8009-9c5da214e84e),
148 local
149]
150interface ITraceRelogger : IUnknown
151{
152 HRESULT AddLogfileTraceStream([in] BSTR LogfileName,
153 [in] void *UserContext,
154 [out, retval] TRACEHANDLE *TraceHandle);
155
156 HRESULT AddRealtimeTraceStream([in] BSTR LoggerName,
157 [in] void *UserContext,
158 [out, retval] TRACEHANDLE *TraceHandle);
159
160 HRESULT RegisterCallback([in] ITraceEventCallback *Callback);
161
162 HRESULT Inject([in] ITraceEvent *Event);
163
164 HRESULT CreateEventInstance([in] TRACEHANDLE TraceHandle,
165 [in] ULONG Flags,
166 [out, retval] ITraceEvent **Event);
167
168 HRESULT ProcessTrace();
169
170 HRESULT SetOutputFilename([in] BSTR LogfileName);
171
172 HRESULT SetCompressionMode([in] BOOLEAN CompressionMode);
173
174 HRESULT Cancel();
175}
176
177[
178 uuid(7b40792d-05ff-44c4-9058-f440c71f17d4),
179 threading(both)
180]
181coclass CTraceRelogger
182{
183 [default] interface ITraceRelogger;
184}
Note: See TracBrowser for help on using the repository browser.