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