/**
* 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.
*/
#ifndef _INC_TDH
#define _INC_TDH
#include <evntprov.h>
#include <evntcons.h>
#if (_WIN32_WINNT >= 0x0600)
#ifdef __cplusplus
extern "C" {
#endif
typedef enum _EVENT_FIELD_TYPE {
EventKeywordInformation = 0,
EventLevelInformation = 1,
EventChannelInformation = 2,
EventTaskInformation = 3,
EventOpcodeInformation = 4,
EventInformationMax = 5
} EVENT_FIELD_TYPE;
typedef struct _EVENT_MAP_ENTRY {
ULONG OutputOffset;
__C89_NAMELESS union {
ULONG Value;
ULONG InputOffset;
};
} EVENT_MAP_ENTRY, *PEVENT_MAP_ENTRY;
typedef enum _MAP_VALUETYPE
{
EVENTMAP_ENTRY_VALUETYPE_ULONG = 0,
EVENTMAP_ENTRY_VALUETYPE_STRING = 1
} MAP_VALUETYPE;
typedef enum _MAP_FLAGS {
EVENTMAP_INFO_FLAG_MANIFEST_VALUEMAP = 1,
EVENTMAP_INFO_FLAG_MANIFEST_BITMAP = 2,
EVENTMAP_INFO_FLAG_MANIFEST_PATTERNMAP = 4,
EVENTMAP_INFO_FLAG_WBEM_VALUEMAP = 8,
EVENTMAP_INFO_FLAG_WBEM_BITMAP = 16,
EVENTMAP_INFO_FLAG_WBEM_FLAG = 32,
EVENTMAP_INFO_FLAG_WBEM_NO_MAP = 64
} MAP_FLAGS;
typedef struct _EVENT_MAP_INFO {
ULONG NameOffset;
MAP_FLAGS Flag;
ULONG EntryCount;
__C89_NAMELESS union {
MAP_VALUETYPE MapEntryValueType;
ULONG FormatStringOffset;
};
EVENT_MAP_ENTRY MapEntryArray[ANYSIZE_ARRAY];
} EVENT_MAP_INFO, *PEVENT_MAP_INFO;
typedef enum _PROPERTY_FLAGS {
PropertyStruct = 0x1,
PropertyParamLength = 0x2,
PropertyParamCount = 0x4,
PropertyWBEMXmlFragment = 0x8,
PropertyParamFixedLength = 0x10
} PROPERTY_FLAGS;
typedef struct _EVENT_PROPERTY_INFO {
PROPERTY_FLAGS Flags;
ULONG NameOffset;
__C89_NAMELESS union {
struct {
USHORT InType;
USHORT OutType;
ULONG MapNameOffset;
} nonStructType;
struct {
USHORT StructStartIndex;
USHORT NumOfStructMembers;
ULONG padding;
} structType;
};
__C89_NAMELESS union {
USHORT count;
USHORT countPropertyIndex;
};
__C89_NAMELESS union {
USHORT length;
USHORT lengthPropertyIndex;
};
ULONG Reserved;
} EVENT_PROPERTY_INFO;
typedef enum _DECODING_SOURCE {
DecodingSourceXMLFile = 0,
DecodingSourceWbem = 1,
DecodingSourceWPP = 2
} DECODING_SOURCE;
typedef enum _TDH_CONTEXT_TYPE {
TDH_CONTEXT_WPP_TMFFILE = 0,
TDH_CONTEXT_WPP_TMFSEARCHPATH = 1,
TDH_CONTEXT_WPP_GMT = 2,
TDH_CONTEXT_POINTERSIZE = 3,
TDH_CONTEXT_MAXIMUM = 4
} TDH_CONTEXT_TYPE;
typedef enum _TEMPLATE_FLAGS {
TEMPLATE_EVENT_DATA = 1,
TEMPLATE_USER_DATA = 2
} TEMPLATE_FLAGS;
typedef struct _TRACE_EVENT_INFO {
GUID ProviderGuid;
GUID EventGuid;
EVENT_DESCRIPTOR EventDescriptor;
DECODING_SOURCE DecodingSource;
ULONG ProviderNameOffset;
ULONG LevelNameOffset;
ULONG ChannelNameOffset;
ULONG KeywordsNameOffset;
ULONG TaskNameOffset;
ULONG OpcodeNameOffset;
ULONG EventMessageOffset;
ULONG ProviderMessageOffset;
ULONG BinaryXMLOffset;
ULONG BinaryXMLSize;
ULONG ActivityIDNameOffset;
ULONG RelatedActivityIDNameOffset;
ULONG PropertyCount;
ULONG TopLevelPropertyCount;
TEMPLATE_FLAGS Flags;
EVENT_PROPERTY_INFO EventPropertyInfoArray[ANYSIZE_ARRAY];
} TRACE_EVENT_INFO, *PTRACE_EVENT_INFO;
typedef struct _PROPERTY_DATA_DESCRIPTOR {
ULONGLONG PropertyName;
ULONG ArrayIndex;
ULONG Reserved;
} PROPERTY_DATA_DESCRIPTOR, *PPROPERTY_DATA_DESCRIPTOR;
typedef struct _TRACE_PROVIDER_INFO {
GUID ProviderGuid;
ULONG SchemaSource;
ULONG ProviderNameOffset;
} TRACE_PROVIDER_INFO;
typedef struct _PROVIDER_ENUMERATION_INFO {
ULONG NumberOfProviders;
ULONG Padding;
TRACE_PROVIDER_INFO TraceProviderInfoArray[ANYSIZE_ARRAY];
} PROVIDER_ENUMERATION_INFO, *PPROVIDER_ENUMERATION_INFO;
typedef struct _PROVIDER_FIELD_INFO {
ULONG NameOffset;
ULONG DescriptionOffset;
ULONGLONG Value;
} PROVIDER_FIELD_INFO;
typedef struct _PROVIDER_FIELD_INFOARRAY {
ULONG NumberOfElements;
EVENT_FIELD_TYPE FieldType;
PROVIDER_FIELD_INFO FieldInfoArray[ANYSIZE_ARRAY];
} PROVIDER_FIELD_INFOARRAY, *PPROVIDER_FIELD_INFOARRAY;
typedef struct _TDH_CONTEXT {
ULONGLONG ParameterValue;
TDH_CONTEXT_TYPE ParameterType;
ULONG ParameterSize;
} TDH_CONTEXT, *PTDH_CONTEXT;
ULONG __stdcall TdhEnumerateProviderFieldInformation(
LPGUID pGuid,
EVENT_FIELD_TYPE EventFieldType,
PPROVIDER_FIELD_INFOARRAY pBuffer,
ULONG *pBufferSize
);
ULONG __stdcall TdhEnumerateProviders(
PPROVIDER_ENUMERATION_INFO pBuffer,
ULONG *pBufferSize
);
ULONG __stdcall TdhGetEventInformation(
PEVENT_RECORD pEvent,
ULONG TdhContextCount,
PTDH_CONTEXT pTdhContext,
PTRACE_EVENT_INFO pBuffer,
ULONG *pBufferSize
);
ULONG __stdcall TdhGetEventMapInformation(
PEVENT_RECORD pEvent,
LPWSTR pMapName,
PEVENT_MAP_INFO pBuffer,
ULONG *pBufferSize
);
ULONG __stdcall TdhGetProperty(
PEVENT_RECORD pEvent,
ULONG TdhContextCount,
PTDH_CONTEXT pTdhContext,
ULONG PropertyDataCount,
PPROPERTY_DATA_DESCRIPTOR pPropertyData,
ULONG BufferSize,
PBYTE pBuffer
);
ULONG __stdcall TdhGetPropertySize(
PEVENT_RECORD pEvent,
ULONG TdhContextCount,
PTDH_CONTEXT pTdhContext,
ULONG PropertyDataCount,
PPROPERTY_DATA_DESCRIPTOR pPropertyData,
ULONG *pPropertySize
);
ULONG __stdcall TdhQueryProviderFieldInformation(
LPGUID pGuid,
ULONGLONG EventFieldValue,
EVENT_FIELD_TYPE EventFieldType,
PPROVIDER_FIELD_INFOARRAY pBuffer,
ULONG *pBufferSize
);
#if (_WIN32_WINNT >= 0x0601)
typedef struct _PROVIDER_FILTER_INFO {
UCHAR Id;
UCHAR Version;
ULONG MessageOffset;
ULONG Reserved;
ULONG PropertyCount;
EVENT_PROPERTY_INFO EventPropertyInfoArray[ANYSIZE_ARRAY];
} PROVIDER_FILTER_INFO, *PPROVIDER_FILTER_INFO;
#endif /*(_WIN32_WINNT >= 0x0601)*/
#ifdef __cplusplus
}
#endif
#endif /*(_WIN32_WINNT >= 0x0600)*/
#endif /*_INC_TDH*/