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