ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/relogger.idl
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
File size: 5203 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
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
19 import "unknwn.idl";
20 import "oaidl.idl";
21 import "ocidl.idl";
22
23 #ifndef __WIDL__
24 #define threading(model)
25 #endif
26
27 typedef 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;
37 typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR;
38
39 typedef 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
60 typedef 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
72 typedef 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
81 typedef 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
92 typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
93
94 [
95 object,
96 uuid(8cc97f40-9028-4ff3-9b62-7d1f79ca7bcb),
97 local
98 ]
99 interface 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
128 interface ITraceRelogger;
129
130 [
131 object,
132 uuid(3ed25501-593f-43e9-8f38-3ab46f5a4a52)
133 ]
134 interface 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 ]
150 interface 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 ]
181 coclass CTraceRelogger
182 {
183 [default] interface ITraceRelogger;
184 }