[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    [PATCH] include: Add relogger.idl file.
From:       Jacek Caban <jacek () codeweavers ! com>
Date:       2021-02-09 13:33:17
Message-ID: f73bf874-6c3a-382a-067e-c484fdcfa6fa () codeweavers ! com
[Download RAW message or body]

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
---
  include/relogger.idl | 184 +++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 184 insertions(+)
  create mode 100644 include/relogger.idl



["0001-include-Add-relogger.idl-file.txt" (text/x-patch)]

diff --git a/include/relogger.idl b/include/relogger.idl
new file mode 100644
index 00000000000..60e04512ee0
--- /dev/null
+++ b/include/relogger.idl
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2021 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+import "oaidl.idl";
+import "ocidl.idl";
+
+#ifndef __WIDL__
+#define threading(model)
+#endif
+
+typedef struct _EVENT_DESCRIPTOR
+{
+    USHORT     Id;
+    UCHAR      Version;
+    UCHAR      Channel;
+    UCHAR      Level;
+    UCHAR      Opcode;
+    USHORT     Task;
+    ULONGLONG  Keyword;
+} EVENT_DESCRIPTOR, *PEVENT_DESCRIPTOR;
+typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR;
+
+typedef struct _EVENT_HEADER
+{
+    USHORT            Size;
+    USHORT            HeaderType;
+    USHORT            Flags;
+    USHORT            EventProperty;
+    ULONG             ThreadId;
+    ULONG             ProcessId;
+    LARGE_INTEGER     TimeStamp;
+    GUID              ProviderId;
+    EVENT_DESCRIPTOR  EventDescriptor;
+    union {
+        struct {
+            ULONG     KernelTime;
+            ULONG     UserTime;
+        } DUMMYSTRUCTNAME;
+        ULONG64       ProcessorTime;
+    } DUMMYUNIONNAME;
+    GUID              ActivityId;
+} EVENT_HEADER, *PEVENT_HEADER;
+
+typedef struct _ETW_BUFFER_CONTEXT
+{
+    union {
+        struct {
+            UCHAR ProcessorNumber;
+            UCHAR Alignment;
+        } DUMMYSTRUCTNAME;
+        USHORT ProcessorIndex;
+    } DUMMYUNIONNAME;
+    USHORT LoggerId;
+} ETW_BUFFER_CONTEXT, *PETW_BUFFER_CONTEXT;
+
+typedef struct _EVENT_HEADER_EXTENDED_DATA_ITEM
+{
+    USHORT     Reserved1;
+    USHORT     ExtType;
+    USHORT     Linkage;
+    USHORT     DataSize;
+    ULONGLONG  DataPtr;
+} EVENT_HEADER_EXTENDED_DATA_ITEM, *PEVENT_HEADER_EXTENDED_DATA_ITEM;
+
+typedef struct _EVENT_RECORD
+{
+    EVENT_HEADER                      EventHeader;
+    ETW_BUFFER_CONTEXT                BufferContext;
+    USHORT                            ExtendedDataCount;
+    USHORT                            UserDataLength;
+    EVENT_HEADER_EXTENDED_DATA_ITEM  *ExtendedData;
+    void                             *UserData;
+    void                             *UserContext;
+} EVENT_RECORD, *PEVENT_RECORD;
+
+typedef ULONG64 TRACEHANDLE, *PTRACEHANDLE;
+
+[
+    object,
+    uuid(8cc97f40-9028-4ff3-9b62-7d1f79ca7bcb),
+    local
+]
+interface ITraceEvent : IUnknown
+{
+    HRESULT Clone([out, retval] ITraceEvent **NewEvent);
+
+    HRESULT GetUserContext([out, retval] void **UserContext);
+
+    HRESULT GetEventRecord([out, retval] PEVENT_RECORD *EventRecord);
+
+    HRESULT SetPayload([in, size_is(PayloadSize)] BYTE *Payload,
+                       [in] ULONG PayloadSize);
+
+    HRESULT SetEventDescriptor([in] PCEVENT_DESCRIPTOR EventDescriptor);
+
+    HRESULT SetProcessId([in] ULONG ProcessId);
+
+    HRESULT SetProcessorIndex([in] ULONG ProcessorIndex);
+
+    HRESULT SetThreadId([in] ULONG ThreadId);
+
+    HRESULT SetThreadTimes([in] ULONG KernelTime,
+                           [in] ULONG UserTime);
+
+    HRESULT SetActivityId([in] LPCGUID ActivityId);
+
+    HRESULT SetTimeStamp([in] LARGE_INTEGER *TimeStamp);
+
+    HRESULT SetProviderId([in] LPCGUID ProviderId);
+}
+
+interface ITraceRelogger;
+
+[
+    object,
+    uuid(3ed25501-593f-43e9-8f38-3ab46f5a4a52)
+]
+interface ITraceEventCallback : IUnknown
+{
+    HRESULT OnBeginProcessTrace([in] ITraceEvent *HeaderEvent,
+                                [in] ITraceRelogger *Relogger);
+
+    HRESULT OnFinalizeProcessTrace([in] ITraceRelogger *Relogger);
+
+    HRESULT OnEvent([in] ITraceEvent *Event,
+                    [in] ITraceRelogger *Relogger);
+}
+
+[
+    object,
+    uuid(f754ad43-3bcc-4286-8009-9c5da214e84e),
+    local
+]
+interface ITraceRelogger : IUnknown
+{
+    HRESULT AddLogfileTraceStream([in] BSTR LogfileName,
+                                  [in] void *UserContext,
+                                  [out, retval] TRACEHANDLE *TraceHandle);
+
+    HRESULT AddRealtimeTraceStream([in] BSTR LoggerName,
+                                   [in] void *UserContext,
+                                   [out, retval] TRACEHANDLE *TraceHandle);
+
+    HRESULT RegisterCallback([in] ITraceEventCallback *Callback);
+
+    HRESULT Inject([in] ITraceEvent *Event);
+
+    HRESULT CreateEventInstance([in] TRACEHANDLE TraceHandle,
+                                [in] ULONG Flags,
+                                [out, retval] ITraceEvent **Event);
+
+    HRESULT ProcessTrace();
+
+    HRESULT SetOutputFilename([in] BSTR LogfileName);
+
+    HRESULT SetCompressionMode([in] BOOLEAN CompressionMode);
+
+    HRESULT Cancel();
+}
+
+[
+    uuid(7b40792d-05ff-44c4-9058-f440c71f17d4),
+    threading(both)
+]
+coclass CTraceRelogger
+{
+    [default] interface ITraceRelogger;
+}



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic