relogger.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. /*** Autogenerated by WIDL 7.7 from include/relogger.idl - Do not edit ***/
  2. #ifdef _WIN32
  3. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  4. #define __REQUIRED_RPCNDR_H_VERSION__ 475
  5. #endif
  6. #include <rpc.h>
  7. #include <rpcndr.h>
  8. #endif
  9. #ifndef COM_NO_WINDOWS_H
  10. #include <windows.h>
  11. #include <ole2.h>
  12. #endif
  13. #ifndef __relogger_h__
  14. #define __relogger_h__
  15. /* Forward declarations */
  16. #ifndef __ITraceEvent_FWD_DEFINED__
  17. #define __ITraceEvent_FWD_DEFINED__
  18. typedef interface ITraceEvent ITraceEvent;
  19. #ifdef __cplusplus
  20. interface ITraceEvent;
  21. #endif /* __cplusplus */
  22. #endif
  23. #ifndef __ITraceEventCallback_FWD_DEFINED__
  24. #define __ITraceEventCallback_FWD_DEFINED__
  25. typedef interface ITraceEventCallback ITraceEventCallback;
  26. #ifdef __cplusplus
  27. interface ITraceEventCallback;
  28. #endif /* __cplusplus */
  29. #endif
  30. #ifndef __ITraceRelogger_FWD_DEFINED__
  31. #define __ITraceRelogger_FWD_DEFINED__
  32. typedef interface ITraceRelogger ITraceRelogger;
  33. #ifdef __cplusplus
  34. interface ITraceRelogger;
  35. #endif /* __cplusplus */
  36. #endif
  37. #ifndef __CTraceRelogger_FWD_DEFINED__
  38. #define __CTraceRelogger_FWD_DEFINED__
  39. #ifdef __cplusplus
  40. typedef class CTraceRelogger CTraceRelogger;
  41. #else
  42. typedef struct CTraceRelogger CTraceRelogger;
  43. #endif /* defined __cplusplus */
  44. #endif /* defined __CTraceRelogger_FWD_DEFINED__ */
  45. /* Headers for imported files */
  46. #include <unknwn.h>
  47. #include <oaidl.h>
  48. #include <ocidl.h>
  49. #ifdef __cplusplus
  50. extern "C" {
  51. #endif
  52. typedef struct _EVENT_DESCRIPTOR {
  53. USHORT Id;
  54. UCHAR Version;
  55. UCHAR Channel;
  56. UCHAR Level;
  57. UCHAR Opcode;
  58. USHORT Task;
  59. ULONGLONG Keyword;
  60. } EVENT_DESCRIPTOR;
  61. typedef struct _EVENT_DESCRIPTOR *PEVENT_DESCRIPTOR;
  62. typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR;
  63. typedef struct _EVENT_HEADER {
  64. USHORT Size;
  65. USHORT HeaderType;
  66. USHORT Flags;
  67. USHORT EventProperty;
  68. ULONG ThreadId;
  69. ULONG ProcessId;
  70. LARGE_INTEGER TimeStamp;
  71. GUID ProviderId;
  72. EVENT_DESCRIPTOR EventDescriptor;
  73. union {
  74. struct {
  75. ULONG KernelTime;
  76. ULONG UserTime;
  77. } DUMMYSTRUCTNAME;
  78. ULONG64 ProcessorTime;
  79. } DUMMYUNIONNAME;
  80. GUID ActivityId;
  81. } EVENT_HEADER;
  82. typedef struct _EVENT_HEADER *PEVENT_HEADER;
  83. typedef struct _ETW_BUFFER_CONTEXT {
  84. union {
  85. struct {
  86. UCHAR ProcessorNumber;
  87. UCHAR Alignment;
  88. } DUMMYSTRUCTNAME;
  89. USHORT ProcessorIndex;
  90. } DUMMYUNIONNAME;
  91. USHORT LoggerId;
  92. } ETW_BUFFER_CONTEXT;
  93. typedef struct _ETW_BUFFER_CONTEXT *PETW_BUFFER_CONTEXT;
  94. typedef struct _EVENT_HEADER_EXTENDED_DATA_ITEM {
  95. USHORT Reserved1;
  96. USHORT ExtType;
  97. USHORT Linkage;
  98. USHORT DataSize;
  99. ULONGLONG DataPtr;
  100. } EVENT_HEADER_EXTENDED_DATA_ITEM;
  101. typedef struct _EVENT_HEADER_EXTENDED_DATA_ITEM *PEVENT_HEADER_EXTENDED_DATA_ITEM;
  102. typedef struct _EVENT_RECORD {
  103. EVENT_HEADER EventHeader;
  104. ETW_BUFFER_CONTEXT BufferContext;
  105. USHORT ExtendedDataCount;
  106. USHORT UserDataLength;
  107. EVENT_HEADER_EXTENDED_DATA_ITEM *ExtendedData;
  108. void *UserData;
  109. void *UserContext;
  110. } EVENT_RECORD;
  111. typedef struct _EVENT_RECORD *PEVENT_RECORD;
  112. typedef ULONG64 TRACEHANDLE;
  113. typedef ULONG64 *PTRACEHANDLE;
  114. /*****************************************************************************
  115. * ITraceEvent interface
  116. */
  117. #ifndef __ITraceEvent_INTERFACE_DEFINED__
  118. #define __ITraceEvent_INTERFACE_DEFINED__
  119. DEFINE_GUID(IID_ITraceEvent, 0x8cc97f40, 0x9028, 0x4ff3, 0x9b,0x62, 0x7d,0x1f,0x79,0xca,0x7b,0xcb);
  120. #if defined(__cplusplus) && !defined(CINTERFACE)
  121. MIDL_INTERFACE("8cc97f40-9028-4ff3-9b62-7d1f79ca7bcb")
  122. ITraceEvent : public IUnknown
  123. {
  124. virtual HRESULT STDMETHODCALLTYPE Clone(
  125. ITraceEvent **NewEvent) = 0;
  126. virtual HRESULT STDMETHODCALLTYPE GetUserContext(
  127. void **UserContext) = 0;
  128. virtual HRESULT STDMETHODCALLTYPE GetEventRecord(
  129. PEVENT_RECORD *EventRecord) = 0;
  130. virtual HRESULT STDMETHODCALLTYPE SetPayload(
  131. BYTE *Payload,
  132. ULONG PayloadSize) = 0;
  133. virtual HRESULT STDMETHODCALLTYPE SetEventDescriptor(
  134. PCEVENT_DESCRIPTOR EventDescriptor) = 0;
  135. virtual HRESULT STDMETHODCALLTYPE SetProcessId(
  136. ULONG ProcessId) = 0;
  137. virtual HRESULT STDMETHODCALLTYPE SetProcessorIndex(
  138. ULONG ProcessorIndex) = 0;
  139. virtual HRESULT STDMETHODCALLTYPE SetThreadId(
  140. ULONG ThreadId) = 0;
  141. virtual HRESULT STDMETHODCALLTYPE SetThreadTimes(
  142. ULONG KernelTime,
  143. ULONG UserTime) = 0;
  144. virtual HRESULT STDMETHODCALLTYPE SetActivityId(
  145. LPCGUID ActivityId) = 0;
  146. virtual HRESULT STDMETHODCALLTYPE SetTimeStamp(
  147. LARGE_INTEGER *TimeStamp) = 0;
  148. virtual HRESULT STDMETHODCALLTYPE SetProviderId(
  149. LPCGUID ProviderId) = 0;
  150. };
  151. #ifdef __CRT_UUID_DECL
  152. __CRT_UUID_DECL(ITraceEvent, 0x8cc97f40, 0x9028, 0x4ff3, 0x9b,0x62, 0x7d,0x1f,0x79,0xca,0x7b,0xcb)
  153. #endif
  154. #else
  155. typedef struct ITraceEventVtbl {
  156. BEGIN_INTERFACE
  157. /*** IUnknown methods ***/
  158. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  159. ITraceEvent *This,
  160. REFIID riid,
  161. void **ppvObject);
  162. ULONG (STDMETHODCALLTYPE *AddRef)(
  163. ITraceEvent *This);
  164. ULONG (STDMETHODCALLTYPE *Release)(
  165. ITraceEvent *This);
  166. /*** ITraceEvent methods ***/
  167. HRESULT (STDMETHODCALLTYPE *Clone)(
  168. ITraceEvent *This,
  169. ITraceEvent **NewEvent);
  170. HRESULT (STDMETHODCALLTYPE *GetUserContext)(
  171. ITraceEvent *This,
  172. void **UserContext);
  173. HRESULT (STDMETHODCALLTYPE *GetEventRecord)(
  174. ITraceEvent *This,
  175. PEVENT_RECORD *EventRecord);
  176. HRESULT (STDMETHODCALLTYPE *SetPayload)(
  177. ITraceEvent *This,
  178. BYTE *Payload,
  179. ULONG PayloadSize);
  180. HRESULT (STDMETHODCALLTYPE *SetEventDescriptor)(
  181. ITraceEvent *This,
  182. PCEVENT_DESCRIPTOR EventDescriptor);
  183. HRESULT (STDMETHODCALLTYPE *SetProcessId)(
  184. ITraceEvent *This,
  185. ULONG ProcessId);
  186. HRESULT (STDMETHODCALLTYPE *SetProcessorIndex)(
  187. ITraceEvent *This,
  188. ULONG ProcessorIndex);
  189. HRESULT (STDMETHODCALLTYPE *SetThreadId)(
  190. ITraceEvent *This,
  191. ULONG ThreadId);
  192. HRESULT (STDMETHODCALLTYPE *SetThreadTimes)(
  193. ITraceEvent *This,
  194. ULONG KernelTime,
  195. ULONG UserTime);
  196. HRESULT (STDMETHODCALLTYPE *SetActivityId)(
  197. ITraceEvent *This,
  198. LPCGUID ActivityId);
  199. HRESULT (STDMETHODCALLTYPE *SetTimeStamp)(
  200. ITraceEvent *This,
  201. LARGE_INTEGER *TimeStamp);
  202. HRESULT (STDMETHODCALLTYPE *SetProviderId)(
  203. ITraceEvent *This,
  204. LPCGUID ProviderId);
  205. END_INTERFACE
  206. } ITraceEventVtbl;
  207. interface ITraceEvent {
  208. CONST_VTBL ITraceEventVtbl* lpVtbl;
  209. };
  210. #ifdef COBJMACROS
  211. #ifndef WIDL_C_INLINE_WRAPPERS
  212. /*** IUnknown methods ***/
  213. #define ITraceEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  214. #define ITraceEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
  215. #define ITraceEvent_Release(This) (This)->lpVtbl->Release(This)
  216. /*** ITraceEvent methods ***/
  217. #define ITraceEvent_Clone(This,NewEvent) (This)->lpVtbl->Clone(This,NewEvent)
  218. #define ITraceEvent_GetUserContext(This,UserContext) (This)->lpVtbl->GetUserContext(This,UserContext)
  219. #define ITraceEvent_GetEventRecord(This,EventRecord) (This)->lpVtbl->GetEventRecord(This,EventRecord)
  220. #define ITraceEvent_SetPayload(This,Payload,PayloadSize) (This)->lpVtbl->SetPayload(This,Payload,PayloadSize)
  221. #define ITraceEvent_SetEventDescriptor(This,EventDescriptor) (This)->lpVtbl->SetEventDescriptor(This,EventDescriptor)
  222. #define ITraceEvent_SetProcessId(This,ProcessId) (This)->lpVtbl->SetProcessId(This,ProcessId)
  223. #define ITraceEvent_SetProcessorIndex(This,ProcessorIndex) (This)->lpVtbl->SetProcessorIndex(This,ProcessorIndex)
  224. #define ITraceEvent_SetThreadId(This,ThreadId) (This)->lpVtbl->SetThreadId(This,ThreadId)
  225. #define ITraceEvent_SetThreadTimes(This,KernelTime,UserTime) (This)->lpVtbl->SetThreadTimes(This,KernelTime,UserTime)
  226. #define ITraceEvent_SetActivityId(This,ActivityId) (This)->lpVtbl->SetActivityId(This,ActivityId)
  227. #define ITraceEvent_SetTimeStamp(This,TimeStamp) (This)->lpVtbl->SetTimeStamp(This,TimeStamp)
  228. #define ITraceEvent_SetProviderId(This,ProviderId) (This)->lpVtbl->SetProviderId(This,ProviderId)
  229. #else
  230. /*** IUnknown methods ***/
  231. static FORCEINLINE HRESULT ITraceEvent_QueryInterface(ITraceEvent* This,REFIID riid,void **ppvObject) {
  232. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  233. }
  234. static FORCEINLINE ULONG ITraceEvent_AddRef(ITraceEvent* This) {
  235. return This->lpVtbl->AddRef(This);
  236. }
  237. static FORCEINLINE ULONG ITraceEvent_Release(ITraceEvent* This) {
  238. return This->lpVtbl->Release(This);
  239. }
  240. /*** ITraceEvent methods ***/
  241. static FORCEINLINE HRESULT ITraceEvent_Clone(ITraceEvent* This,ITraceEvent **NewEvent) {
  242. return This->lpVtbl->Clone(This,NewEvent);
  243. }
  244. static FORCEINLINE HRESULT ITraceEvent_GetUserContext(ITraceEvent* This,void **UserContext) {
  245. return This->lpVtbl->GetUserContext(This,UserContext);
  246. }
  247. static FORCEINLINE HRESULT ITraceEvent_GetEventRecord(ITraceEvent* This,PEVENT_RECORD *EventRecord) {
  248. return This->lpVtbl->GetEventRecord(This,EventRecord);
  249. }
  250. static FORCEINLINE HRESULT ITraceEvent_SetPayload(ITraceEvent* This,BYTE *Payload,ULONG PayloadSize) {
  251. return This->lpVtbl->SetPayload(This,Payload,PayloadSize);
  252. }
  253. static FORCEINLINE HRESULT ITraceEvent_SetEventDescriptor(ITraceEvent* This,PCEVENT_DESCRIPTOR EventDescriptor) {
  254. return This->lpVtbl->SetEventDescriptor(This,EventDescriptor);
  255. }
  256. static FORCEINLINE HRESULT ITraceEvent_SetProcessId(ITraceEvent* This,ULONG ProcessId) {
  257. return This->lpVtbl->SetProcessId(This,ProcessId);
  258. }
  259. static FORCEINLINE HRESULT ITraceEvent_SetProcessorIndex(ITraceEvent* This,ULONG ProcessorIndex) {
  260. return This->lpVtbl->SetProcessorIndex(This,ProcessorIndex);
  261. }
  262. static FORCEINLINE HRESULT ITraceEvent_SetThreadId(ITraceEvent* This,ULONG ThreadId) {
  263. return This->lpVtbl->SetThreadId(This,ThreadId);
  264. }
  265. static FORCEINLINE HRESULT ITraceEvent_SetThreadTimes(ITraceEvent* This,ULONG KernelTime,ULONG UserTime) {
  266. return This->lpVtbl->SetThreadTimes(This,KernelTime,UserTime);
  267. }
  268. static FORCEINLINE HRESULT ITraceEvent_SetActivityId(ITraceEvent* This,LPCGUID ActivityId) {
  269. return This->lpVtbl->SetActivityId(This,ActivityId);
  270. }
  271. static FORCEINLINE HRESULT ITraceEvent_SetTimeStamp(ITraceEvent* This,LARGE_INTEGER *TimeStamp) {
  272. return This->lpVtbl->SetTimeStamp(This,TimeStamp);
  273. }
  274. static FORCEINLINE HRESULT ITraceEvent_SetProviderId(ITraceEvent* This,LPCGUID ProviderId) {
  275. return This->lpVtbl->SetProviderId(This,ProviderId);
  276. }
  277. #endif
  278. #endif
  279. #endif
  280. #endif /* __ITraceEvent_INTERFACE_DEFINED__ */
  281. #ifndef __ITraceRelogger_FWD_DEFINED__
  282. #define __ITraceRelogger_FWD_DEFINED__
  283. typedef interface ITraceRelogger ITraceRelogger;
  284. #ifdef __cplusplus
  285. interface ITraceRelogger;
  286. #endif /* __cplusplus */
  287. #endif
  288. /*****************************************************************************
  289. * ITraceEventCallback interface
  290. */
  291. #ifndef __ITraceEventCallback_INTERFACE_DEFINED__
  292. #define __ITraceEventCallback_INTERFACE_DEFINED__
  293. DEFINE_GUID(IID_ITraceEventCallback, 0x3ed25501, 0x593f, 0x43e9, 0x8f,0x38, 0x3a,0xb4,0x6f,0x5a,0x4a,0x52);
  294. #if defined(__cplusplus) && !defined(CINTERFACE)
  295. MIDL_INTERFACE("3ed25501-593f-43e9-8f38-3ab46f5a4a52")
  296. ITraceEventCallback : public IUnknown
  297. {
  298. virtual HRESULT STDMETHODCALLTYPE OnBeginProcessTrace(
  299. ITraceEvent *HeaderEvent,
  300. ITraceRelogger *Relogger) = 0;
  301. virtual HRESULT STDMETHODCALLTYPE OnFinalizeProcessTrace(
  302. ITraceRelogger *Relogger) = 0;
  303. virtual HRESULT STDMETHODCALLTYPE OnEvent(
  304. ITraceEvent *Event,
  305. ITraceRelogger *Relogger) = 0;
  306. };
  307. #ifdef __CRT_UUID_DECL
  308. __CRT_UUID_DECL(ITraceEventCallback, 0x3ed25501, 0x593f, 0x43e9, 0x8f,0x38, 0x3a,0xb4,0x6f,0x5a,0x4a,0x52)
  309. #endif
  310. #else
  311. typedef struct ITraceEventCallbackVtbl {
  312. BEGIN_INTERFACE
  313. /*** IUnknown methods ***/
  314. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  315. ITraceEventCallback *This,
  316. REFIID riid,
  317. void **ppvObject);
  318. ULONG (STDMETHODCALLTYPE *AddRef)(
  319. ITraceEventCallback *This);
  320. ULONG (STDMETHODCALLTYPE *Release)(
  321. ITraceEventCallback *This);
  322. /*** ITraceEventCallback methods ***/
  323. HRESULT (STDMETHODCALLTYPE *OnBeginProcessTrace)(
  324. ITraceEventCallback *This,
  325. ITraceEvent *HeaderEvent,
  326. ITraceRelogger *Relogger);
  327. HRESULT (STDMETHODCALLTYPE *OnFinalizeProcessTrace)(
  328. ITraceEventCallback *This,
  329. ITraceRelogger *Relogger);
  330. HRESULT (STDMETHODCALLTYPE *OnEvent)(
  331. ITraceEventCallback *This,
  332. ITraceEvent *Event,
  333. ITraceRelogger *Relogger);
  334. END_INTERFACE
  335. } ITraceEventCallbackVtbl;
  336. interface ITraceEventCallback {
  337. CONST_VTBL ITraceEventCallbackVtbl* lpVtbl;
  338. };
  339. #ifdef COBJMACROS
  340. #ifndef WIDL_C_INLINE_WRAPPERS
  341. /*** IUnknown methods ***/
  342. #define ITraceEventCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  343. #define ITraceEventCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
  344. #define ITraceEventCallback_Release(This) (This)->lpVtbl->Release(This)
  345. /*** ITraceEventCallback methods ***/
  346. #define ITraceEventCallback_OnBeginProcessTrace(This,HeaderEvent,Relogger) (This)->lpVtbl->OnBeginProcessTrace(This,HeaderEvent,Relogger)
  347. #define ITraceEventCallback_OnFinalizeProcessTrace(This,Relogger) (This)->lpVtbl->OnFinalizeProcessTrace(This,Relogger)
  348. #define ITraceEventCallback_OnEvent(This,Event,Relogger) (This)->lpVtbl->OnEvent(This,Event,Relogger)
  349. #else
  350. /*** IUnknown methods ***/
  351. static FORCEINLINE HRESULT ITraceEventCallback_QueryInterface(ITraceEventCallback* This,REFIID riid,void **ppvObject) {
  352. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  353. }
  354. static FORCEINLINE ULONG ITraceEventCallback_AddRef(ITraceEventCallback* This) {
  355. return This->lpVtbl->AddRef(This);
  356. }
  357. static FORCEINLINE ULONG ITraceEventCallback_Release(ITraceEventCallback* This) {
  358. return This->lpVtbl->Release(This);
  359. }
  360. /*** ITraceEventCallback methods ***/
  361. static FORCEINLINE HRESULT ITraceEventCallback_OnBeginProcessTrace(ITraceEventCallback* This,ITraceEvent *HeaderEvent,ITraceRelogger *Relogger) {
  362. return This->lpVtbl->OnBeginProcessTrace(This,HeaderEvent,Relogger);
  363. }
  364. static FORCEINLINE HRESULT ITraceEventCallback_OnFinalizeProcessTrace(ITraceEventCallback* This,ITraceRelogger *Relogger) {
  365. return This->lpVtbl->OnFinalizeProcessTrace(This,Relogger);
  366. }
  367. static FORCEINLINE HRESULT ITraceEventCallback_OnEvent(ITraceEventCallback* This,ITraceEvent *Event,ITraceRelogger *Relogger) {
  368. return This->lpVtbl->OnEvent(This,Event,Relogger);
  369. }
  370. #endif
  371. #endif
  372. #endif
  373. #endif /* __ITraceEventCallback_INTERFACE_DEFINED__ */
  374. /*****************************************************************************
  375. * ITraceRelogger interface
  376. */
  377. #ifndef __ITraceRelogger_INTERFACE_DEFINED__
  378. #define __ITraceRelogger_INTERFACE_DEFINED__
  379. DEFINE_GUID(IID_ITraceRelogger, 0xf754ad43, 0x3bcc, 0x4286, 0x80,0x09, 0x9c,0x5d,0xa2,0x14,0xe8,0x4e);
  380. #if defined(__cplusplus) && !defined(CINTERFACE)
  381. MIDL_INTERFACE("f754ad43-3bcc-4286-8009-9c5da214e84e")
  382. ITraceRelogger : public IUnknown
  383. {
  384. virtual HRESULT STDMETHODCALLTYPE AddLogfileTraceStream(
  385. BSTR LogfileName,
  386. void *UserContext,
  387. TRACEHANDLE *TraceHandle) = 0;
  388. virtual HRESULT STDMETHODCALLTYPE AddRealtimeTraceStream(
  389. BSTR LoggerName,
  390. void *UserContext,
  391. TRACEHANDLE *TraceHandle) = 0;
  392. virtual HRESULT STDMETHODCALLTYPE RegisterCallback(
  393. ITraceEventCallback *Callback) = 0;
  394. virtual HRESULT STDMETHODCALLTYPE Inject(
  395. ITraceEvent *Event) = 0;
  396. virtual HRESULT STDMETHODCALLTYPE CreateEventInstance(
  397. TRACEHANDLE TraceHandle,
  398. ULONG Flags,
  399. ITraceEvent **Event) = 0;
  400. virtual HRESULT STDMETHODCALLTYPE ProcessTrace(
  401. ) = 0;
  402. virtual HRESULT STDMETHODCALLTYPE SetOutputFilename(
  403. BSTR LogfileName) = 0;
  404. virtual HRESULT STDMETHODCALLTYPE SetCompressionMode(
  405. BOOLEAN CompressionMode) = 0;
  406. virtual HRESULT STDMETHODCALLTYPE Cancel(
  407. ) = 0;
  408. };
  409. #ifdef __CRT_UUID_DECL
  410. __CRT_UUID_DECL(ITraceRelogger, 0xf754ad43, 0x3bcc, 0x4286, 0x80,0x09, 0x9c,0x5d,0xa2,0x14,0xe8,0x4e)
  411. #endif
  412. #else
  413. typedef struct ITraceReloggerVtbl {
  414. BEGIN_INTERFACE
  415. /*** IUnknown methods ***/
  416. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  417. ITraceRelogger *This,
  418. REFIID riid,
  419. void **ppvObject);
  420. ULONG (STDMETHODCALLTYPE *AddRef)(
  421. ITraceRelogger *This);
  422. ULONG (STDMETHODCALLTYPE *Release)(
  423. ITraceRelogger *This);
  424. /*** ITraceRelogger methods ***/
  425. HRESULT (STDMETHODCALLTYPE *AddLogfileTraceStream)(
  426. ITraceRelogger *This,
  427. BSTR LogfileName,
  428. void *UserContext,
  429. TRACEHANDLE *TraceHandle);
  430. HRESULT (STDMETHODCALLTYPE *AddRealtimeTraceStream)(
  431. ITraceRelogger *This,
  432. BSTR LoggerName,
  433. void *UserContext,
  434. TRACEHANDLE *TraceHandle);
  435. HRESULT (STDMETHODCALLTYPE *RegisterCallback)(
  436. ITraceRelogger *This,
  437. ITraceEventCallback *Callback);
  438. HRESULT (STDMETHODCALLTYPE *Inject)(
  439. ITraceRelogger *This,
  440. ITraceEvent *Event);
  441. HRESULT (STDMETHODCALLTYPE *CreateEventInstance)(
  442. ITraceRelogger *This,
  443. TRACEHANDLE TraceHandle,
  444. ULONG Flags,
  445. ITraceEvent **Event);
  446. HRESULT (STDMETHODCALLTYPE *ProcessTrace)(
  447. ITraceRelogger *This);
  448. HRESULT (STDMETHODCALLTYPE *SetOutputFilename)(
  449. ITraceRelogger *This,
  450. BSTR LogfileName);
  451. HRESULT (STDMETHODCALLTYPE *SetCompressionMode)(
  452. ITraceRelogger *This,
  453. BOOLEAN CompressionMode);
  454. HRESULT (STDMETHODCALLTYPE *Cancel)(
  455. ITraceRelogger *This);
  456. END_INTERFACE
  457. } ITraceReloggerVtbl;
  458. interface ITraceRelogger {
  459. CONST_VTBL ITraceReloggerVtbl* lpVtbl;
  460. };
  461. #ifdef COBJMACROS
  462. #ifndef WIDL_C_INLINE_WRAPPERS
  463. /*** IUnknown methods ***/
  464. #define ITraceRelogger_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  465. #define ITraceRelogger_AddRef(This) (This)->lpVtbl->AddRef(This)
  466. #define ITraceRelogger_Release(This) (This)->lpVtbl->Release(This)
  467. /*** ITraceRelogger methods ***/
  468. #define ITraceRelogger_AddLogfileTraceStream(This,LogfileName,UserContext,TraceHandle) (This)->lpVtbl->AddLogfileTraceStream(This,LogfileName,UserContext,TraceHandle)
  469. #define ITraceRelogger_AddRealtimeTraceStream(This,LoggerName,UserContext,TraceHandle) (This)->lpVtbl->AddRealtimeTraceStream(This,LoggerName,UserContext,TraceHandle)
  470. #define ITraceRelogger_RegisterCallback(This,Callback) (This)->lpVtbl->RegisterCallback(This,Callback)
  471. #define ITraceRelogger_Inject(This,Event) (This)->lpVtbl->Inject(This,Event)
  472. #define ITraceRelogger_CreateEventInstance(This,TraceHandle,Flags,Event) (This)->lpVtbl->CreateEventInstance(This,TraceHandle,Flags,Event)
  473. #define ITraceRelogger_ProcessTrace(This) (This)->lpVtbl->ProcessTrace(This)
  474. #define ITraceRelogger_SetOutputFilename(This,LogfileName) (This)->lpVtbl->SetOutputFilename(This,LogfileName)
  475. #define ITraceRelogger_SetCompressionMode(This,CompressionMode) (This)->lpVtbl->SetCompressionMode(This,CompressionMode)
  476. #define ITraceRelogger_Cancel(This) (This)->lpVtbl->Cancel(This)
  477. #else
  478. /*** IUnknown methods ***/
  479. static FORCEINLINE HRESULT ITraceRelogger_QueryInterface(ITraceRelogger* This,REFIID riid,void **ppvObject) {
  480. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  481. }
  482. static FORCEINLINE ULONG ITraceRelogger_AddRef(ITraceRelogger* This) {
  483. return This->lpVtbl->AddRef(This);
  484. }
  485. static FORCEINLINE ULONG ITraceRelogger_Release(ITraceRelogger* This) {
  486. return This->lpVtbl->Release(This);
  487. }
  488. /*** ITraceRelogger methods ***/
  489. static FORCEINLINE HRESULT ITraceRelogger_AddLogfileTraceStream(ITraceRelogger* This,BSTR LogfileName,void *UserContext,TRACEHANDLE *TraceHandle) {
  490. return This->lpVtbl->AddLogfileTraceStream(This,LogfileName,UserContext,TraceHandle);
  491. }
  492. static FORCEINLINE HRESULT ITraceRelogger_AddRealtimeTraceStream(ITraceRelogger* This,BSTR LoggerName,void *UserContext,TRACEHANDLE *TraceHandle) {
  493. return This->lpVtbl->AddRealtimeTraceStream(This,LoggerName,UserContext,TraceHandle);
  494. }
  495. static FORCEINLINE HRESULT ITraceRelogger_RegisterCallback(ITraceRelogger* This,ITraceEventCallback *Callback) {
  496. return This->lpVtbl->RegisterCallback(This,Callback);
  497. }
  498. static FORCEINLINE HRESULT ITraceRelogger_Inject(ITraceRelogger* This,ITraceEvent *Event) {
  499. return This->lpVtbl->Inject(This,Event);
  500. }
  501. static FORCEINLINE HRESULT ITraceRelogger_CreateEventInstance(ITraceRelogger* This,TRACEHANDLE TraceHandle,ULONG Flags,ITraceEvent **Event) {
  502. return This->lpVtbl->CreateEventInstance(This,TraceHandle,Flags,Event);
  503. }
  504. static FORCEINLINE HRESULT ITraceRelogger_ProcessTrace(ITraceRelogger* This) {
  505. return This->lpVtbl->ProcessTrace(This);
  506. }
  507. static FORCEINLINE HRESULT ITraceRelogger_SetOutputFilename(ITraceRelogger* This,BSTR LogfileName) {
  508. return This->lpVtbl->SetOutputFilename(This,LogfileName);
  509. }
  510. static FORCEINLINE HRESULT ITraceRelogger_SetCompressionMode(ITraceRelogger* This,BOOLEAN CompressionMode) {
  511. return This->lpVtbl->SetCompressionMode(This,CompressionMode);
  512. }
  513. static FORCEINLINE HRESULT ITraceRelogger_Cancel(ITraceRelogger* This) {
  514. return This->lpVtbl->Cancel(This);
  515. }
  516. #endif
  517. #endif
  518. #endif
  519. #endif /* __ITraceRelogger_INTERFACE_DEFINED__ */
  520. /*****************************************************************************
  521. * CTraceRelogger coclass
  522. */
  523. DEFINE_GUID(CLSID_CTraceRelogger, 0x7b40792d, 0x05ff, 0x44c4, 0x90,0x58, 0xf4,0x40,0xc7,0x1f,0x17,0xd4);
  524. #ifdef __cplusplus
  525. class DECLSPEC_UUID("7b40792d-05ff-44c4-9058-f440c71f17d4") CTraceRelogger;
  526. #ifdef __CRT_UUID_DECL
  527. __CRT_UUID_DECL(CTraceRelogger, 0x7b40792d, 0x05ff, 0x44c4, 0x90,0x58, 0xf4,0x40,0xc7,0x1f,0x17,0xd4)
  528. #endif
  529. #endif
  530. /* Begin additional prototypes for all interfaces */
  531. /* End additional prototypes */
  532. #ifdef __cplusplus
  533. }
  534. #endif
  535. #endif /* __relogger_h__ */