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