|  | /** | 
|  | * 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*/ |