0001-Add-missing-defines-for-Win7-8.txt
wmistr.h: Extensions for Windows 7 & 8
0002-Add-winapi-family-check-add-widl-enumation-size-specif.txt
wlantypes.h: Add widl-handling, winapi-family-check, and add missing
DOT11_AUTH_ALGORITHM... defines
0003-Add-winapi-family-checks-add-Win-7-8-missing-APIs-reor.txt
evntcons.h, evntprov.h, evntrace.h: Add winapi-family check, add
Win7&8 additions, reorg headers,
Ok for apply?
Regards,
Kai
From b7cc3dcbc0f38aec6a60670b61f114e917cfdd89 Mon Sep 17 00:00:00 2001
From: Kai Tietz <[email protected]>
Date: Wed, 27 Aug 2014 13:14:25 +0200
Subject: Add missing defines for Win7/8
---
mingw-w64-headers/include/wmistr.h | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/mingw-w64-headers/include/wmistr.h
b/mingw-w64-headers/include/wmistr.h
index 6a3e174..9ae567a 100644
--- a/mingw-w64-headers/include/wmistr.h
+++ b/mingw-w64-headers/include/wmistr.h
@@ -1,7 +1,6 @@
/**
- * This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _WMISTR_
#define _WMISTR_
@@ -46,6 +45,9 @@ typedef struct _WNODE_HEADER {
#define WNODE_FLAG_USE_GUID_PTR 0x00080000
#define WNODE_FLAG_USE_MOF_PTR 0x00100000
#define WNODE_FLAG_NO_HEADER 0x00200000
+#if NTDDI_VERSION >= 0x06000000
+#define WNODE_FLAG_SEND_DATA_BLOCK 0x00400000
+#endif
#define WNODE_FLAG_SEVERITY_MASK 0xff000000
typedef struct {
@@ -152,7 +154,8 @@ typedef PWMIREGINFOW PWMIREGINFO;
typedef enum {
WMI_GET_ALL_DATA = 0,WMI_GET_SINGLE_INSTANCE = 1,WMI_SET_SINGLE_INSTANCE =
2,WMI_SET_SINGLE_ITEM = 3,WMI_ENABLE_EVENTS = 4,WMI_DISABLE_EVENTS = 5,
- WMI_ENABLE_COLLECTION = 6,WMI_DISABLE_COLLECTION = 7,WMI_REGINFO =
8,WMI_EXECUTE_METHOD = 9
+ WMI_ENABLE_COLLECTION = 6,WMI_DISABLE_COLLECTION = 7,WMI_REGINFO =
8,WMI_EXECUTE_METHOD = 9,
+ WMI_CAPTURE_STATE = 10
} WMIDPREQUESTCODE;
#if defined(_WINNT_) || defined(WINNT)
@@ -172,6 +175,7 @@ typedef enum {
#define TRACELOG_GUID_ENABLE 0x0080
#define TRACELOG_ACCESS_KERNEL_LOGGER 0x0100
#define TRACELOG_CREATE_INPROC 0x0200
+#define TRACELOG_LOG_EVENT 0x0200
#define TRACELOG_ACCESS_REALTIME 0x0400
#define TRACELOG_REGISTER_GUIDS 0x0800
--
1.7.9
From 326deda7391f03c36f64591f0bc1b8f9ea150eac Mon Sep 17 00:00:00 2001
From: Kai Tietz <[email protected]>
Date: Wed, 27 Aug 2014 15:28:55 +0200
Subject: =?UTF-8?q?Add=20winapi-family=20check,=20add=20widl=20enumation-siz?=
=?UTF-8?q?e=20specification,=0Aand=20define=20DOT11=5FAUTH=5FALOGORITHM=5F.?=
=?UTF-8?q?..=20additions?=
---
mingw-w64-headers/include/wlantypes.h | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/mingw-w64-headers/include/wlantypes.h
b/mingw-w64-headers/include/wlantypes.h
index 47ed6f1..437a77e 100644
--- a/mingw-w64-headers/include/wlantypes.h
+++ b/mingw-w64-headers/include/wlantypes.h
@@ -1,18 +1,34 @@
/**
- * This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
*/
+
#ifndef _INC_WLANTYPES
#define _INC_WLANTYPES
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
#ifdef __cplusplus
extern "C" {
#endif
#define DOT11_SSID_MAX_LENGTH 32
+#define DOT11_AUTH_ALGORITHM_OPEN_SYSTEM DOT11_AUTH_ALGO_80211_OPEN
+#define DOT11_AUTH_ALGORITHM_SHARED_KEY DOT11_AUTH_ALGO_80211_SHARED_KEY
+#define DOT11_AUTH_ALGORITHM_WPA DOT11_AUTH_ALGO_WPA
+#define DOT11_AUTH_ALGORITHM_WPA_PSK DOT11_AUTH_ALGO_WPA_PSK
+#define DOT11_AUTH_ALGORITHM_WPA_NONE DOT11_AUTH_ALGO_WPA_NONE
+#define DOT11_AUTH_ALGORITHM_RSNA DOT11_AUTH_ALGO_RSNA
+#define DOT11_AUTH_ALGORITHM_RSNA_PSK DOT11_AUTH_ALGO_RSNA_PSK
+
+#ifdef __WIDL__
+typedef [v1_enum] enum _DOT11_AUTH_ALGORITHM {
+#else
typedef enum _DOT11_AUTH_ALGORITHM {
+#endif
DOT11_AUTH_ALGO_80211_OPEN = 1,
DOT11_AUTH_ALGO_80211_SHARED_KEY = 2,
DOT11_AUTH_ALGO_WPA = 3,
@@ -24,7 +40,11 @@ typedef enum _DOT11_AUTH_ALGORITHM {
DOT11_AUTH_ALGO_IHV_END = 0xffffffff
} DOT11_AUTH_ALGORITHM, *PDOT11_AUTH_ALGORITHM;
+#ifdef __WIDL__
+ typedef [v1_enum] enum _DOT11_CIPHER_ALGORITHM {
+#else
typedef enum _DOT11_CIPHER_ALGORITHM {
+#endif
DOT11_CIPHER_ALGO_NONE = 0x00,
DOT11_CIPHER_ALGO_WEP40 = 0x01,
DOT11_CIPHER_ALGO_TKIP = 0x02,
@@ -57,4 +77,5 @@ typedef struct _DOT11_SSID {
}
#endif
+#endif
#endif /*_INC_WLANTYPES*/
--
1.7.9
From dbfe1c927d79a328082e75a3e2100e3e1d85540e Mon Sep 17 00:00:00 2001
From: Kai Tietz <[email protected]>
Date: Thu, 28 Aug 2014 12:11:31 +0200
Subject: Add winapi-family checks, add Win 7&8 missing APIs, reorg headers
---
mingw-w64-headers/include/evntcons.h | 267 +++++-----
mingw-w64-headers/include/evntprov.h | 501 +++++++-----------
mingw-w64-headers/include/evntrace.h | 957 +++++++++++++++++-----------------
3 files changed, 817 insertions(+), 908 deletions(-)
diff --git a/mingw-w64-headers/include/evntcons.h
b/mingw-w64-headers/include/evntcons.h
index 918744f..d9662d0 100644
--- a/mingw-w64-headers/include/evntcons.h
+++ b/mingw-w64-headers/include/evntcons.h
@@ -1,11 +1,15 @@
/**
- * This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
*/
+
#ifndef _EVNTCONS_H_
#define _EVNTCONS_H_
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
#include <wmistr.h>
#include <evntrace.h>
#include <evntprov.h>
@@ -14,136 +18,143 @@
extern "C" {
#endif
-typedef enum EVENTSECURITYOPERATION {
- EventSecuritySetDACL,
- EventSecuritySetSACL,
- EventSecurityAddDACL,
- EventSecurityAddSACL,
- EventSecurityMax
-} EVENTSECURITYOPERATION;
-
-typedef struct _EVENT_EXTENDED_ITEM_INSTANCE {
- ULONG InstanceId;
- ULONG ParentInstanceId;
- GUID ParentGuid;
-} EVENT_EXTENDED_ITEM_INSTANCE, *PEVENT_EXTENDED_ITEM_INSTANCE;
-
-typedef struct _EVENT_EXTENDED_ITEM_TS_ID {
- ULONG SessionId;
-} EVENT_EXTENDED_ITEM_TS_ID, *PEVENT_EXTENDED_ITEM_TS_ID;
-
-typedef struct _EVENT_EXTENDED_ITEM_RELATED_ACTIVITYID {
- GUID RelatedActivityId;
-} EVENT_EXTENDED_ITEM_RELATED_ACTIVITYID,
*PEVENT_EXTENDED_ITEM_RELATED_ACTIVITYID;
-
-typedef struct _EVENT_HEADER_EXTENDED_DATA_ITEM {
- USHORT Reserved1;
- USHORT ExtType;
- __C89_NAMELESS struct {
- USHORT Linkage : 1;
- USHORT Reserved2 :15;
- } DUMMYSTRUCTNAME;
- USHORT DataSize;
- ULONGLONG DataPtr;
-} EVENT_HEADER_EXTENDED_DATA_ITEM, *PEVENT_HEADER_EXTENDED_DATA_ITEM;
-
-typedef struct _EVENT_HEADER {
- USHORT Size;
- USHORT HeaderType;
- USHORT Flags;
- USHORT EventProperty;
- ULONG ThreadId;
- ULONG ProcessId;
- LARGE_INTEGER TimeStamp;
- GUID ProviderId;
- EVENT_DESCRIPTOR EventDescriptor;
- __C89_NAMELESS union {
+#define EVENT_HEADER_EXT_TYPE_RELATED_ACTIVITYID 0x0001
+#define EVENT_HEADER_EXT_TYPE_SID 0x0002
+#define EVENT_HEADER_EXT_TYPE_TS_ID 0x0003
+#define EVENT_HEADER_EXT_TYPE_INSTANCE_INFO 0x0004
+#define EVENT_HEADER_EXT_TYPE_STACK_TRACE32 0x0005
+#define EVENT_HEADER_EXT_TYPE_STACK_TRACE64 0x0006
+#define EVENT_HEADER_EXT_TYPE_PEBS_INDEX 0x0007
+#define EVENT_HEADER_EXT_TYPE_PMC_COUNTERS 0x0008
+#define EVENT_HEADER_EXT_TYPE_MAX 0x0009
+
+#define EVENT_HEADER_PROPERTY_XML 0x0001
+#define EVENT_HEADER_PROPERTY_FORWARDED_XML 0x0002
+#define EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG 0x0004
+
+#define EVENT_HEADER_FLAG_EXTENDED_INFO 0x0001
+#define EVENT_HEADER_FLAG_PRIVATE_SESSION 0x0002
+#define EVENT_HEADER_FLAG_STRING_ONLY 0x0004
+#define EVENT_HEADER_FLAG_TRACE_MESSAGE 0x0008
+#define EVENT_HEADER_FLAG_NO_CPUTIME 0x0010
+#define EVENT_HEADER_FLAG_32_BIT_HEADER 0x0020
+#define EVENT_HEADER_FLAG_64_BIT_HEADER 0x0040
+#define EVENT_HEADER_FLAG_CLASSIC_HEADER 0x0100
+#define EVENT_HEADER_FLAG_PROCESSOR_INDEX 0x0200
+
+#define EVENT_ENABLE_PROPERTY_SID 0x00000001
+#define EVENT_ENABLE_PROPERTY_TS_ID 0x00000002
+#define EVENT_ENABLE_PROPERTY_STACK_TRACE 0x00000004
+
+#define PROCESS_TRACE_MODE_REAL_TIME 0x00000100
+#define PROCESS_TRACE_MODE_RAW_TIMESTAMP 0x00001000
+#define PROCESS_TRACE_MODE_EVENT_RECORD 0x10000000
+
+ typedef enum {
+ EventSecuritySetDACL,
+ EventSecuritySetSACL,
+ EventSecurityAddDACL,
+ EventSecurityAddSACL,
+ EventSecurityMax
+ } EVENTSECURITYOPERATION;
+
+#ifndef EVENT_HEADER_EXTENDED_DATA_ITEM_DEF
+#define EVENT_HEADER_EXTENDED_DATA_ITEM_DEF
+ typedef struct _EVENT_HEADER_EXTENDED_DATA_ITEM {
+ USHORT Reserved1;
+ USHORT ExtType;
__C89_NAMELESS struct {
- ULONG KernelTime;
- ULONG UserTime;
- } DUMMYSTRUCTNAME;
- ULONG64 ProcessorTime;
- } DUMMYUNIONNAME;
- GUID ActivityId;
-} EVENT_HEADER, *PEVENT_HEADER;
-
-#define EVENT_HEADER_PROPERTY_XML 0x0001
-#define EVENT_HEADER_PROPERTY_FORWARDED_XML 0x0002
-#define EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG 0x0004
-
-#define EVENT_HEADER_FLAG_EXTENDED_INFO 0x0001
-#define EVENT_HEADER_FLAG_PRIVATE_SESSION 0x0002
-#define EVENT_HEADER_FLAG_STRING_ONLY 0x0004
-#define EVENT_HEADER_FLAG_TRACE_MESSAGE 0x0008
-#define EVENT_HEADER_FLAG_NO_CPUTIME 0x0010
-#define EVENT_HEADER_FLAG_32_BIT_HEADER 0x0020
-#define EVENT_HEADER_FLAG_64_BIT_HEADER 0x0040
-#define EVENT_HEADER_FLAG_CLASSIC_HEADER 0x0100
+ USHORT Linkage : 1;
+ USHORT Reserved2 : 15;
+ };
+ USHORT DataSize;
+ ULONGLONG DataPtr;
+ } EVENT_HEADER_EXTENDED_DATA_ITEM,*PEVENT_HEADER_EXTENDED_DATA_ITEM;
+#endif
-#define EVENT_HEADER_EXT_TYPE_RELATED_ACTIVITYID 0x0001
-#define EVENT_HEADER_EXT_TYPE_SID 0x0002
-#define EVENT_HEADER_EXT_TYPE_TS_ID 0x0003
-#define EVENT_HEADER_EXT_TYPE_INSTANCE_INFO 0x0004
-#define EVENT_HEADER_EXT_TYPE_STACK_TRACE32 0x0005
-#define EVENT_HEADER_EXT_TYPE_STACK_TRACE64 0x0006
-
-struct _EVENT_RECORD {
- EVENT_HEADER EventHeader;
- ETW_BUFFER_CONTEXT BufferContext;
- USHORT ExtendedDataCount;
- USHORT UserDataLength;
- PEVENT_HEADER_EXTENDED_DATA_ITEM ExtendedData;
- PVOID UserData;
- PVOID UserContext;
-};
-#ifndef DEFINED_PEVENT_RECORD
-typedef struct _EVENT_RECORD EVENT_RECORD, *PEVENT_RECORD;
-#define DEFINED_PEVENT_RECORD 1
-#endif /* for evntrace.h */
-
-#if (_WIN32_WINNT >= 0x0601)
-typedef struct _EVENT_EXTENDED_ITEM_STACK_TRACE32 {
- ULONG64 MatchId;
- ULONG Address[ANYSIZE_ARRAY];
-} EVENT_EXTENDED_ITEM_STACK_TRACE32, *PEVENT_EXTENDED_ITEM_STACK_TRACE32;
-
-typedef struct _EVENT_EXTENDED_ITEM_STACK_TRACE64 {
- ULONG64 MatchId;
- ULONG64 Address[ANYSIZE_ARRAY];
-} EVENT_EXTENDED_ITEM_STACK_TRACE64, *PEVENT_EXTENDED_ITEM_STACK_TRACE64;
-#endif /*(_WIN32_WINNT >= 0x0601)*/
-
-#define EVENT_ENABLE_PROPERTY_SID 0x00000001
-#define EVENT_ENABLE_PROPERTY_TS_ID 0x00000002
-#define EVENT_ENABLE_PROPERTY_STACK_TRACE 0x00000004
-
-#define PROCESS_TRACE_MODE_REAL_TIME 0x00000100
-#define PROCESS_TRACE_MODE_RAW_TIMESTAMP 0x00001000
-#define PROCESS_TRACE_MODE_EVENT_RECORD 0x10000000
-
-#if (_WIN32_WINNT >= 0x0600)
-ULONG EVNTAPI EventAccessControl(
- LPGUID Guid,
- ULONG Operation,
- PSID Sid,
- ULONG Rights,
- BOOLEAN AllowOrDeny
-);
-
-ULONG EVNTAPI EventAccessQuery(
- LPGUID Guid,
- PSECURITY_DESCRIPTOR Buffer,
- PULONG BufferSize
-);
-
-ULONG EVNTAPI EventAccessRemove(
- LPGUID Guid
-);
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+ typedef struct _EVENT_EXTENDED_ITEM_INSTANCE {
+ ULONG InstanceId;
+ ULONG ParentInstanceId;
+ GUID ParentGuid;
+ } EVENT_EXTENDED_ITEM_INSTANCE,*PEVENT_EXTENDED_ITEM_INSTANCE;
+
+ typedef struct _EVENT_EXTENDED_ITEM_RELATED_ACTIVITYID {
+ GUID RelatedActivityId;
+ }
EVENT_EXTENDED_ITEM_RELATED_ACTIVITYID,*PEVENT_EXTENDED_ITEM_RELATED_ACTIVITYID;
+
+ typedef struct _EVENT_EXTENDED_ITEM_TS_ID {
+ ULONG SessionId;
+ } EVENT_EXTENDED_ITEM_TS_ID,*PEVENT_EXTENDED_ITEM_TS_ID;
+
+ typedef struct _EVENT_EXTENDED_ITEM_STACK_TRACE32 {
+ ULONG64 MatchId;
+ ULONG Address[ANYSIZE_ARRAY];
+ } EVENT_EXTENDED_ITEM_STACK_TRACE32,*PEVENT_EXTENDED_ITEM_STACK_TRACE32;
+
+ typedef struct _EVENT_EXTENDED_ITEM_STACK_TRACE64 {
+ ULONG64 MatchId;
+ ULONG64 Address[ANYSIZE_ARRAY];
+ } EVENT_EXTENDED_ITEM_STACK_TRACE64,*PEVENT_EXTENDED_ITEM_STACK_TRACE64;
+
+ typedef struct _EVENT_EXTENDED_ITEM_PEBS_INDEX {
+ ULONG64 PebsIndex;
+ } EVENT_EXTENDED_ITEM_PEBS_INDEX,*PEVENT_EXTENDED_ITEM_PEBS_INDEX;
+
+ typedef struct _EVENT_EXTENDED_ITEM_PMC_COUNTERS {
+ ULONG64 Counter[ANYSIZE_ARRAY];
+ } EVENT_EXTENDED_ITEM_PMC_COUNTERS,*PEVENT_EXTENDED_ITEM_PMC_COUNTERS;
+
+#ifndef EVENT_HEADER_DEF
+#define EVENT_HEADER_DEF
+ typedef struct _EVENT_HEADER {
+ USHORT Size;
+ USHORT HeaderType;
+ USHORT Flags;
+ USHORT EventProperty;
+ ULONG ThreadId;
+ ULONG ProcessId;
+ LARGE_INTEGER TimeStamp;
+ GUID ProviderId;
+ EVENT_DESCRIPTOR EventDescriptor;
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ ULONG KernelTime;
+ ULONG UserTime;
+ } DUMMYSTRUCTNAME;
+ ULONG64 ProcessorTime;
+ } DUMMYUNIONNAME;
+ GUID ActivityId;
+ } EVENT_HEADER,*PEVENT_HEADER;
+#endif
+
+#ifndef EVENT_RECORD_DEF
+#define EVENT_RECORD_DEF
+ typedef struct _EVENT_RECORD {
+ EVENT_HEADER EventHeader;
+ ETW_BUFFER_CONTEXT BufferContext;
+ USHORT ExtendedDataCount;
+ USHORT UserDataLength;
+ PEVENT_HEADER_EXTENDED_DATA_ITEM ExtendedData;
+ PVOID UserData;
+ PVOID UserContext;
+ } EVENT_RECORD,*PEVENT_RECORD;
+
+ typedef const EVENT_RECORD *PCEVENT_RECORD;
+#endif
+
+#if WINVER >= 0x0600
+ ULONG EVNTAPI EventAccessControl (LPGUID Guid, ULONG Operation, PSID Sid,
ULONG Rights, BOOLEAN AllowOrDeny);
+ ULONG EVNTAPI EventAccessQuery (LPGUID Guid, PSECURITY_DESCRIPTOR Buffer,
PULONG BufferSize);
+ ULONG EVNTAPI EventAccessRemove (LPGUID Guid);
+#endif
+
+ FORCEINLINE ULONG GetEventProcessorIndex (PCEVENT_RECORD er) {
+ return ((er->EventHeader.Flags & EVENT_HEADER_FLAG_PROCESSOR_INDEX) != 0 ?
er->BufferContext.ProcessorIndex : er->BufferContext.ProcessorNumber);
+ }
#ifdef __cplusplus
}
#endif
-#endif /* _EVNTCONS_H_ */
-
+#endif
+#endif
diff --git a/mingw-w64-headers/include/evntprov.h
b/mingw-w64-headers/include/evntprov.h
index 5170112..6c2c573 100644
--- a/mingw-w64-headers/include/evntprov.h
+++ b/mingw-w64-headers/include/evntprov.h
@@ -1,3 +1,7 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
/*
* evntprov.h
*
@@ -5,6 +9,7 @@
*
* Contributors:
* Created by Amine Khaldi.
+ * Extended by Kai Tietz for mingw-w64
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
@@ -21,344 +26,216 @@
#ifndef _EVNTPROV_H_
#define _EVNTPROV_H_
-#ifndef EVNTAPI
-#ifndef MIDL_PASS
+#include <winapifamily.h>
+
+#if !defined (EVNTAPI) && !defined (__WIDL__) && !defined (MIDL_PASS)
#ifdef _EVNT_SOURCE_
-#if defined(_ARM_)
+#ifdef _ARM_
#define EVNTAPI
#else
#define EVNTAPI __stdcall
#endif
#else
-#if defined(_ARM_)
+#ifdef _ARM_
#define EVNTAPI DECLSPEC_IMPORT
#else
#define EVNTAPI DECLSPEC_IMPORT __stdcall
#endif
-#endif /* _EVNT_SOURCE_ */
-#endif /* MIDL_PASS */
-#endif /* EVNTAPI */
-
-#ifdef __cplusplus
-extern "C" {
+#endif
#endif
-#include <guiddef.h>
-
-#define EVENT_MIN_LEVEL 0
-#define EVENT_MAX_LEVEL 0xff
-
-#define EVENT_ACTIVITY_CTRL_GET_ID 1
-#define EVENT_ACTIVITY_CTRL_SET_ID 2
-#define EVENT_ACTIVITY_CTRL_CREATE_ID 3
-#define EVENT_ACTIVITY_CTRL_GET_SET_ID 4
-#define EVENT_ACTIVITY_CTRL_CREATE_SET_ID 5
-
-typedef ULONGLONG REGHANDLE, *PREGHANDLE;
-
-#define MAX_EVENT_DATA_DESCRIPTORS 128
-#define MAX_EVENT_FILTER_DATA_SIZE 1024
-
-#define EVENT_FILTER_TYPE_SCHEMATIZED 0x80000000
-
-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_DATA_DESCRIPTOR {
- ULONGLONG Ptr;
- ULONG Size;
- ULONG Reserved;
-} EVENT_DATA_DESCRIPTOR, *PEVENT_DATA_DESCRIPTOR;
-
-struct _EVENT_FILTER_DESCRIPTOR {
- ULONGLONG Ptr;
- ULONG Size;
- ULONG Type;
-};
-#ifndef DEFINED_PEVENT_FILTER_DESC
-typedef struct _EVENT_FILTER_DESCRIPTOR EVENT_FILTER_DESCRIPTOR,
*PEVENT_FILTER_DESCRIPTOR;
-#define DEFINED_PEVENT_FILTER_DESC 1
-#endif /* for evntrace.h */
-
-typedef struct _EVENT_FILTER_HEADER {
- USHORT Id;
- UCHAR Version;
- UCHAR Reserved[5];
- ULONGLONG InstanceId;
- ULONG Size;
- ULONG NextOffset;
-} EVENT_FILTER_HEADER, *PEVENT_FILTER_HEADER;
-
-
-#ifndef _ETW_KM_ /* for wdm.h */
-
-typedef VOID
-(NTAPI *PENABLECALLBACK)(
- LPCGUID SourceId,
- ULONG IsEnabled,
- UCHAR Level,
- ULONGLONG MatchAnyKeyword,
- ULONGLONG MatchAllKeyword,
- PEVENT_FILTER_DESCRIPTOR FilterData,
- PVOID CallbackContext);
-
-#if (WINVER >= 0x0600)
-ULONG EVNTAPI EventRegister(
- LPCGUID ProviderId,
- PENABLECALLBACK EnableCallback,
- PVOID CallbackContext,
- PREGHANDLE RegHandle
-);
-
-ULONG EVNTAPI EventUnregister(
- REGHANDLE RegHandle
-);
-
-BOOLEAN EVNTAPI EventEnabled(
- REGHANDLE RegHandle,
- PCEVENT_DESCRIPTOR EventDescriptor
-);
-
-BOOLEAN EVNTAPI EventProviderEnabled(
- REGHANDLE RegHandle,
- UCHAR Level,
- ULONGLONG Keyword
-);
-
-ULONG EVNTAPI EventWrite(
- REGHANDLE RegHandle,
- PCEVENT_DESCRIPTOR EventDescriptor,
- ULONG UserDataCount,
- PEVENT_DATA_DESCRIPTOR UserData
-);
-
-ULONG EVNTAPI EventWriteTransfer(
- REGHANDLE RegHandle,
- PCEVENT_DESCRIPTOR EventDescriptor,
- LPCGUID ActivityId,
- LPCGUID RelatedActivityId,
- ULONG UserDataCount,
- PEVENT_DATA_DESCRIPTOR UserData
-);
-
-ULONG EVNTAPI EventWriteString(
- REGHANDLE RegHandle,
- UCHAR Level,
- ULONGLONG Keyword,
- PCWSTR String
-);
-
-ULONG EVNTAPI EventActivityIdControl(
- ULONG ControlCode,
- LPGUID ActivityId
-);
-
-#endif /*(WINVER >= 0x0600)*/
-
-#if (_WIN32_WINNT >= 0x0601)
-ULONG EVNTAPI EventWriteEx(
- REGHANDLE RegHandle,
- PCEVENT_DESCRIPTOR EventDescriptor,
- ULONG64 Filter,
- ULONG Flags,
- LPCGUID ActivityId,
- LPCGUID RelatedActivityId,
- ULONG UserDataCount,
- PEVENT_DATA_DESCRIPTOR UserData
-);
-#endif /*(_WIN32_WINNT >= 0x0601)*/
-
-#endif /* _ETW_KM_ */
-
-FORCEINLINE
-VOID
-EventDataDescCreate(
- PEVENT_DATA_DESCRIPTOR EventDataDescriptor,
- const VOID* DataPtr,
- ULONG DataSize)
-{
- EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr;
- EventDataDescriptor->Size = DataSize;
- EventDataDescriptor->Reserved = 0;
-}
-
-FORCEINLINE
-VOID
-EventDescCreate(
- PEVENT_DESCRIPTOR EventDescriptor,
- USHORT Id,
- UCHAR Version,
- UCHAR Channel,
- UCHAR Level,
- USHORT Task,
- UCHAR Opcode,
- ULONGLONG Keyword)
-{
- EventDescriptor->Id = Id;
- EventDescriptor->Version = Version;
- EventDescriptor->Channel = Channel;
- EventDescriptor->Level = Level;
- EventDescriptor->Task = Task;
- EventDescriptor->Opcode = Opcode;
- EventDescriptor->Keyword = Keyword;
-}
-
-FORCEINLINE
-VOID
-EventDescZero(
- PEVENT_DESCRIPTOR EventDescriptor)
-{
- memset(EventDescriptor, 0, sizeof(EVENT_DESCRIPTOR));
-}
-
-FORCEINLINE
-USHORT
-EventDescGetId(
- PCEVENT_DESCRIPTOR EventDescriptor)
-{
- return (EventDescriptor->Id);
-}
-
-FORCEINLINE
-UCHAR
-EventDescGetVersion(
- PCEVENT_DESCRIPTOR EventDescriptor)
-{
- return (EventDescriptor->Version);
-}
-
-FORCEINLINE
-USHORT
-EventDescGetTask(
- PCEVENT_DESCRIPTOR EventDescriptor)
-{
- return (EventDescriptor->Task);
-}
-
-FORCEINLINE
-UCHAR
-EventDescGetOpcode(
- PCEVENT_DESCRIPTOR EventDescriptor)
-{
- return (EventDescriptor->Opcode);
-}
+#define EVENT_MIN_LEVEL (0)
+#define EVENT_MAX_LEVEL (0xff)
-FORCEINLINE
-UCHAR
-EventDescGetChannel(
- PCEVENT_DESCRIPTOR EventDescriptor)
-{
- return (EventDescriptor->Channel);
-}
+#define EVENT_ACTIVITY_CTRL_GET_ID (1)
+#define EVENT_ACTIVITY_CTRL_SET_ID (2)
+#define EVENT_ACTIVITY_CTRL_CREATE_ID (3)
+#define EVENT_ACTIVITY_CTRL_GET_SET_ID (4)
+#define EVENT_ACTIVITY_CTRL_CREATE_SET_ID (5)
-FORCEINLINE
-UCHAR
-EventDescGetLevel(
- PCEVENT_DESCRIPTOR EventDescriptor)
-{
- return (EventDescriptor->Level);
-}
+#define EVENT_FILTER_TYPE_SCHEMATIZED (0x80000000)
+#define EVENT_FILTER_TYPE_SYSTEM_FLAGS (0x80000001)
+#define EVENT_FILTER_TYPE_TRACEHANDLE (0x80000002)
-FORCEINLINE
-ULONGLONG
-EventDescGetKeyword(
- PCEVENT_DESCRIPTOR EventDescriptor)
-{
- return (EventDescriptor->Keyword);
-}
+#define MAX_EVENT_DATA_DESCRIPTORS (128)
+#define MAX_EVENT_FILTER_DATA_SIZE (1024)
-FORCEINLINE
-PEVENT_DESCRIPTOR
-EventDescSetId(
- PEVENT_DESCRIPTOR EventDescriptor,
- USHORT Id)
-{
- EventDescriptor->Id = Id;
- return (EventDescriptor);
-}
+#ifdef __cplusplus
+extern "C" {
+#endif
-FORCEINLINE
-PEVENT_DESCRIPTOR
-EventDescSetVersion(
- PEVENT_DESCRIPTOR EventDescriptor,
- UCHAR Version)
-{
- EventDescriptor->Version = Version;
- return (EventDescriptor);
-}
+#include <guiddef.h>
-FORCEINLINE
-PEVENT_DESCRIPTOR
-EventDescSetTask(
- PEVENT_DESCRIPTOR EventDescriptor,
- USHORT Task)
-{
- EventDescriptor->Task = Task;
- return (EventDescriptor);
-}
+ typedef ULONGLONG REGHANDLE,*PREGHANDLE;
+
+ typedef struct _EVENT_DATA_DESCRIPTOR {
+ ULONGLONG Ptr;
+ ULONG Size;
+ ULONG Reserved;
+ } EVENT_DATA_DESCRIPTOR,*PEVENT_DATA_DESCRIPTOR;
+
+#ifndef EVENT_DESCRIPTOR_DEF
+#define EVENT_DESCRIPTOR_DEF
+ 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;
+#endif
-FORCEINLINE
-PEVENT_DESCRIPTOR
-EventDescSetOpcode(
- PEVENT_DESCRIPTOR EventDescriptor,
- UCHAR Opcode)
-{
- EventDescriptor->Opcode = Opcode;
- return (EventDescriptor);
-}
+ typedef struct _EVENT_FILTER_DESCRIPTOR {
+ ULONGLONG Ptr;
+ ULONG Size;
+ ULONG Type;
+ };
-FORCEINLINE
-PEVENT_DESCRIPTOR
-EventDescSetLevel(
- PEVENT_DESCRIPTOR EventDescriptor,
- UCHAR Level)
-{
- EventDescriptor->Level = Level;
- return (EventDescriptor);
-}
+#ifndef DEFINED_PEVENT_FILTER_DESC
+#define DEFINED_PEVENT_FILTER_DESC
+ typedef struct _EVENT_FILTER_DESCRIPTOR
EVENT_FILTER_DESCRIPTOR,*PEVENT_FILTER_DESCRIPTOR;
+#endif /* for evntrace.h */
+
+ typedef struct _EVENT_FILTER_HEADER {
+ USHORT Id;
+ UCHAR Version;
+ UCHAR Reserved[5];
+ ULONGLONG InstanceId;
+ ULONG Size;
+ ULONG NextOffset;
+ } EVENT_FILTER_HEADER,*PEVENT_FILTER_HEADER;
+
+#if !defined (_ETW_KM_) && !defined (__WIDL__) /* for wdm.h & widl */
+ typedef enum _EVENT_INFO_CLASS {
+ EventProviderBinaryTrackInfo,
+ MaxEventInfo
+ } EVENT_INFO_CLASS;
+
+ typedef VOID (NTAPI *PENABLECALLBACK) (LPCGUID SourceId, ULONG IsEnabled,
UCHAR Level, ULONGLONG MatchAnyKeyword, ULONGLONG MatchAllKeyword,
PEVENT_FILTER_DESCRIPTOR FilterData, PVOID CallbackContext);
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+#if WINVER >= 0x0600
+ BOOLEAN EVNTAPI EventEnabled (REGHANDLE RegHandle, PCEVENT_DESCRIPTOR
EventDescriptor);
+ BOOLEAN EVNTAPI EventProviderEnabled (REGHANDLE RegHandle, UCHAR Level,
ULONGLONG Keyword);
+ ULONG EVNTAPI EventWriteTransfer (REGHANDLE RegHandle, PCEVENT_DESCRIPTOR
EventDescriptor, LPCGUID ActivityId, LPCGUID RelatedActivityId, ULONG
UserDataCount, PEVENT_DATA_DESCRIPTOR UserData);
+ ULONG EVNTAPI EventWriteString (REGHANDLE RegHandle, UCHAR Level, ULONGLONG
Keyword, PCWSTR String);
+ ULONG EVNTAPI EventActivityIdControl (ULONG ControlCode, LPGUID ActivityId);
+#endif
+#if WINVER >= 0x0601
+ ULONG EVNTAPI EventWriteEx (REGHANDLE RegHandle, PCEVENT_DESCRIPTOR
EventDescriptor, ULONG64 Filter, ULONG Flags, LPCGUID ActivityId, LPCGUID
RelatedActivityId, ULONG UserDataCount, PEVENT_DATA_DESCRIPTOR UserData);
+#endif
+#endif
-FORCEINLINE
-PEVENT_DESCRIPTOR
-EventDescSetChannel(
- PEVENT_DESCRIPTOR EventDescriptor,
- UCHAR Channel)
-{
- EventDescriptor->Channel = Channel;
- return (EventDescriptor);
-}
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
+#if WINVER >= 0x0600
+ ULONG EVNTAPI EventRegister (LPCGUID ProviderId, PENABLECALLBACK
EnableCallback, PVOID CallbackContext, PREGHANDLE RegHandle);
+ ULONG EVNTAPI EventUnregister (REGHANDLE RegHandle);
+ ULONG EVNTAPI EventWrite (REGHANDLE RegHandle, PCEVENT_DESCRIPTOR
EventDescriptor, ULONG UserDataCount, PEVENT_DATA_DESCRIPTOR UserData);
+#endif
+#if WINVER >= 0x0602
+ ULONG EVNTAPI EventSetInformation (REGHANDLE RegHandle, EVENT_INFO_CLASS
InformationClass, PVOID EventInformation, ULONG InformationLength);
+#endif
+#endif
-FORCEINLINE
-PEVENT_DESCRIPTOR
-EventDescSetKeyword(
- PEVENT_DESCRIPTOR EventDescriptor,
- ULONGLONG Keyword)
-{
- EventDescriptor->Keyword = Keyword;
- return (EventDescriptor);
-}
+#endif
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
+ FORCEINLINE VOID EventDataDescCreate (PEVENT_DATA_DESCRIPTOR evp, const VOID
*d, ULONG sz) {
+ evp->Ptr = (ULONGLONG) (ULONG_PTR) d;
+ evp->Size = sz;
+ evp->Reserved = 0;
+ }
+#endif
-FORCEINLINE
-PEVENT_DESCRIPTOR
-EventDescOrKeyword(
- PEVENT_DESCRIPTOR EventDescriptor,
- ULONGLONG Keyword)
-{
- EventDescriptor->Keyword |= Keyword;
- return (EventDescriptor);
-}
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+ FORCEINLINE VOID EventDescCreate (PEVENT_DESCRIPTOR ev, USHORT Id, UCHAR
ver, UCHAR ch, UCHAR lvl, USHORT t, UCHAR opc, ULONGLONG keyw) {
+ ev->Id = Id;
+ ev->Version = ver;
+ ev->Channel = ch;
+ ev->Level = lvl;
+ ev->Task = t;
+ ev->Opcode = opc;
+ ev->Keyword = keyw;
+ }
+
+ FORCEINLINE UCHAR EventDescGetChannel (PCEVENT_DESCRIPTOR ev) {
+ return ev->Channel;
+ }
+
+ FORCEINLINE USHORT EventDescGetId (PCEVENT_DESCRIPTOR ev) {
+ return ev->Id;
+ }
+
+ FORCEINLINE ULONGLONG EventDescGetKeyword (PCEVENT_DESCRIPTOR ev) {
+ return ev->Keyword;
+ }
+
+ FORCEINLINE UCHAR EventDescGetLevel (PCEVENT_DESCRIPTOR ev) {
+ return ev->Level;
+ }
+
+ FORCEINLINE UCHAR EventDescGetOpcode (PCEVENT_DESCRIPTOR ev) {
+ return ev->Opcode;
+ }
+
+ FORCEINLINE USHORT EventDescGetTask (PCEVENT_DESCRIPTOR ev) {
+ return ev->Task;
+ }
+
+ FORCEINLINE PEVENT_DESCRIPTOR EventDescOrKeyword (PEVENT_DESCRIPTOR ev,
ULONGLONG keyw) {
+ ev->Keyword |= keyw;
+ return ev;
+ }
+
+ FORCEINLINE UCHAR EventDescGetVersion (PCEVENT_DESCRIPTOR ev) {
+ return ev->Version;
+ }
+
+ FORCEINLINE PEVENT_DESCRIPTOR EventDescSetChannel (PEVENT_DESCRIPTOR ev,
UCHAR ch) {
+ ev->Channel = ch;
+ return ev;
+ }
+
+ FORCEINLINE PEVENT_DESCRIPTOR EventDescSetId (PEVENT_DESCRIPTOR ev, USHORT
Id) {
+ ev->Id = Id;
+ return ev;
+ }
+
+ FORCEINLINE PEVENT_DESCRIPTOR EventDescSetKeyword (PEVENT_DESCRIPTOR ev,
ULONGLONG keyw) {
+ ev->Keyword = keyw;
+ return ev;
+ }
+
+ FORCEINLINE PEVENT_DESCRIPTOR EventDescSetLevel (PEVENT_DESCRIPTOR ev, UCHAR
lvl) {
+ ev->Level = Lvl;
+ return ev;
+ }
+
+ FORCEINLINE PEVENT_DESCRIPTOR EventDescSetOpcode (PEVENT_DESCRIPTOR ev,
UCHAR opc) {
+ ev->Opcode = opc;
+ return ev;
+ }
+
+ FORCEINLINE PEVENT_DESCRIPTOR EventDescSetTask (PEVENT_DESCRIPTOR ev, USHORT
t) {
+ ev->Task = t;
+ return ev;
+ }
+
+ FORCEINLINE PEVENT_DESCRIPTOR EventDescSetVersion (PEVENT_DESCRIPTOR ev,
UCHAR ver) {
+ ev->Version = ver;
+ return ev;
+ }
+
+ FORCEINLINE VOID EventDescZero (PEVENT_DESCRIPTOR ev) {
+ memset (ev, 0, sizeof (EVENT_DESCRIPTOR));
+ }
+#endif
#ifdef __cplusplus
}
#endif
-#endif /* _EVNTPROV_H_ */
-
+#endif
diff --git a/mingw-w64-headers/include/evntrace.h
b/mingw-w64-headers/include/evntrace.h
index 5c50975..c7b9260 100644
--- a/mingw-w64-headers/include/evntrace.h
+++ b/mingw-w64-headers/include/evntrace.h
@@ -1,296 +1,289 @@
/**
- * This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
*/
+
+#include <winapifamily.h>
+
#ifndef _EVNTRACE_
#define _EVNTRACE_
-#if defined(_WINNT_) || defined(WINNT)
+#if defined (_WINNT_) || defined (WINNT)
-#ifndef WMIAPI
-#ifndef MIDL_PASS
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
+
+#if !defined (WMIAPI) && !defined (__WIDL__) && !defined (MIDL_PASS)
#ifdef _WMI_SOURCE_
-#if defined(_ARM_)
+#ifdef _ARM_
#define WMIAPI
#else
#define WMIAPI __stdcall
#endif
#else
-#if defined(_ARM_)
+#ifdef _ARM_
#define WMIAPI DECLSPEC_IMPORT
#else
#define WMIAPI DECLSPEC_IMPORT __stdcall
#endif
#endif
-#endif /* MIDL_PASS */
-#endif /* WMIAPI */
+#endif
#include <guiddef.h>
-DEFINE_GUID
(EventTraceGuid,0x68fdd900,0x4a3e,0x11d1,0x84,0xf4,0x00,0x00,0xf8,0x04,0x64,0xe3);
-DEFINE_GUID
(SystemTraceControlGuid,0x9e814aad,0x3204,0x11d2,0x9a,0x82,0x00,0x60,0x08,0xa8,0x69,0x39);
-DEFINE_GUID
(EventTraceConfigGuid,0x01853a65,0x418f,0x4f36,0xae,0xfc,0xdc,0x0f,0x1d,0x2f,0xd2,0x35);
-DEFINE_GUID
(DefaultTraceSecurityGuid,0x0811c1af,0x7a07,0x4a06,0x82,0xed,0x86,0x94,0x55,0xcd,0xf7,0x13);
+#if defined (_NTDDK_) || defined (_NTIFS_) || defined (_WMIKM_)
+#define _EVNTRACE_KERNEL_MODE
+#endif
+
+#ifndef _EVNTRACE_KERNEL_MODE
+#include <wmistr.h>
+#endif
+
+DEFINE_GUID (EventTraceGuid, 0x68fdd900, 0x4a3e, 0x11d1, 0x84, 0xf4, 0x00,
0x00, 0xf8, 0x04, 0x64, 0xe3);
+DEFINE_GUID (SystemTraceControlGuid, 0x9e814aad, 0x3204, 0x11d2, 0x9a, 0x82,
0x00, 0x60, 0x08, 0xa8, 0x69, 0x39);
+DEFINE_GUID (EventTraceConfigGuid, 0x01853a65, 0x418f, 0x4f36, 0xae, 0xfc,
0xdc, 0x0f, 0x1d, 0x2f, 0xd2, 0x35);
+DEFINE_GUID (DefaultTraceSecurityGuid, 0x0811c1af, 0x7a07, 0x4a06, 0x82, 0xed,
0x86, 0x94, 0x55, 0xcd, 0xf7, 0x13);
-#define KERNEL_LOGGER_NAMEW L"NT Kernel Logger"
-#define GLOBAL_LOGGER_NAMEW L"GlobalLogger"
-#define EVENT_LOGGER_NAMEW L"Event Log"
-#define DIAG_LOGGER_NAMEW L"DiagLog"
+#define KERNEL_LOGGER_NAMEW L"NT Kernel Logger"
+#define GLOBAL_LOGGER_NAMEW L"GlobalLogger"
+#define EVENT_LOGGER_NAMEW L"EventLog"
+#define DIAG_LOGGER_NAMEW L"DiagLog"
-#define KERNEL_LOGGER_NAMEA "NT Kernel Logger"
-#define GLOBAL_LOGGER_NAMEA "GlobalLogger"
-#define EVENT_LOGGER_NAMEA "Event Log"
-#define DIAG_LOGGER_NAMEA "DiagLog"
+#define KERNEL_LOGGER_NAMEA "NT Kernel Logger"
+#define GLOBAL_LOGGER_NAMEA "GlobalLogger"
+#define EVENT_LOGGER_NAMEA "EventLog"
+#define DIAG_LOGGER_NAMEA "DiagLog"
-#define MAX_MOF_FIELDS 16
+#define MAX_MOF_FIELDS 16
#ifndef _TRACEHANDLE_DEFINED
#define _TRACEHANDLE_DEFINED
typedef ULONG64 TRACEHANDLE,*PTRACEHANDLE;
#endif
-#define SYSTEM_EVENT_TYPE 1
-
-#define EVENT_TRACE_TYPE_INFO 0x00
-#define EVENT_TRACE_TYPE_START 0x01
-#define EVENT_TRACE_TYPE_END 0x02
-#define EVENT_TRACE_TYPE_STOP 0x02
-#define EVENT_TRACE_TYPE_DC_START 0x03
-#define EVENT_TRACE_TYPE_DC_END 0x04
-#define EVENT_TRACE_TYPE_EXTENSION 0x05
-#define EVENT_TRACE_TYPE_REPLY 0x06
-#define EVENT_TRACE_TYPE_DEQUEUE 0x07
-#define EVENT_TRACE_TYPE_RESUME 0x07
-#define EVENT_TRACE_TYPE_CHECKPOINT 0x08
-#define EVENT_TRACE_TYPE_SUSPEND 0x08
-#define EVENT_TRACE_TYPE_WINEVT_SEND 0x09
-#define EVENT_TRACE_TYPE_WINEVT_RECEIVE 0XF0
-
-#define TRACE_LEVEL_NONE 0
-#define TRACE_LEVEL_CRITICAL 1
-#define TRACE_LEVEL_FATAL 1
-#define TRACE_LEVEL_ERROR 2
-#define TRACE_LEVEL_WARNING 3
-#define TRACE_LEVEL_INFORMATION 4
-#define TRACE_LEVEL_VERBOSE 5
-#define TRACE_LEVEL_RESERVED6 6
-#define TRACE_LEVEL_RESERVED7 7
-#define TRACE_LEVEL_RESERVED8 8
-#define TRACE_LEVEL_RESERVED9 9
-
-#define EVENT_TRACE_TYPE_LOAD 0x0A
-
-#define EVENT_TRACE_TYPE_IO_READ 0x0A
-#define EVENT_TRACE_TYPE_IO_WRITE 0x0B
-#define EVENT_TRACE_TYPE_IO_READ_INIT 0x0C
-#define EVENT_TRACE_TYPE_IO_WRITE_INIT 0x0D
-#define EVENT_TRACE_TYPE_IO_FLUSH 0x0E
-#define EVENT_TRACE_TYPE_IO_FLUSH_INIT 0x0F
-
-#define EVENT_TRACE_TYPE_MM_TF 0x0A
-#define EVENT_TRACE_TYPE_MM_DZF 0x0B
-#define EVENT_TRACE_TYPE_MM_COW 0x0C
-#define EVENT_TRACE_TYPE_MM_GPF 0x0D
-#define EVENT_TRACE_TYPE_MM_HPF 0x0E
-#define EVENT_TRACE_TYPE_MM_AV 0x0F
-
-#define EVENT_TRACE_TYPE_SEND 0x0A
-#define EVENT_TRACE_TYPE_RECEIVE 0x0B
-#define EVENT_TRACE_TYPE_CONNECT 0x0C
-#define EVENT_TRACE_TYPE_DISCONNECT 0x0D
-#define EVENT_TRACE_TYPE_RETRANSMIT 0x0E
-#define EVENT_TRACE_TYPE_ACCEPT 0x0F
-#define EVENT_TRACE_TYPE_RECONNECT 0x10
-#define EVENT_TRACE_TYPE_CONNFAIL 0x11
-#define EVENT_TRACE_TYPE_COPY_TCP 0x12
-#define EVENT_TRACE_TYPE_COPY_ARP 0x13
-#define EVENT_TRACE_TYPE_ACKFULL 0x14
-#define EVENT_TRACE_TYPE_ACKPART 0x15
-#define EVENT_TRACE_TYPE_ACKDUP 0x16
-
-#define EVENT_TRACE_TYPE_GUIDMAP 0x0A
-#define EVENT_TRACE_TYPE_CONFIG 0x0B
-#define EVENT_TRACE_TYPE_SIDINFO 0x0C
-#define EVENT_TRACE_TYPE_SECURITY 0x0D
-
-#define EVENT_TRACE_TYPE_REGCREATE 0x0A
-#define EVENT_TRACE_TYPE_REGOPEN 0x0B
-#define EVENT_TRACE_TYPE_REGDELETE 0x0C
-#define EVENT_TRACE_TYPE_REGQUERY 0x0D
-#define EVENT_TRACE_TYPE_REGSETVALUE 0x0E
-#define EVENT_TRACE_TYPE_REGDELETEVALUE 0x0F
-#define EVENT_TRACE_TYPE_REGQUERYVALUE 0x10
-#define EVENT_TRACE_TYPE_REGENUMERATEKEY 0x11
-#define EVENT_TRACE_TYPE_REGENUMERATEVALUEKEY 0x12
-#define EVENT_TRACE_TYPE_REGQUERYMULTIPLEVALUE 0x13
-#define EVENT_TRACE_TYPE_REGSETINFORMATION 0x14
-#define EVENT_TRACE_TYPE_REGFLUSH 0x15
-#define EVENT_TRACE_TYPE_REGKCBCREATE 0x16
-#define EVENT_TRACE_TYPE_REGKCBDELETE 0x17
-#define EVENT_TRACE_TYPE_REGKCBRUNDOWNBEGIN 0x18
-#define EVENT_TRACE_TYPE_REGKCBRUNDOWNEND 0x19
-#define EVENT_TRACE_TYPE_REGVIRTUALIZE 0x1A
-#define EVENT_TRACE_TYPE_REGCLOSE 0x1B
-#define EVENT_TRACE_TYPE_REGSETSECURITY 0x1C
-#define EVENT_TRACE_TYPE_REGQUERYSECURITY 0x1D
-#define EVENT_TRACE_TYPE_REGCOMMIT 0x1E
-#define EVENT_TRACE_TYPE_REGPREPARE 0x1F
-#define EVENT_TRACE_TYPE_REGROLLBACK 0x20
-#define EVENT_TRACE_TYPE_REGMOUNTHIVE 0x21
-
-#define EVENT_TRACE_TYPE_CONFIG_CPU 0x0A
-#define EVENT_TRACE_TYPE_CONFIG_PHYSICALDISK 0x0B
-#define EVENT_TRACE_TYPE_CONFIG_LOGICALDISK 0x0C
-#define EVENT_TRACE_TYPE_CONFIG_NIC 0x0D
-#define EVENT_TRACE_TYPE_CONFIG_VIDEO 0x0E
-#define EVENT_TRACE_TYPE_CONFIG_SERVICES 0x0F
-#define EVENT_TRACE_TYPE_CONFIG_POWER 0x10
-#define EVENT_TRACE_TYPE_CONFIG_NETINFO 0x11
-
-#define EVENT_TRACE_TYPE_CONFIG_IRQ 0x15
-#define EVENT_TRACE_TYPE_CONFIG_PNP 0x16
-#define EVENT_TRACE_TYPE_CONFIG_IDECHANNEL 0x17
-#define EVENT_TRACE_TYPE_CONFIG_PLATFORM 0x19
-
-#define EVENT_TRACE_FLAG_PROCESS 0x00000001
-#define EVENT_TRACE_FLAG_THREAD 0x00000002
-#define EVENT_TRACE_FLAG_IMAGE_LOAD 0x00000004
-
-#define EVENT_TRACE_FLAG_DISK_IO 0x00000100
-#define EVENT_TRACE_FLAG_DISK_FILE_IO 0x00000200
-
-#define EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS 0x00001000
-#define EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS 0x00002000
-
-#define EVENT_TRACE_FLAG_NETWORK_TCPIP 0x00010000
-
-#define EVENT_TRACE_FLAG_REGISTRY 0x00020000
-#define EVENT_TRACE_FLAG_DBGPRINT 0x00040000
-
-#define EVENT_TRACE_FLAG_PROCESS_COUNTERS 0x00000008
-#define EVENT_TRACE_FLAG_CSWITCH 0x00000010
-#define EVENT_TRACE_FLAG_DPC 0x00000020
-#define EVENT_TRACE_FLAG_INTERRUPT 0x00000040
-#define EVENT_TRACE_FLAG_SYSTEMCALL 0x00000080
-
-#define EVENT_TRACE_FLAG_DISK_IO_INIT 0x00000400
-
-#define EVENT_TRACE_FLAG_ALPC 0x00100000
-#define EVENT_TRACE_FLAG_SPLIT_IO 0x00200000
-
-#define EVENT_TRACE_FLAG_DRIVER 0x00800000
-#define EVENT_TRACE_FLAG_PROFILE 0x01000000
-#define EVENT_TRACE_FLAG_FILE_IO 0x02000000
-#define EVENT_TRACE_FLAG_FILE_IO_INIT 0x04000000
-
-#define EVENT_TRACE_FLAG_DISPATCHER 0x00000800
-#define EVENT_TRACE_FLAG_VIRTUAL_ALLOC 0x00004000
-
-#define EVENT_TRACE_FLAG_EXTENSION 0x80000000
-#define EVENT_TRACE_FLAG_FORWARD_WMI 0x40000000
-#define EVENT_TRACE_FLAG_ENABLE_RESERVE 0x20000000
-
-#define EVENT_TRACE_FILE_MODE_NONE 0x00000000
-#define EVENT_TRACE_FILE_MODE_SEQUENTIAL 0x00000001
-#define EVENT_TRACE_FILE_MODE_CIRCULAR 0x00000002
-#define EVENT_TRACE_FILE_MODE_APPEND 0x00000004
-#define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008
-#define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020
-
-#define EVENT_TRACE_NONSTOPPABLE_MODE 0x00000040
-#define EVENT_TRACE_SECURE_MODE 0x00000080
-#define EVENT_TRACE_USE_KBYTES_FOR_SIZE 0x00002000
-#define EVENT_TRACE_PRIVATE_IN_PROC 0x00020000
-#define EVENT_TRACE_MODE_RESERVED 0x00100000
-
-#define EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 0x10000000
-
-#define EVENT_TRACE_REAL_TIME_MODE 0x00000100
-#define EVENT_TRACE_DELAY_OPEN_FILE_MODE 0x00000200
-#define EVENT_TRACE_BUFFERING_MODE 0x00000400
-#define EVENT_TRACE_PRIVATE_LOGGER_MODE 0x00000800
-#define EVENT_TRACE_ADD_HEADER_MODE 0x00001000
-
-#define EVENT_TRACE_USE_GLOBAL_SEQUENCE 0x00004000
-#define EVENT_TRACE_USE_LOCAL_SEQUENCE 0x00008000
-
-#define EVENT_TRACE_RELOG_MODE 0x00010000
-
-#define EVENT_TRACE_USE_PAGED_MEMORY 0x01000000
-
-#define EVENT_TRACE_CONTROL_QUERY 0
-#define EVENT_TRACE_CONTROL_STOP 1
-#define EVENT_TRACE_CONTROL_UPDATE 2
-#define EVENT_TRACE_CONTROL_FLUSH 3
-
-#define TRACE_MESSAGE_SEQUENCE 1
-#define TRACE_MESSAGE_GUID 2
-#define TRACE_MESSAGE_COMPONENTID 4
-#define TRACE_MESSAGE_TIMESTAMP 8
-#define TRACE_MESSAGE_PERFORMANCE_TIMESTAMP 16
-#define TRACE_MESSAGE_SYSTEMINFO 32
-
-#define TRACE_MESSAGE_POINTER32 0x0040
-#define TRACE_MESSAGE_POINTER64 0x0080
-
-#define TRACE_MESSAGE_FLAG_MASK 0xFFFF
-
-#define TRACE_HEADER_FLAG_USE_TIMESTAMP 0x00000200
-#define TRACE_HEADER_FLAG_TRACED_GUID 0x00020000
-#define TRACE_HEADER_FLAG_LOG_WNODE 0x00040000
-#define TRACE_HEADER_FLAG_USE_GUID_PTR 0x00080000
-#define TRACE_HEADER_FLAG_USE_MOF_PTR 0x00100000
-
-#define TRACE_MESSAGE_MAXIMUM_SIZE 8*1024
-
-#define ETW_NULL_TYPE_VALUE 0
-#define ETW_OBJECT_TYPE_VALUE 1
-#define ETW_STRING_TYPE_VALUE 2
-#define ETW_SBYTE_TYPE_VALUE 3
-#define ETW_BYTE_TYPE_VALUE 4
-#define ETW_INT16_TYPE_VALUE 5
-#define ETW_UINT16_TYPE_VALUE 6
-#define ETW_INT32_TYPE_VALUE 7
-#define ETW_UINT32_TYPE_VALUE 8
-#define ETW_INT64_TYPE_VALUE 9
-#define ETW_UINT64_TYPE_VALUE 10
-#define ETW_CHAR_TYPE_VALUE 11
-#define ETW_SINGLE_TYPE_VALUE 12
-#define ETW_DOUBLE_TYPE_VALUE 13
-#define ETW_BOOLEAN_TYPE_VALUE 14
-#define ETW_DECIMAL_TYPE_VALUE 15
-
-#define ETW_GUID_TYPE_VALUE 101
-#define ETW_ASCIICHAR_TYPE_VALUE 102
-#define ETW_ASCIISTRING_TYPE_VALUE 103
-#define ETW_COUNTED_STRING_TYPE_VALUE 104
-#define ETW_POINTER_TYPE_VALUE 105
-#define ETW_SIZET_TYPE_VALUE 106
-#define ETW_HIDDEN_TYPE_VALUE 107
-#define ETW_BOOL_TYPE_VALUE 108
-#define ETW_COUNTED_ANSISTRING_TYPE_VALUE 109
-#define ETW_REVERSED_COUNTED_STRING_TYPE_VALUE 110
-#define ETW_REVERSED_COUNTED_ANSISTRING_TYPE_VALUE 111
-#define ETW_NON_NULL_TERMINATED_STRING_TYPE_VALUE 112
-#define ETW_REDUCED_ANSISTRING_TYPE_VALUE 113
-#define ETW_REDUCED_STRING_TYPE_VALUE 114
-#define ETW_SID_TYPE_VALUE 115
-#define ETW_VARIANT_TYPE_VALUE 116
-#define ETW_PTVECTOR_TYPE_VALUE 117
-#define ETW_WMITIME_TYPE_VALUE 118
-#define ETW_DATETIME_TYPE_VALUE 119
-#define ETW_REFRENCE_TYPE_VALUE 120
-
-#define TRACE_PROVIDER_FLAG_LEGACY 0x00000001
-#define TRACE_PROVIDER_FLAG_PRE_ENABLE 0x00000002
-
-#define EVENT_CONTROL_CODE_DISABLE_PROVIDER 0
-#define EVENT_CONTROL_CODE_ENABLE_PROVIDER 1
-#define EVENT_CONTROL_CODE_CAPTURE_STATE 2
-
-#define EVENT_TRACE_USE_PROCTIME 0x0001
-#define EVENT_TRACE_USE_NOCPUTIME 0x0002
+#define SYSTEM_EVENT_TYPE 1
+
+#define EVENT_TRACE_TYPE_INFO 0x00
+#define EVENT_TRACE_TYPE_START 0x01
+#define EVENT_TRACE_TYPE_END 0x02
+#define EVENT_TRACE_TYPE_STOP 0x02
+#define EVENT_TRACE_TYPE_DC_START 0x03
+#define EVENT_TRACE_TYPE_DC_END 0x04
+#define EVENT_TRACE_TYPE_EXTENSION 0x05
+#define EVENT_TRACE_TYPE_REPLY 0x06
+#define EVENT_TRACE_TYPE_DEQUEUE 0x07
+#define EVENT_TRACE_TYPE_RESUME 0x07
+#define EVENT_TRACE_TYPE_CHECKPOINT 0x08
+#define EVENT_TRACE_TYPE_SUSPEND 0x08
+#define EVENT_TRACE_TYPE_WINEVT_SEND 0x09
+#define EVENT_TRACE_TYPE_WINEVT_RECEIVE 0xf0
+
+#define TRACE_LEVEL_NONE 0
+#define TRACE_LEVEL_CRITICAL 1
+#define TRACE_LEVEL_FATAL 1
+#define TRACE_LEVEL_ERROR 2
+#define TRACE_LEVEL_WARNING 3
+#define TRACE_LEVEL_INFORMATION 4
+#define TRACE_LEVEL_VERBOSE 5
+#define TRACE_LEVEL_RESERVED6 6
+#define TRACE_LEVEL_RESERVED7 7
+#define TRACE_LEVEL_RESERVED8 8
+#define TRACE_LEVEL_RESERVED9 9
+
+#define EVENT_TRACE_TYPE_LOAD 0x0a
+
+#define EVENT_TRACE_TYPE_IO_READ 0x0a
+#define EVENT_TRACE_TYPE_IO_WRITE 0x0b
+#define EVENT_TRACE_TYPE_IO_READ_INIT 0x0c
+#define EVENT_TRACE_TYPE_IO_WRITE_INIT 0x0d
+#define EVENT_TRACE_TYPE_IO_FLUSH 0x0e
+#define EVENT_TRACE_TYPE_IO_FLUSH_INIT 0x0f
+
+#define EVENT_TRACE_TYPE_MM_TF 0x0a
+#define EVENT_TRACE_TYPE_MM_DZF 0x0b
+#define EVENT_TRACE_TYPE_MM_COW 0x0c
+#define EVENT_TRACE_TYPE_MM_GPF 0x0d
+#define EVENT_TRACE_TYPE_MM_HPF 0x0e
+#define EVENT_TRACE_TYPE_MM_AV 0x0f
+
+#define EVENT_TRACE_TYPE_SEND 0x0a
+#define EVENT_TRACE_TYPE_RECEIVE 0x0b
+#define EVENT_TRACE_TYPE_CONNECT 0x0c
+#define EVENT_TRACE_TYPE_DISCONNECT 0x0d
+#define EVENT_TRACE_TYPE_RETRANSMIT 0x0e
+#define EVENT_TRACE_TYPE_ACCEPT 0x0f
+#define EVENT_TRACE_TYPE_RECONNECT 0x10
+#define EVENT_TRACE_TYPE_CONNFAIL 0x11
+#define EVENT_TRACE_TYPE_COPY_TCP 0x12
+#define EVENT_TRACE_TYPE_COPY_ARP 0x13
+#define EVENT_TRACE_TYPE_ACKFULL 0x14
+#define EVENT_TRACE_TYPE_ACKPART 0x15
+#define EVENT_TRACE_TYPE_ACKDUP 0x16
+
+#define EVENT_TRACE_TYPE_GUIDMAP 0x0a
+#define EVENT_TRACE_TYPE_CONFIG 0x0b
+#define EVENT_TRACE_TYPE_SIDINFO 0x0c
+#define EVENT_TRACE_TYPE_SECURITY 0x0d
+#define EVENT_TRACE_TYPE_DBGID_RSDS 0x40
+
+#define EVENT_TRACE_TYPE_REGCREATE 0x0a
+#define EVENT_TRACE_TYPE_REGOPEN 0x0b
+#define EVENT_TRACE_TYPE_REGDELETE 0x0c
+#define EVENT_TRACE_TYPE_REGQUERY 0x0d
+#define EVENT_TRACE_TYPE_REGSETVALUE 0x0e
+#define EVENT_TRACE_TYPE_REGDELETEVALUE 0x0f
+#define EVENT_TRACE_TYPE_REGQUERYVALUE 0x10
+#define EVENT_TRACE_TYPE_REGENUMERATEKEY 0x11
+#define EVENT_TRACE_TYPE_REGENUMERATEVALUEKEY 0x12
+#define EVENT_TRACE_TYPE_REGQUERYMULTIPLEVALUE 0x13
+#define EVENT_TRACE_TYPE_REGSETINFORMATION 0x14
+#define EVENT_TRACE_TYPE_REGFLUSH 0x15
+#define EVENT_TRACE_TYPE_REGKCBCREATE 0x16
+#define EVENT_TRACE_TYPE_REGKCBDELETE 0x17
+#define EVENT_TRACE_TYPE_REGKCBRUNDOWNBEGIN 0x18
+#define EVENT_TRACE_TYPE_REGKCBRUNDOWNEND 0x19
+#define EVENT_TRACE_TYPE_REGVIRTUALIZE 0x1a
+#define EVENT_TRACE_TYPE_REGCLOSE 0x1b
+#define EVENT_TRACE_TYPE_REGSETSECURITY 0x1c
+#define EVENT_TRACE_TYPE_REGQUERYSECURITY 0x1d
+#define EVENT_TRACE_TYPE_REGCOMMIT 0x1e
+#define EVENT_TRACE_TYPE_REGPREPARE 0x1f
+#define EVENT_TRACE_TYPE_REGROLLBACK 0x20
+#define EVENT_TRACE_TYPE_REGMOUNTHIVE 0x21
+
+#define EVENT_TRACE_TYPE_CONFIG_CPU 0x0a
+#define EVENT_TRACE_TYPE_CONFIG_PHYSICALDISK 0x0b
+#define EVENT_TRACE_TYPE_CONFIG_LOGICALDISK 0x0c
+#define EVENT_TRACE_TYPE_CONFIG_NIC 0x0d
+#define EVENT_TRACE_TYPE_CONFIG_VIDEO 0x0e
+#define EVENT_TRACE_TYPE_CONFIG_SERVICES 0x0f
+#define EVENT_TRACE_TYPE_CONFIG_POWER 0x10
+#define EVENT_TRACE_TYPE_CONFIG_NETINFO 0x11
+#define EVENT_TRACE_TYPE_CONFIG_OPTICALMEDIA 0x12
+
+#define EVENT_TRACE_TYPE_CONFIG_IRQ 0x15
+#define EVENT_TRACE_TYPE_CONFIG_PNP 0x16
+#define EVENT_TRACE_TYPE_CONFIG_IDECHANNEL 0x17
+#define EVENT_TRACE_TYPE_CONFIG_NUMANODE 0x18
+#define EVENT_TRACE_TYPE_CONFIG_PLATFORM 0x19
+#define EVENT_TRACE_TYPE_CONFIG_PROCESSORGROUP 0x1a
+#define EVENT_TRACE_TYPE_CONFIG_PROCESSORNUMBER 0x1b
+#define EVENT_TRACE_TYPE_CONFIG_DPI 0x1c
+
+#define EVENT_TRACE_TYPE_OPTICAL_IO_READ 0x37
+#define EVENT_TRACE_TYPE_OPTICAL_IO_WRITE 0x38
+#define EVENT_TRACE_TYPE_OPTICAL_IO_FLUSH 0x39
+#define EVENT_TRACE_TYPE_OPTICAL_IO_READ_INIT 0x3a
+#define EVENT_TRACE_TYPE_OPTICAL_IO_WRITE_INIT 0x3b
+#define EVENT_TRACE_TYPE_OPTICAL_IO_FLUSH_INIT 0x3c
+
+#define EVENT_TRACE_TYPE_FLT_PREOP_INIT 0x60
+#define EVENT_TRACE_TYPE_FLT_POSTOP_INIT 0x61
+#define EVENT_TRACE_TYPE_FLT_PREOP_COMPLETION 0x62
+#define EVENT_TRACE_TYPE_FLT_POSTOP_COMPLETION 0x63
+#define EVENT_TRACE_TYPE_FLT_PREOP_FAILURE 0x64
+#define EVENT_TRACE_TYPE_FLT_POSTOP_FAILURE 0x65
+
+#define EVENT_TRACE_FLAG_PROCESS 0x00000001
+#define EVENT_TRACE_FLAG_THREAD 0x00000002
+#define EVENT_TRACE_FLAG_IMAGE_LOAD 0x00000004
+
+#define EVENT_TRACE_FLAG_DISK_IO 0x00000100
+#define EVENT_TRACE_FLAG_DISK_FILE_IO 0x00000200
+
+#define EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS 0x00001000
+#define EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS 0x00002000
+
+#define EVENT_TRACE_FLAG_NETWORK_TCPIP 0x00010000
+
+#define EVENT_TRACE_FLAG_REGISTRY 0x00020000
+#define EVENT_TRACE_FLAG_DBGPRINT 0x00040000
+
+#define EVENT_TRACE_FLAG_PROCESS_COUNTERS 0x00000008
+#define EVENT_TRACE_FLAG_CSWITCH 0x00000010
+#define EVENT_TRACE_FLAG_DPC 0x00000020
+#define EVENT_TRACE_FLAG_INTERRUPT 0x00000040
+#define EVENT_TRACE_FLAG_SYSTEMCALL 0x00000080
+
+#define EVENT_TRACE_FLAG_DISK_IO_INIT 0x00000400
+#define EVENT_TRACE_FLAG_ALPC 0x00100000
+#define EVENT_TRACE_FLAG_SPLIT_IO 0x00200000
+
+#define EVENT_TRACE_FLAG_DRIVER 0x00800000
+#define EVENT_TRACE_FLAG_PROFILE 0x01000000
+#define EVENT_TRACE_FLAG_FILE_IO 0x02000000
+#define EVENT_TRACE_FLAG_FILE_IO_INIT 0x04000000
+
+#define EVENT_TRACE_FLAG_DISPATCHER 0x00000800
+#define EVENT_TRACE_FLAG_VIRTUAL_ALLOC 0x00004000
+
+#define EVENT_TRACE_FLAG_VAMAP 0x00008000
+#define EVENT_TRACE_FLAG_NO_SYSCONFIG 0x10000000
+
+#define EVENT_TRACE_FLAG_EXTENSION 0x80000000
+#define EVENT_TRACE_FLAG_FORWARD_WMI 0x40000000
+#define EVENT_TRACE_FLAG_ENABLE_RESERVE 0x20000000
+
+#define EVENT_TRACE_FILE_MODE_NONE 0x00000000
+#define EVENT_TRACE_FILE_MODE_SEQUENTIAL 0x00000001
+#define EVENT_TRACE_FILE_MODE_CIRCULAR 0x00000002
+#define EVENT_TRACE_FILE_MODE_APPEND 0x00000004
+
+#define EVENT_TRACE_REAL_TIME_MODE 0x00000100
+#define EVENT_TRACE_DELAY_OPEN_FILE_MODE 0x00000200
+#define EVENT_TRACE_BUFFERING_MODE 0x00000400
+#define EVENT_TRACE_PRIVATE_LOGGER_MODE 0x00000800
+#define EVENT_TRACE_ADD_HEADER_MODE 0x00001000
+
+#define EVENT_TRACE_USE_GLOBAL_SEQUENCE 0x00004000
+#define EVENT_TRACE_USE_LOCAL_SEQUENCE 0x00008000
+
+#define EVENT_TRACE_RELOG_MODE 0x00010000
+
+#define EVENT_TRACE_USE_PAGED_MEMORY 0x01000000
+
+#define EVENT_TRACE_FILE_MODE_NEWFILE 0x00000008
+#define EVENT_TRACE_FILE_MODE_PREALLOCATE 0x00000020
+
+#define EVENT_TRACE_NONSTOPPABLE_MODE 0x00000040
+#define EVENT_TRACE_SECURE_MODE 0x00000080
+#define EVENT_TRACE_USE_KBYTES_FOR_SIZE 0x00002000
+#define EVENT_TRACE_PRIVATE_IN_PROC 0x00020000
+#define EVENT_TRACE_MODE_RESERVED 0x00100000
+
+#define EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 0x10000000
+
+#define EVENT_TRACE_SYSTEM_LOGGER_MODE 0x02000000
+#define EVENT_TRACE_ADDTO_TRIAGE_DUMP 0x80000000
+#define EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN 0x00400000
+#define EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN 0x00800000
+
+#define EVENT_TRACE_CONTROL_QUERY 0
+#define EVENT_TRACE_CONTROL_STOP 1
+#define EVENT_TRACE_CONTROL_UPDATE 2
+#define EVENT_TRACE_CONTROL_FLUSH 3
+
+#define TRACE_MESSAGE_SEQUENCE 1
+#define TRACE_MESSAGE_GUID 2
+#define TRACE_MESSAGE_COMPONENTID 4
+#define TRACE_MESSAGE_TIMESTAMP 8
+#define TRACE_MESSAGE_PERFORMANCE_TIMESTAMP 16
+#define TRACE_MESSAGE_SYSTEMINFO 32
+
+#define TRACE_MESSAGE_POINTER32 0x0040
+#define TRACE_MESSAGE_POINTER64 0x0080
+
+#define TRACE_MESSAGE_FLAG_MASK 0xffff
+
+#define TRACE_MESSAGE_MAXIMUM_SIZE (64 * 1024)
+
+#define EVENT_TRACE_USE_PROCTIME 0x0001
+#define EVENT_TRACE_USE_NOCPUTIME 0x0002
+
+#define TRACE_HEADER_FLAG_USE_TIMESTAMP 0x00000200
+#define TRACE_HEADER_FLAG_TRACED_GUID 0x00020000
+#define TRACE_HEADER_FLAG_LOG_WNODE 0x00040000
+#define TRACE_HEADER_FLAG_USE_GUID_PTR 0x00080000
+#define TRACE_HEADER_FLAG_USE_MOF_PTR 0x00100000
typedef struct _EVENT_TRACE_HEADER {
USHORT Size;
@@ -366,10 +359,45 @@ typedef struct _EVENT_INSTANCE_HEADER {
ULONGLONG ParentRegHandle;
} EVENT_INSTANCE_HEADER,*PEVENT_INSTANCE_HEADER;
-#define DEFINE_TRACE_MOF_FIELD(MOF,ptr,length,type) \
- (MOF)->DataPtr = (ULONG64) (ULONG_PTR) ptr; \
- (MOF)->Length = (ULONG) length; \
- (MOF)->DataType = (ULONG) type;
+#define ETW_NULL_TYPE_VALUE 0
+#define ETW_OBJECT_TYPE_VALUE 1
+#define ETW_STRING_TYPE_VALUE 2
+#define ETW_SBYTE_TYPE_VALUE 3
+#define ETW_BYTE_TYPE_VALUE 4
+#define ETW_INT16_TYPE_VALUE 5
+#define ETW_UINT16_TYPE_VALUE 6
+#define ETW_INT32_TYPE_VALUE 7
+#define ETW_UINT32_TYPE_VALUE 8
+#define ETW_INT64_TYPE_VALUE 9
+#define ETW_UINT64_TYPE_VALUE 10
+#define ETW_CHAR_TYPE_VALUE 11
+#define ETW_SINGLE_TYPE_VALUE 12
+#define ETW_DOUBLE_TYPE_VALUE 13
+#define ETW_BOOLEAN_TYPE_VALUE 14
+#define ETW_DECIMAL_TYPE_VALUE 15
+
+#define ETW_GUID_TYPE_VALUE 101
+#define ETW_ASCIICHAR_TYPE_VALUE 102
+#define ETW_ASCIISTRING_TYPE_VALUE 103
+#define ETW_COUNTED_STRING_TYPE_VALUE 104
+#define ETW_POINTER_TYPE_VALUE 105
+#define ETW_SIZET_TYPE_VALUE 106
+#define ETW_HIDDEN_TYPE_VALUE 107
+#define ETW_BOOL_TYPE_VALUE 108
+#define ETW_COUNTED_ANSISTRING_TYPE_VALUE 109
+#define ETW_REVERSED_COUNTED_STRING_TYPE_VALUE 110
+#define ETW_REVERSED_COUNTED_ANSISTRING_TYPE_VALUE 111
+#define ETW_NON_NULL_TERMINATED_STRING_TYPE_VALUE 112
+#define ETW_REDUCED_ANSISTRING_TYPE_VALUE 113
+#define ETW_REDUCED_STRING_TYPE_VALUE 114
+#define ETW_SID_TYPE_VALUE 115
+#define ETW_VARIANT_TYPE_VALUE 116
+#define ETW_PTVECTOR_TYPE_VALUE 117
+#define ETW_WMITIME_TYPE_VALUE 118
+#define ETW_DATETIME_TYPE_VALUE 119
+#define ETW_REFRENCE_TYPE_VALUE 120
+
+#define DEFINE_TRACE_MOF_FIELD(M, P, LEN, TYP) (M)->DataPtr = (ULONG64)
(ULONG_PTR) P; (M)->Length = (ULONG) LEN; (M)->DataType = (ULONG) TYP;
typedef struct _MOF_FIELD {
ULONG64 DataPtr;
@@ -377,8 +405,7 @@ typedef struct _MOF_FIELD {
ULONG DataType;
} MOF_FIELD,*PMOF_FIELD;
-#if !(defined(_NTDDK_) || defined(_NTIFS_)) || defined(_WMIKM_)
-
+#if !defined (_EVNTRACE_KERNEL_MODE) || defined (_WMIKM_)
typedef struct _TRACE_LOGFILE_HEADER {
ULONG BufferSize;
__C89_NAMELESS union {
@@ -406,7 +433,7 @@ typedef struct _TRACE_LOGFILE_HEADER {
ULONG CpuSpeedInMHz;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME2;
-#if defined(_WMIKM_)
+#if defined (_WMIKM_)
PWCHAR LoggerName;
PWCHAR LogFileName;
RTL_TIME_ZONE_INFORMATION TimeZone;
@@ -449,13 +476,11 @@ typedef struct _TRACE_LOGFILE_HEADER32 {
ULONG CpuSpeedInMHz;
};
};
-#if defined(_WMIKM_)
ULONG32 LoggerName;
ULONG32 LogFileName;
+#if defined (_WMIKM_)
RTL_TIME_ZONE_INFORMATION TimeZone;
#else
- ULONG32 LoggerName;
- ULONG32 LogFileName;
TIME_ZONE_INFORMATION TimeZone;
#endif
LARGE_INTEGER BootTime;
@@ -463,13 +488,13 @@ typedef struct _TRACE_LOGFILE_HEADER32 {
LARGE_INTEGER StartTime;
ULONG ReservedFlags;
ULONG BuffersLost;
-} TRACE_LOGFILE_HEADER32, *PTRACE_LOGFILE_HEADER32;
+} TRACE_LOGFILE_HEADER32,*PTRACE_LOGFILE_HEADER32;
typedef struct _TRACE_LOGFILE_HEADER64 {
ULONG BufferSize;
__C89_NAMELESS union {
ULONG Version;
- struct {
+ __C89_NAMELESS struct {
UCHAR MajorVersion;
UCHAR MinorVersion;
UCHAR SubVersion;
@@ -492,13 +517,11 @@ typedef struct _TRACE_LOGFILE_HEADER64 {
ULONG CpuSpeedInMHz;
};
};
-#if defined(_WMIKM_)
ULONG64 LoggerName;
ULONG64 LogFileName;
+#if defined (_WMIKM_)
RTL_TIME_ZONE_INFORMATION TimeZone;
#else
- ULONG64 LoggerName;
- ULONG64 LogFileName;
TIME_ZONE_INFORMATION TimeZone;
#endif
LARGE_INTEGER BootTime;
@@ -506,17 +529,15 @@ typedef struct _TRACE_LOGFILE_HEADER64 {
LARGE_INTEGER StartTime;
ULONG ReservedFlags;
ULONG BuffersLost;
-} TRACE_LOGFILE_HEADER64, *PTRACE_LOGFILE_HEADER64;
-
-#endif /* !_NTDDK_ || _WMIKM_ */
+} TRACE_LOGFILE_HEADER64,*PTRACE_LOGFILE_HEADER64;
+#endif
-typedef struct _EVENT_INSTANCE_INFO {
+typedef struct EVENT_INSTANCE_INFO {
HANDLE RegHandle;
ULONG InstanceId;
} EVENT_INSTANCE_INFO,*PEVENT_INSTANCE_INFO;
-#if !defined(_WMIKM_) && !defined(_NTDDK_) && !defined(_NTIFS_)
-
+#ifndef _EVNTRACE_KERNEL_MODE
typedef struct _EVENT_TRACE_PROPERTIES {
WNODE_HEADER Wnode;
ULONG BufferSize;
@@ -527,7 +548,6 @@ typedef struct _EVENT_TRACE_PROPERTIES {
ULONG FlushTimer;
ULONG EnableFlags;
LONG AgeLimit;
-
ULONG NumberOfBuffers;
ULONG FreeBuffers;
ULONG EventsLost;
@@ -543,8 +563,7 @@ typedef struct _TRACE_GUID_REGISTRATION {
LPCGUID Guid;
HANDLE RegHandle;
} TRACE_GUID_REGISTRATION,*PTRACE_GUID_REGISTRATION;
-
-#endif /* !_NTDDK_ || _WMIKM_ */
+#endif
typedef struct _TRACE_GUID_PROPERTIES {
GUID Guid;
@@ -555,11 +574,23 @@ typedef struct _TRACE_GUID_PROPERTIES {
BOOLEAN IsEnable;
} TRACE_GUID_PROPERTIES,*PTRACE_GUID_PROPERTIES;
+#ifndef ETW_BUFFER_CONTEXT_DEF
+#define ETW_BUFFER_CONTEXT_DEF
+
typedef struct _ETW_BUFFER_CONTEXT {
- UCHAR ProcessorNumber;
- UCHAR Alignment;
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ UCHAR ProcessorNumber;
+ UCHAR Alignment;
+ } DUMMYSTRUCTNAME;
+ USHORT ProcessorIndex;
+ } DUMMYUNIONNAME;
USHORT LoggerId;
-} ETW_BUFFER_CONTEXT, *PETW_BUFFER_CONTEXT;
+} ETW_BUFFER_CONTEXT,*PETW_BUFFER_CONTEXT;
+#endif
+
+#define TRACE_PROVIDER_FLAG_LEGACY (0x00000001)
+#define TRACE_PROVIDER_FLAG_PRE_ENABLE (0x00000002)
typedef struct _TRACE_ENABLE_INFO {
ULONG IsEnabled;
@@ -570,19 +601,28 @@ typedef struct _TRACE_ENABLE_INFO {
ULONG Reserved2;
ULONGLONG MatchAnyKeyword;
ULONGLONG MatchAllKeyword;
-} TRACE_ENABLE_INFO, *PTRACE_ENABLE_INFO;
+} TRACE_ENABLE_INFO,*PTRACE_ENABLE_INFO;
typedef struct _TRACE_PROVIDER_INSTANCE_INFO {
ULONG NextOffset;
ULONG EnableCount;
ULONG Pid;
ULONG Flags;
-} TRACE_PROVIDER_INSTANCE_INFO, *PTRACE_PROVIDER_INSTANCE_INFO;
+} TRACE_PROVIDER_INSTANCE_INFO,*PTRACE_PROVIDER_INSTANCE_INFO;
typedef struct _TRACE_GUID_INFO {
ULONG InstanceCount;
ULONG Reserved;
-} TRACE_GUID_INFO, *PTRACE_GUID_INFO;
+} TRACE_GUID_INFO,*PTRACE_GUID_INFO;
+
+typedef struct _PROFILE_SOURCE_INFO {
+ ULONG NextEntryOffset;
+ ULONG Source;
+ ULONG MinInterval;
+ ULONG MaxInterval;
+ ULONG64 Reserved;
+ WCHAR Description[ANYSIZE_ARRAY];
+} PROFILE_SOURCE_INFO,*PPROFILE_SOURCE_INFO;
typedef struct _EVENT_TRACE {
EVENT_TRACE_HEADER Header;
@@ -593,27 +633,25 @@ typedef struct _EVENT_TRACE {
ULONG MofLength;
__C89_NAMELESS union {
ULONG ClientContext;
- ETW_BUFFER_CONTEXT BufferContext; /* MSDN says ULONG, for XP and older? */
+ ETW_BUFFER_CONTEXT BufferContext;
} DUMMYUNIONNAME;
} EVENT_TRACE,*PEVENT_TRACE;
-#if !defined(_WMIKM_) && !defined(_NTDDK_) && !defined(_NTIFS_)
+#define EVENT_CONTROL_CODE_DISABLE_PROVIDER 0
+#define EVENT_CONTROL_CODE_ENABLE_PROVIDER 1
+#define EVENT_CONTROL_CODE_CAPTURE_STATE 2
+#endif
-#ifndef DEFINED_PEVENT_RECORD
-typedef struct _EVENT_RECORD EVENT_RECORD, *PEVENT_RECORD;
-#define DEFINED_PEVENT_RECORD 1
-#endif /* for evntcons.h */
-#ifndef DEFINED_PEVENT_FILTER_DESC
-typedef struct _EVENT_FILTER_DESCRIPTOR EVENT_FILTER_DESCRIPTOR,
*PEVENT_FILTER_DESCRIPTOR;
-#define DEFINED_PEVENT_FILTER_DESC 1
-#endif /* for evntprov.h */
+#ifndef _EVNTRACE_KERNEL_MODE
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
+typedef struct _EVENT_RECORD EVENT_RECORD,*PEVENT_RECORD;
typedef struct _EVENT_TRACE_LOGFILEW
EVENT_TRACE_LOGFILEW,*PEVENT_TRACE_LOGFILEW;
typedef struct _EVENT_TRACE_LOGFILEA
EVENT_TRACE_LOGFILEA,*PEVENT_TRACE_LOGFILEA;
-typedef ULONG (WINAPI *PEVENT_TRACE_BUFFER_CALLBACKW)(PEVENT_TRACE_LOGFILEW
Logfile);
-typedef ULONG (WINAPI *PEVENT_TRACE_BUFFER_CALLBACKA)(PEVENT_TRACE_LOGFILEA
Logfile);
-typedef VOID (WINAPI *PEVENT_CALLBACK)(PEVENT_TRACE pEvent);
-typedef VOID (WINAPI *PEVENT_RECORD_CALLBACK)(PEVENT_RECORD EventRecord);
-typedef ULONG (WINAPI *WMIDPREQUEST)(WMIDPREQUESTCODE RequestCode,PVOID
RequestContext,ULONG *BufferSize,PVOID Buffer);
+typedef ULONG (WINAPI *PEVENT_TRACE_BUFFER_CALLBACKW) (PEVENT_TRACE_LOGFILEW
Logfile);
+typedef ULONG (WINAPI *PEVENT_TRACE_BUFFER_CALLBACKA) (PEVENT_TRACE_LOGFILEA
Logfile);
+typedef VOID (WINAPI *PEVENT_CALLBACK) (PEVENT_TRACE pEvent);
+typedef VOID (WINAPI *PEVENT_RECORD_CALLBACK) (PEVENT_RECORD EventRecord);
+typedef ULONG (WINAPI *WMIDPREQUEST) (WMIDPREQUESTCODE RequestCode, PVOID
RequestContext, ULONG *BufferSize, PVOID Buffer);
struct _EVENT_TRACE_LOGFILEW {
LPWSTR LogFileName;
@@ -661,182 +699,165 @@ struct _EVENT_TRACE_LOGFILEA {
PVOID Context;
};
-#if defined(_UNICODE) || defined(UNICODE)
-#define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKW
-#define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEW
-#define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEW
-#define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEW
-#define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEW
-#define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEW
+#if defined (_UNICODE) || defined (UNICODE)
+#define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKW
+#define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEW
+#define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEW
+#define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEW
+#define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEW
+#define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEW
#else
-#define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKA
-#define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEA
-#define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEA
-#define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEA
-#define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEA
-#define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEA
-#endif /* defined(_UNICODE) || defined(UNICODE) */
+#define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKA
+#define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEA
+#define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEA
+#define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEA
+#define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEA
+#define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEA
+#endif
+#endif
#ifdef __cplusplus
extern "C" {
#endif
-EXTERN_C ULONG WMIAPI StartTraceW(PTRACEHANDLE TraceHandle,LPCWSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI StartTraceA(PTRACEHANDLE TraceHandle,LPCSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI StopTraceW(TRACEHANDLE TraceHandle,LPCWSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI StopTraceA(TRACEHANDLE TraceHandle,LPCSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI QueryTraceW(TRACEHANDLE TraceHandle,LPCWSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI QueryTraceA(TRACEHANDLE TraceHandle,LPCSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI UpdateTraceW(TRACEHANDLE TraceHandle,LPCWSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI UpdateTraceA(TRACEHANDLE TraceHandle,LPCSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI FlushTraceW(TRACEHANDLE TraceHandle,LPCWSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI FlushTraceA(TRACEHANDLE TraceHandle,LPCSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties);
-EXTERN_C ULONG WMIAPI ControlTraceW(TRACEHANDLE TraceHandle,LPCWSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties,ULONG ControlCode);
-EXTERN_C ULONG WMIAPI ControlTraceA(TRACEHANDLE TraceHandle,LPCSTR
InstanceName,PEVENT_TRACE_PROPERTIES Properties,ULONG ControlCode);
-EXTERN_C ULONG WMIAPI QueryAllTracesW(PEVENT_TRACE_PROPERTIES
*PropertyArray,ULONG PropertyArrayCount,PULONG LoggerCount);
-EXTERN_C ULONG WMIAPI QueryAllTracesA(PEVENT_TRACE_PROPERTIES
*PropertyArray,ULONG PropertyArrayCount,PULONG LoggerCount);
-EXTERN_C ULONG WMIAPI EnableTrace(ULONG Enable,ULONG EnableFlag,ULONG
EnableLevel,LPCGUID ControlGuid,TRACEHANDLE TraceHandle);
-
-#if (_WIN32_WINNT >= 0x0600)
-EXTERN_C ULONG WMIAPI EnableTraceEx(
- LPCGUID ProviderId,
- LPCGUID SourceId,
- TRACEHANDLE TraceHandle,
- ULONG IsEnabled,
- UCHAR Level,
- ULONGLONG MatchAnyKeyword,
- ULONGLONG MatchAllKeyword,
- ULONG EnableProperty,
- PEVENT_FILTER_DESCRIPTOR EnableFilterDesc
-);
-#endif /* _WIN32_WINNT >= 0x0600 */
-
-#define ENABLE_TRACE_PARAMETERS_VERSION 1
-
-typedef struct _ENABLE_TRACE_PARAMETERS {
- ULONG Version;
- ULONG EnableProperty;
- ULONG ControlFlags;
- GUID SourceId;
- PEVENT_FILTER_DESCRIPTOR EnableFilterDesc;
-} ENABLE_TRACE_PARAMETERS, *PENABLE_TRACE_PARAMETERS;
-
-#if (_WIN32_WINNT >= 0x0601)
-EXTERN_C ULONG WMIAPI EnableTraceEx2(
- TRACEHANDLE TraceHandle,
- LPCGUID ProviderId,
- ULONG ControlCode,
- UCHAR Level,
- ULONGLONG MatchAnyKeyword,
- ULONGLONG MatchAllKeyword,
- ULONG Timeout,
- PENABLE_TRACE_PARAMETERS EnableParameters
-);
-#endif /* _WIN32_WINNT >= 0x0601 */
-
-typedef enum _TRACE_QUERY_INFO_CLASS {
- TraceGuidQueryList,
- TraceGuidQueryInfo,
- TraceGuidQueryProcess,
- TraceStackTracingInfo,
- MaxTraceSetInfoClass
-} TRACE_QUERY_INFO_CLASS, TRACE_INFO_CLASS;
-
-#if (_WIN32_WINNT >= 0x0600)
-EXTERN_C ULONG WMIAPI EnumerateTraceGuidsEx(
- TRACE_QUERY_INFO_CLASS TraceQueryInfoClass,
- PVOID InBuffer,
- ULONG InBufferSize,
- PVOID OutBuffer,
- ULONG OutBufferSize,
- PULONG ReturnLength
-);
-#endif /* _WIN32_WINNT >= 0x0600 */
-
-/*To enable the read event type for disk IO events, set GUID to
3d6fa8d4-fe05-11d0-9dda-00c04fd7ba7c and Type to 10.*/
-typedef struct _CLASSIC_EVENT_ID {
- GUID EventGuid;
- UCHAR Type;
- UCHAR Reserved[7];
-} CLASSIC_EVENT_ID, *PCLASSIC_EVENT_ID;
-
-#if (_WIN32_WINNT >= 0x0601)
-EXTERN_C ULONG WMIAPI TraceSetInformation(
- TRACEHANDLE SessionHandle,
- TRACE_INFO_CLASS InformationClass,
- PVOID TraceInformation,
- ULONG InformationLength
-);
-#endif /* _WIN32_WINNT >= 0x0601 */
-
-EXTERN_C ULONG WMIAPI CreateTraceInstanceId(HANDLE
RegHandle,PEVENT_INSTANCE_INFO pInstInfo);
-EXTERN_C ULONG WMIAPI TraceEvent(TRACEHANDLE TraceHandle,PEVENT_TRACE_HEADER
EventTrace);
-EXTERN_C ULONG WMIAPI TraceEventInstance(TRACEHANDLE
TraceHandle,PEVENT_INSTANCE_HEADER EventTrace,PEVENT_INSTANCE_INFO
pInstInfo,PEVENT_INSTANCE_INFO pParentInstInfo);
-EXTERN_C ULONG WMIAPI RegisterTraceGuidsW(WMIDPREQUEST RequestAddress,PVOID
RequestContext,LPCGUID ControlGuid,ULONG GuidCount,PTRACE_GUID_REGISTRATION
TraceGuidReg,LPCWSTR MofImagePath,LPCWSTR MofResourceName,PTRACEHANDLE
RegistrationHandle);
-EXTERN_C ULONG WMIAPI RegisterTraceGuidsA(WMIDPREQUEST RequestAddress,PVOID
RequestContext,LPCGUID ControlGuid,ULONG GuidCount,PTRACE_GUID_REGISTRATION
TraceGuidReg,LPCSTR MofImagePath,LPCSTR MofResourceName,PTRACEHANDLE
RegistrationHandle);
-EXTERN_C ULONG WMIAPI EnumerateTraceGuids(PTRACE_GUID_PROPERTIES
*GuidPropertiesArray,ULONG PropertyArrayCount,PULONG GuidCount);
-EXTERN_C ULONG WMIAPI UnregisterTraceGuids(TRACEHANDLE RegistrationHandle);
-EXTERN_C TRACEHANDLE WMIAPI GetTraceLoggerHandle(PVOID Buffer);
-EXTERN_C UCHAR WMIAPI GetTraceEnableLevel(TRACEHANDLE TraceHandle);
-EXTERN_C ULONG WMIAPI GetTraceEnableFlags(TRACEHANDLE TraceHandle);
-EXTERN_C TRACEHANDLE WMIAPI OpenTraceA(PEVENT_TRACE_LOGFILEA Logfile);
-EXTERN_C TRACEHANDLE WMIAPI OpenTraceW(PEVENT_TRACE_LOGFILEW Logfile);
-EXTERN_C ULONG WMIAPI ProcessTrace(PTRACEHANDLE HandleArray,ULONG
HandleCount,LPFILETIME StartTime,LPFILETIME EndTime);
-EXTERN_C ULONG WMIAPI CloseTrace(TRACEHANDLE TraceHandle);
-EXTERN_C ULONG WMIAPI SetTraceCallback(LPCGUID pGuid,PEVENT_CALLBACK
EventCallback);
-EXTERN_C ULONG WMIAPI RemoveTraceCallback (LPCGUID pGuid);
-EXTERN_C ULONG __cdecl TraceMessage(TRACEHANDLE LoggerHandle,ULONG
MessageFlags,LPCGUID MessageGuid,USHORT MessageNumber,...);
-EXTERN_C ULONG WMIAPI TraceMessageVa(TRACEHANDLE LoggerHandle,ULONG
MessageFlags,LPCGUID MessageGuid,USHORT MessageNumber,va_list MessageArgList);
+#define ENABLE_TRACE_PARAMETERS_VERSION 1
+
+ typedef enum _TRACE_QUERY_INFO_CLASS {
+ TraceGuidQueryList,
+ TraceGuidQueryInfo,
+ TraceGuidQueryProcess,
+ TraceStackTracingInfo,
+ TraceSystemTraceEnableFlagsInfo,
+ TraceSampledProfileIntervalInfo,
+ TraceProfileSourceConfigInfo,
+ TraceProfileSourceListInfo,
+ TracePmcEventListInfo,
+ TracePmcCounterListInfo,
+ MaxTraceSetInfoClass
+ } TRACE_QUERY_INFO_CLASS, TRACE_INFO_CLASS;
+
+ typedef struct _EVENT_FILTER_DESCRIPTOR
EVENT_FILTER_DESCRIPTOR,*PEVENT_FILTER_DESCRIPTOR;
+
+ typedef struct _ENABLE_TRACE_PARAMETERS {
+ ULONG Version;
+ ULONG EnableProperty;
+ ULONG ControlFlags;
+ GUID SourceId;
+ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc;
+ } ENABLE_TRACE_PARAMETERS,*PENABLE_TRACE_PARAMETERS;
+
+ /*To enable the read event type for disk IO events, set GUID to
3d6fa8d4-fe05-11d0-9dda-00c04fd7ba7c and Type to 10.*/
+ typedef struct _CLASSIC_EVENT_ID {
+ GUID EventGuid;
+ UCHAR Type;
+ UCHAR Reserved[7];
+ } CLASSIC_EVENT_ID,*PCLASSIC_EVENT_ID;
+
+ typedef struct _TRACE_PROFILE_INTERVAL {
+ ULONG Source;
+ ULONG Interval;
+ } TRACE_PROFILE_INTERVAL,*PTRACE_PROFILE_INTERVAL;
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+ EXTERN_C ULONG WMIAPI StartTraceA (PTRACEHANDLE TraceHandle, LPCSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI StopTraceA (TRACEHANDLE TraceHandle, LPCSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI QueryTraceA (TRACEHANDLE TraceHandle, LPCSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI UpdateTraceW (TRACEHANDLE TraceHandle, LPCWSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI UpdateTraceA (TRACEHANDLE TraceHandle, LPCSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI FlushTraceA (TRACEHANDLE TraceHandle, LPCSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI ControlTraceA (TRACEHANDLE TraceHandle, LPCSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties, ULONG ControlCode);
+ EXTERN_C ULONG WMIAPI QueryAllTracesW (PEVENT_TRACE_PROPERTIES
*PropertyArray, ULONG PropertyArrayCount, PULONG LoggerCount);
+ EXTERN_C ULONG WMIAPI QueryAllTracesA (PEVENT_TRACE_PROPERTIES
*PropertyArray, ULONG PropertyArrayCount, PULONG LoggerCount);
+ EXTERN_C ULONG WMIAPI CreateTraceInstanceId (HANDLE RegHandle,
PEVENT_INSTANCE_INFO InstInfo);
+ EXTERN_C ULONG WMIAPI TraceEvent (TRACEHANDLE TraceHandle,
PEVENT_TRACE_HEADER EventTrace);
+ EXTERN_C ULONG WMIAPI TraceEventInstance (TRACEHANDLE TraceHandle,
PEVENT_INSTANCE_HEADER EventTrace, PEVENT_INSTANCE_INFO InstInfo,
PEVENT_INSTANCE_INFO ParentInstInfo);
+ EXTERN_C ULONG WMIAPI RegisterTraceGuidsA (WMIDPREQUEST RequestAddress,
PVOID RequestContext, LPCGUID ControlGuid, ULONG GuidCount,
PTRACE_GUID_REGISTRATION TraceGuidReg, LPCSTR MofImagePath, LPCSTR
MofResourceName, PTRACEHANDLE RegistrationHandle);
+ EXTERN_C ULONG WMIAPI EnumerateTraceGuids (PTRACE_GUID_PROPERTIES
*GuidPropertiesArray, ULONG PropertyArrayCount, PULONG GuidCount);
+ EXTERN_C TRACEHANDLE WMIAPI OpenTraceA (PEVENT_TRACE_LOGFILEA Logfile);
+ EXTERN_C TRACEHANDLE WMIAPI OpenTraceW (PEVENT_TRACE_LOGFILEW Logfile);
+ EXTERN_C ULONG WMIAPI ProcessTrace (PTRACEHANDLE HandleArray, ULONG
HandleCount, LPFILETIME StartTime, LPFILETIME EndTime);
+ EXTERN_C ULONG WMIAPI CloseTrace (TRACEHANDLE TraceHandle);
+ EXTERN_C ULONG WMIAPI SetTraceCallback (LPCGUID pGuid, PEVENT_CALLBACK
EventCallback);
+ EXTERN_C ULONG WMIAPI RemoveTraceCallback (LPCGUID pGuid);
+ EXTERN_C ULONG TraceMessageVa (TRACEHANDLE LoggerHandle, ULONG MessageFlags,
LPCGUID MessageGuid, USHORT MessageNumber, va_list MessageArgList);
+#if WINVER >= 0x0600
+ EXTERN_C ULONG WMIAPI EnableTraceEx (LPCGUID ProviderId, LPCGUID SourceId,
TRACEHANDLE TraceHandle, ULONG IsEnabled, UCHAR Level, ULONGLONG
MatchAnyKeyword, ULONGLONG MatchAllKeyword, ULONG EnableProperty,
PEVENT_FILTER_DESCRIPTOR EnableFilterDesc);
+ EXTERN_C ULONG WMIAPI EnumerateTraceGuidsEx (TRACE_QUERY_INFO_CLASS
TraceQueryInfoClass, PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG
OutBufferSize, PULONG ReturnLength);
+#endif
+#if WINVER >= 0x0601
+ EXTERN_C ULONG WMIAPI EnableTraceEx2 (TRACEHANDLE TraceHandle, LPCGUID
ProviderId, ULONG ControlCode, UCHAR Level, ULONGLONG MatchAnyKeyword,
ULONGLONG MatchAllKeyword, ULONG Timeout, PENABLE_TRACE_PARAMETERS
EnableParameters);
+ EXTERN_C ULONG WMIAPI TraceSetInformation (TRACEHANDLE SessionHandle,
TRACE_INFO_CLASS InformationClass, PVOID TraceInformation, ULONG
InformationLength);
+#endif
+#if WINVER >= 0x0602
+ EXTERN_C ULONG WMIAPI TraceQueryInformation (TRACEHANDLE SessionHandle,
TRACE_INFO_CLASS InformationClass, PVOID TraceInformation, ULONG
InformationLength, PULONG ReturnLength);
+#endif
+#endif
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
+ EXTERN_C ULONG WMIAPI StartTraceW (PTRACEHANDLE TraceHandle, LPCWSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI StopTraceW (TRACEHANDLE TraceHandle, LPCWSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI QueryTraceW (TRACEHANDLE TraceHandle, LPCWSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI FlushTraceW (TRACEHANDLE TraceHandle, LPCWSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties);
+ EXTERN_C ULONG WMIAPI ControlTraceW (TRACEHANDLE TraceHandle, LPCWSTR
InstanceName, PEVENT_TRACE_PROPERTIES Properties, ULONG ControlCode);
+ EXTERN_C ULONG WMIAPI EnableTrace (ULONG Enable, ULONG EnableFlag, ULONG
EnableLevel, LPCGUID ControlGuid, TRACEHANDLE TraceHandle);
+ EXTERN_C ULONG WMIAPI RegisterTraceGuidsW (WMIDPREQUEST RequestAddress,
PVOID RequestContext, LPCGUID ControlGuid, ULONG GuidCount,
PTRACE_GUID_REGISTRATION TraceGuidReg, LPCWSTR MofImagePath, LPCWSTR
MofResourceName, PTRACEHANDLE RegistrationHandle);
+ EXTERN_C ULONG WMIAPI UnregisterTraceGuids (TRACEHANDLE RegistrationHandle);
+ EXTERN_C TRACEHANDLE WMIAPI GetTraceLoggerHandle (PVOID Buffer);
+ EXTERN_C UCHAR WMIAPI GetTraceEnableLevel (TRACEHANDLE TraceHandle);
+ EXTERN_C ULONG WMIAPI GetTraceEnableFlags (TRACEHANDLE TraceHandle);
+ EXTERN_C ULONG __cdecl TraceMessage (TRACEHANDLE LoggerHandle, ULONG
MessageFlags, LPCGUID MessageGuid, USHORT MessageNumber,...);
+#endif
#ifdef __cplusplus
}
#endif
-#define INVALID_PROCESSTRACE_HANDLE ((TRACEHANDLE)INVALID_HANDLE_VALUE)
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
+#define INVALID_PROCESSTRACE_HANDLE ((TRACEHANDLE)INVALID_HANDLE_VALUE)
+#endif
-#if defined(UNICODE) || defined(_UNICODE)
-#define RegisterTraceGuids RegisterTraceGuidsW
-#define StartTrace StartTraceW
-#define ControlTrace ControlTraceW
+#if defined (UNICODE) || defined (_UNICODE)
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
+#define RegisterTraceGuids RegisterTraceGuidsW
+#define StartTrace StartTraceW
+#define ControlTrace ControlTraceW
-#if defined(__TRACE_W2K_COMPATIBLE)
-#define StopTrace(a,b,c)
ControlTraceW((a),(b),(c),EVENT_TRACE_CONTROL_STOP)
-#define QueryTrace(a,b,c)
ControlTraceW((a),(b),(c),EVENT_TRACE_CONTROL_QUERY)
-#define UpdateTrace(a,b,c)
ControlTraceW((a),(b),(c),EVENT_TRACE_CONTROL_UPDATE)
+#ifdef __TRACE_W2K_COMPATIBLE
+#define StopTrace(a, b, c) ControlTraceW ((a),(b),(c),
EVENT_TRACE_CONTROL_STOP)
+#define QueryTrace(a, b, c) ControlTraceW ((a),(b),(c),
EVENT_TRACE_CONTROL_QUERY)
+#define UpdateTrace(a, b, c) ControlTraceW ((a),(b),(c),
EVENT_TRACE_CONTROL_UPDATE)
#else
-#define StopTrace StopTraceW
-#define QueryTrace QueryTraceW
-#define UpdateTrace UpdateTraceW
-#endif /* defined(__TRACE_W2K_COMPATIBLE) */
-
-#define FlushTrace FlushTraceW
-#define QueryAllTraces QueryAllTracesW
-#define OpenTrace OpenTraceW
-
-#else /* defined(UNICODE) || defined(_UNICODE) */
-
-#define RegisterTraceGuids RegisterTraceGuidsA
-#define StartTrace StartTraceA
-#define ControlTrace ControlTraceA
+#define StopTrace StopTraceW
+#define QueryTrace QueryTraceW
+#define UpdateTrace UpdateTraceW
+#endif
-#if defined(__TRACE_W2K_COMPATIBLE)
-#define StopTrace(a,b,c)
ControlTraceA((a),(b),(c),EVENT_TRACE_CONTROL_STOP)
-#define QueryTrace(a,b,c)
ControlTraceA((a),(b),(c),EVENT_TRACE_CONTROL_QUERY)
-#define UpdateTrace(a,b,c)
ControlTraceA((a),(b),(c),EVENT_TRACE_CONTROL_UPDATE)
+#define FlushTrace FlushTraceW
+#define QueryAllTraces QueryAllTracesW
+#define OpenTrace OpenTraceW
+#endif
#else
-#define StopTrace StopTraceA
-#define QueryTrace QueryTraceA
-#define UpdateTrace UpdateTraceA
-#endif /* defined(__TRACE_W2K_COMPATIBLE) */
-
-#define FlushTrace FlushTraceA
-#define QueryAllTraces QueryAllTracesA
-#define OpenTrace OpenTraceA
-#endif /* defined(UNICODE) || defined(_UNICODE) */
-
-#endif /* !defined(_WMIKM_) && !defined(_NTDDK_) && !defined(_NTIFS_) */
-#endif /* defined(_WINNT_) || defined(WINNT) */
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+#define RegisterTraceGuids RegisterTraceGuidsA
+#define StartTrace StartTraceA
+#define ControlTrace ControlTraceA
-#endif /* _EVNTRACE_ */
+#ifdef __TRACE_W2K_COMPATIBLE
+#define StopTrace(a, b, c) ControlTraceA ((a),(b),(c),
EVENT_TRACE_CONTROL_STOP)
+#define QueryTrace(a, b, c) ControlTraceA ((a),(b),(c),
EVENT_TRACE_CONTROL_QUERY)
+#define UpdateTrace(a, b, c) ControlTraceA ((a),(b),(c),
EVENT_TRACE_CONTROL_UPDATE)
+#else
+#define StopTrace StopTraceA
+#define QueryTrace QueryTraceA
+#define UpdateTrace UpdateTraceA
+#endif
+#define FlushTrace FlushTraceA
+#define QueryAllTraces QueryAllTracesA
+#define OpenTrace OpenTraceA
+#endif
+#endif
+#endif
+#endif
+#endif
--
1.7.9
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public