1#include "idl_types.h"
2
3
4import "misc.idl";
5
6cpp_quote("#define MAX_RPC_GUID_ARRAY_COUNT (MAX_PAYLOAD / sizeof(struct GUID))")
7cpp_quote("#define eventlog6_EvtRpcSubscribePull    0x10000000")
8cpp_quote("#define eventlog6_EvtRpcVarFlagsModified 0x00000001")
9
10[
11    uuid (f6beaff7-1e19-4fbb-9f8f-b89e2018337c),
12    version(1.0),
13    endpoint("ncacn_ip_tcp:"),
14    helpstring("Eventlog6"),
15    pointer_default(unique)
16]
17interface eventlog6
18{
19	const int MAX_PAYLOAD                  = 2 * 1024 * 1024;
20	const int MAX_RPC_QUERY_LENGTH         = MAX_PAYLOAD / sizeof(uint16_t);
21	const int MAX_RPC_CHANNEL_NAME_LENGTH  = 512;
22	const int MAX_RPC_QUERY_CHANNEL_SIZE   = 512;
23	const int MAX_RPC_EVENT_ID_SIZE        = 256;
24	const int MAX_RPC_FILE_PATH_LENGTH     = 32768;
25	const int MAX_RPC_CHANNEL_PATH_LENGTH  = 32768;
26	const int MAX_RPC_BOOKMARK_LENGTH      = MAX_PAYLOAD / sizeof(uint16_t);
27	const int MAX_RPC_PUBLISHER_ID_LENGTH  = 2048;
28	const int MAX_RPC_PROPERTY_BUFFER_SIZE = MAX_PAYLOAD;
29	const int MAX_RPC_FILTER_LENGTH        = MAX_RPC_QUERY_LENGTH;
30	const int MAX_RPC_RECORD_COUNT         = 1024;
31	const int MAX_RPC_EVENT_SIZE           = MAX_PAYLOAD;
32	const int MAX_RPC_BATCH_SIZE           = MAX_PAYLOAD;
33	const int MAX_RPC_RENDERED_STRING_SIZE = MAX_PAYLOAD;
34	const int MAX_RPC_CHANNEL_COUNT        = 8192;
35	const int MAX_RPC_PUBLISHER_COUNT      = 8192;
36	const int MAX_RPC_EVENT_METADATA_COUNT = 256;
37	const int MAX_RPC_VARIANT_LIST_COUNT   = 256;
38	const int MAX_RPC_BOOLEAN8_ARRAY_COUNT = MAX_PAYLOAD / sizeof(uint8_t);
39	const int MAX_RPC_UINT32_ARRAY_COUNT   = MAX_PAYLOAD / sizeof(uint32_t);
40	const int MAX_RPC_UINT64_ARRAY_COUNT   = MAX_PAYLOAD / sizeof(uint64_t);
41	const int MAX_RPC_STRING_ARRAY_COUNT   = MAX_PAYLOAD / 512;
42	const int MAX_RPC_STRING_LENGTH        = MAX_PAYLOAD / sizeof(uint16_t);
43
44	typedef struct {
45		uint32 error;
46		uint32 sub_err;
47		uint32 sub_err_param;
48	} eventlog6_RpcInfo;
49
50	typedef struct {
51		[range(0, MAX_RPC_BOOLEAN8_ARRAY_COUNT)] uint32 count;
52		[size_is(count)] boolean8* ptr;
53	} eventlog6_boolean8Array;
54
55	typedef struct {
56		[range(0, MAX_RPC_UINT32_ARRAY_COUNT)] uint32 count;
57		[size_is(count)] uint32* ptr;
58	} eventlog6_UInt32Array;
59
60	typedef struct {
61		[range(0, MAX_RPC_UINT64_ARRAY_COUNT)] uint32 count;
62		[size_is(count)] hyper* ptr;
63	} eventlog6_UInt64Array;
64
65	typedef struct {
66		[range(0, MAX_RPC_STRING_ARRAY_COUNT)] uint32 count;
67		[size_is(count),charset(UTF16),string] uint16 **ptr;
68	} eventlog6_StringArray;
69
70	typedef struct {
71		[range(0, MAX_RPC_GUID_ARRAY_COUNT)] uint32 count;
72		[size_is(count)] GUID* ptr;
73	} eventlog6_GuidArray;
74
75	typedef [v1_enum] enum {
76		EvtRpcVarTypeNull          = 0,
77		EvtRpcVarTypeboolean8      = 1,
78		EvtRpcVarTypeUInt32        = 2,
79		EvtRpcVarTypeUInt64        = 3,
80		EvtRpcVarTypeString        = 4,
81		EvtRpcVarTypeGuid          = 5,
82		EvtRpcVarTypeboolean8Array = 6,
83		EvtRpcVarTypeUInt32Array   = 7,
84		EvtRpcVarTypeUInt64Array   = 8,
85		EvtRpcVarTypeStringArray   = 9,
86		EvtRpcVarTypeGuidArray     = 10
87	} eventlog6_EvtRpcVariantType;
88
89	typedef [v1_enum] enum {
90		EvtRpcChannelPath   = 0,
91		EvtRpcPublisherName = 1
92	} eventlog6_EvtRpcAssertConfigFlags;
93
94	typedef [switch_type(eventlog6_EvtRpcVariantType)] union {
95		[case(EvtRpcVarTypeNull)] int nullVal;
96		[case(EvtRpcVarTypeboolean8)] boolean8 boolean8Val;
97		[case(EvtRpcVarTypeUInt32)] uint32 uint32Val;
98		[case(EvtRpcVarTypeUInt64)] hyper uint64Val;
99		[case(EvtRpcVarTypeString)] [charset(UTF16),string] uint16 *stringVal;
100		[case(EvtRpcVarTypeGuid)] GUID *guidVal;
101		[case(EvtRpcVarTypeboolean8Array)] eventlog6_boolean8Array boolean8Array;
102		[case(EvtRpcVarTypeUInt32Array)] eventlog6_UInt32Array uint32Array;
103		[case(EvtRpcVarTypeUInt64Array)] eventlog6_UInt64Array uint64Array;
104		[case(EvtRpcVarTypeStringArray)] eventlog6_StringArray stringArray;
105		[case(EvtRpcVarTypeGuidArray)] eventlog6_GuidArray guidArray;
106	} eventlog6_EvtRpcVariantUnion;
107
108	typedef struct {
109		eventlog6_EvtRpcVariantType type;
110		uint32 flags;
111		[in,ref,switch_is(type)] eventlog6_EvtRpcVariantUnion *var;
112	} eventlog6_EvtRpcVariant;
113
114	typedef struct {
115		[range(0, MAX_RPC_VARIANT_LIST_COUNT)] uint32 count;
116		[size_is(count)] eventlog6_EvtRpcVariant* props;
117	} eventlog6_EvtRpcVariantList;
118
119	typedef struct {
120		[charset(UTF16),string] uint16 *name;
121		uint32 status;
122	} eventlog6_EvtRpcQueryChannelInfo;
123
124	WERROR eventlog6_EvtRpcRegisterRemoteSubscription(
125		[in, unique, range(0, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *channelPath,
126		[in, range(1, MAX_RPC_QUERY_LENGTH),charset(UTF16),string] uint16 *query,
127		[in, unique, range(0, MAX_RPC_BOOKMARK_LENGTH),charset(UTF16),string] uint16 *bookmarkXml,
128		[in] uint32 flags,
129		[out, ref] policy_handle *handle,
130		[out, ref] policy_handle *control,
131		[out, ref] uint32 *queryChannelInfoSize,
132		[out, size_is(,*queryChannelInfoSize), range(0, MAX_RPC_QUERY_CHANNEL_SIZE)]
133		eventlog6_EvtRpcQueryChannelInfo **queryChannelInfo,
134		[out, ref] eventlog6_RpcInfo *error);
135
136	WERROR eventlog6_EvtRpcRemoteSubscriptionNextAsync(
137		[in, ref] policy_handle *handle,
138		[in] uint32 numRequestedRecords,
139		[in] uint32 flags,
140		[out, ref] uint32 *numActualRecords,
141		[out, size_is(,*numActualRecords), range(0, MAX_RPC_RECORD_COUNT)]
142		uint32 **eventDataIndices,
143		[out, size_is(,*numActualRecords), range(0, MAX_RPC_RECORD_COUNT)]
144		uint32 **eventDataSizes,
145		[out, ref] uint32* resultBufferSize,
146		[out, size_is(,*resultBufferSize), range(0, MAX_RPC_BATCH_SIZE)]
147		uint8 **resultBuffer);
148
149	WERROR eventlog6_EvtRpcRemoteSubscriptionNext(
150		[in, ref] policy_handle *handle,
151		[in] uint32 numRequestedRecords,
152		[in] uint32 timeOut,
153		[in] uint32 flags,
154		[out, ref] uint32 *numActualRecords,
155		[out, size_is(,*numActualRecords), range(0, MAX_RPC_RECORD_COUNT)]
156		uint32 **eventDataIndices,
157		[out, size_is(,*numActualRecords), range(0, MAX_RPC_RECORD_COUNT)]
158		uint32 **eventDataSizes,
159		[out, ref] uint32 *resultBufferSize,
160		[out, size_is(,*resultBufferSize), range(0, MAX_RPC_BATCH_SIZE)]
161		uint8 **resultBuffer);
162
163	WERROR eventlog6_EvtRpcRemoteSubscriptionWaitAsync(
164		[in, ref] policy_handle *handle);
165
166	WERROR eventlog6_EvtRpcRegisterControllableOperation(
167		[out, ref] policy_handle *handle);
168
169	WERROR eventlog6_EvtRpcRegisterLogQuery(
170		[in, unique, range(0, MAX_RPC_CHANNEL_PATH_LENGTH),charset(UTF16),string] uint16 *path,
171		[in, range(1, MAX_RPC_QUERY_LENGTH),charset(UTF16),string] uint16 *query,
172		[in] uint32 flags,
173		[out, ref] policy_handle *handle,
174		[out, ref] policy_handle *opControl,
175		[out, ref] uint32 *queryChannelInfoSize,
176		[out, size_is(,*queryChannelInfoSize), range(0, MAX_RPC_QUERY_CHANNEL_SIZE)]
177		eventlog6_EvtRpcQueryChannelInfo **queryChannelInfo,
178		[out, ref] eventlog6_RpcInfo *error);
179
180	WERROR eventlog6_EvtRpcClearLog(
181		[in, ref] policy_handle *control,
182		[in, range(0, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *channelPath,
183		[in, unique, range(0, MAX_RPC_FILE_PATH_LENGTH),charset(UTF16),string] uint16 *backupPath,
184		[in] uint32 flags,
185		[out, ref] eventlog6_RpcInfo *error);
186
187	WERROR 	eventlog6_EvtRpcExportLog(
188		[in, ref] policy_handle *control,
189		[in, unique, range(0, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *channelPath,
190		[in, range(1, MAX_RPC_QUERY_LENGTH),charset(UTF16),string] uint16 *query,
191		[in, range(1, MAX_RPC_FILE_PATH_LENGTH),charset(UTF16),string] uint16 *backupPath,
192		[in] uint32 flags,
193		[out, ref] eventlog6_RpcInfo *error);
194
195	WERROR eventlog6_EvtRpcLocalizeExportLog(
196		[in, ref] policy_handle *control,
197		[in, range(1, MAX_RPC_FILE_PATH_LENGTH),charset(UTF16),string] uint16 *logFilePath,
198		[in] uint32 locale,
199		[in] uint32 flags,
200		[out, ref] eventlog6_RpcInfo *error);
201
202	WERROR eventlog6_EvtRpcMessageRender(
203		[in, ref] policy_handle *pubCfgObj,
204		[in, range(1, MAX_RPC_EVENT_ID_SIZE)] uint32 sizeEventId,
205		[in, size_is(sizeEventId)] uint8 *eventId,
206		[in] uint32 messageId,
207		[in] eventlog6_EvtRpcVariantList *values,
208		[in] uint32 flags,
209		[in] uint32 maxSizeString,
210		[out, ref] uint32 *actualSizeString,
211		[out, ref] uint32 *neededSizeString,
212		[out, size_is(,*actualSizeString), range(0, MAX_RPC_RENDERED_STRING_SIZE)]
213		uint8 **string,
214		[out, ref] eventlog6_RpcInfo *error);
215
216	WERROR eventlog6_EvtRpcMessageRenderDefault(
217		[in, range(1, MAX_RPC_EVENT_ID_SIZE)] uint32 sizeEventId,
218		[in, size_is(sizeEventId)] uint8 *eventId,
219		[in] uint32 messageId,
220		[in] eventlog6_EvtRpcVariantList *values,
221		[in] uint32 flags,
222		[in] uint32 maxSizeString,
223		[out, ref] uint32 *actualSizeString,
224		[out, ref] uint32 *neededSizeString,
225		[out, size_is(,*actualSizeString), range(0, MAX_RPC_RENDERED_STRING_SIZE)]
226		uint8 **string,
227		[out, ref] eventlog6_RpcInfo *error);
228
229	WERROR eventlog6_EvtRpcQueryNext(
230		[in, ref] policy_handle *logQuery,
231		[in] uint32 numRequestedRecords,
232		[in] uint32 timeOutEnd,
233		[in] uint32 flags,
234		[out, ref] uint32 *numActualRecords,
235		[out, size_is(,*numActualRecords), range(0, MAX_RPC_RECORD_COUNT)]
236		uint32 **eventDataIndices,
237		[out, size_is(,*numActualRecords), range(0, MAX_RPC_RECORD_COUNT)]
238		uint32 **eventDataSizes,
239		[out, ref] uint32 *resultBufferSize,
240		[out, size_is(,*resultBufferSize), range(0, MAX_RPC_BATCH_SIZE)]
241		uint8 **resultBuffer);
242
243	WERROR eventlog6_EvtRpcQuerySeek(
244		[in, ref] policy_handle *logQuery,
245		[in] hyper pos,
246		[in, unique, range(0, MAX_RPC_BOOKMARK_LENGTH),charset(UTF16),string] uint16 *bookmarkXml,
247		[in] uint32 timeOut,
248		[in] uint32 flags,
249		[out, ref] eventlog6_RpcInfo *error);
250
251	WERROR eventlog6_EvtRpcClose(
252		[in, out, ref] policy_handle **handle);
253
254	WERROR eventlog6_EvtRpcCancel(
255		[in, ref] policy_handle *handle);
256
257	WERROR eventlog6_EvtRpcAssertConfig(
258		[in, range(1, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *path,
259		[in] uint32 flags);
260
261	WERROR eventlog6_EvtRpcRetractConfig(
262		[in, range(1, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *path,
263		[in] uint32 flags );
264
265	WERROR eventlog6_EvtRpcOpenLogHandle(
266		[in, range(1, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *channel,
267		[in] uint32 flags,
268		[out, ref] policy_handle *handle,
269		[out, ref] eventlog6_RpcInfo *error);
270
271	WERROR eventlog6_EvtRpcGetLogFileInfo(
272		[in, ref] policy_handle *logHandle,
273		[in] uint32 propertyId,
274		[in, range(0, MAX_RPC_PROPERTY_BUFFER_SIZE)]
275		uint32 propertyValueBufferSize,
276		[out, size_is(propertyValueBufferSize)] uint8 *propertyValueBuffer,
277		[out, ref] uint32 *propertyValueBufferLength);
278
279	WERROR eventlog6_EvtRpcGetChannelList(
280		[in] uint32 flags,
281		[out, ref] uint32 *numChannelPaths,
282		[out, size_is(,*numChannelPaths), range(0, MAX_RPC_CHANNEL_COUNT),charset(UTF16),string]
283		uint16 ***channelPaths);
284
285	WERROR eventlog6_EvtRpcGetChannelConfig(
286		[in, range(1, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *channelPath,
287		[in] uint32 flags,
288		[out, ref] eventlog6_EvtRpcVariantList* props);
289
290	WERROR eventlog6_EvtRpcPutChannelConfig(
291		[in, range(1, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *channelPath,
292		[in] uint32 flags,
293		[in] eventlog6_EvtRpcVariantList* props,
294		[out, ref] eventlog6_RpcInfo *error);
295
296	WERROR eventlog6_EvtRpcGetPublisherList(
297		[in] uint32 flags,
298		[out, ref] uint32 *numPublisherIds,
299		[out, size_is(,*numPublisherIds), range(0, MAX_RPC_PUBLISHER_COUNT),charset(UTF16),string]
300		uint16 ***publisherIds);
301
302	WERROR eventlog6_EvtRpcGetPublisherListForChannel(
303		[in] uint16 *channelName,
304		[in] uint32 flags,
305		[out, ref] uint32* numPublisherIds,
306		[out, size_is(,*numPublisherIds), range(0, MAX_RPC_PUBLISHER_COUNT),charset(UTF16),string]
307		uint16 ***publisherIds);
308
309	WERROR eventlog6_EvtRpcGetPublisherMetadata(
310		[in, unique, range(0, MAX_RPC_PUBLISHER_ID_LENGTH),charset(UTF16),string] uint16 *publisherId,
311		[in, unique, range(0, MAX_RPC_FILE_PATH_LENGTH),charset(UTF16),string] uint16 *logFilePath,
312		[in] uint32 locale,
313		[in] uint32 flags,
314		[out, ref] eventlog6_EvtRpcVariantList* pubMetadataProps,
315		[out, ref] policy_handle *pubMetadata);
316
317	WERROR eventlog6_EvtRpcGetPublisherResourceMetadata(
318		[in, ref] policy_handle *handle,
319		[in] uint32 propertyId,
320		[in] uint32 flags,
321		[out, ref] eventlog6_EvtRpcVariantList *pubMetadataProps);
322
323	WERROR eventlog6_EvtRpcGetEventMetadataEnum(
324		[in, ref] policy_handle *pubMetadata,
325		[in] uint32 flags,
326		[in, unique, range(0, MAX_RPC_FILTER_LENGTH),charset(UTF16),string] uint16 *reservedForFilter,
327		[out, ref] policy_handle *eventMetaDataEnum);
328
329	WERROR eventlog6_EvtRpcGetNextEventMetadata(
330		[in, ref] policy_handle *eventMetaDataEnum,
331		[in] uint32 flags,
332		[in] uint32 numRequested,
333		[out, ref] uint32 *numReturned,
334		[out, size_is(,*numReturned), range(0, MAX_RPC_EVENT_METADATA_COUNT)]
335		eventlog6_EvtRpcVariantList **eventMetadataInstances);
336
337	WERROR eventlog6_EvtRpcGetClassicLogDisplayName(
338		[in, range(1, MAX_RPC_CHANNEL_NAME_LENGTH),charset(UTF16),string] uint16 *logName,
339		[in] uint32 locale,
340		[in] uint32 flags,
341		[out] uint16 **displayName);
342}
343
344