1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _INC_TDH 7 #define _INC_TDH 8 #include <evntprov.h> 9 #include <evntcons.h> 10 #if (_WIN32_WINNT >= 0x0600) 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 typedef enum _EVENT_FIELD_TYPE { 17 EventKeywordInformation = 0, 18 EventLevelInformation = 1, 19 EventChannelInformation = 2, 20 EventTaskInformation = 3, 21 EventOpcodeInformation = 4, 22 EventInformationMax = 5 23 } EVENT_FIELD_TYPE; 24 25 typedef struct _EVENT_MAP_ENTRY { 26 ULONG OutputOffset; 27 __C89_NAMELESS union { 28 ULONG Value; 29 ULONG InputOffset; 30 }; 31 } EVENT_MAP_ENTRY, *PEVENT_MAP_ENTRY; 32 33 typedef enum _MAP_VALUETYPE 34 { 35 EVENTMAP_ENTRY_VALUETYPE_ULONG = 0, 36 EVENTMAP_ENTRY_VALUETYPE_STRING = 1 37 } MAP_VALUETYPE; 38 39 typedef enum _MAP_FLAGS { 40 EVENTMAP_INFO_FLAG_MANIFEST_VALUEMAP = 1, 41 EVENTMAP_INFO_FLAG_MANIFEST_BITMAP = 2, 42 EVENTMAP_INFO_FLAG_MANIFEST_PATTERNMAP = 4, 43 EVENTMAP_INFO_FLAG_WBEM_VALUEMAP = 8, 44 EVENTMAP_INFO_FLAG_WBEM_BITMAP = 16, 45 EVENTMAP_INFO_FLAG_WBEM_FLAG = 32, 46 EVENTMAP_INFO_FLAG_WBEM_NO_MAP = 64 47 } MAP_FLAGS; 48 49 typedef struct _EVENT_MAP_INFO { 50 ULONG NameOffset; 51 MAP_FLAGS Flag; 52 ULONG EntryCount; 53 __C89_NAMELESS union { 54 MAP_VALUETYPE MapEntryValueType; 55 ULONG FormatStringOffset; 56 }; 57 EVENT_MAP_ENTRY MapEntryArray[ANYSIZE_ARRAY]; 58 } EVENT_MAP_INFO, *PEVENT_MAP_INFO; 59 60 typedef enum _PROPERTY_FLAGS { 61 PropertyStruct = 0x1, 62 PropertyParamLength = 0x2, 63 PropertyParamCount = 0x4, 64 PropertyWBEMXmlFragment = 0x8, 65 PropertyParamFixedLength = 0x10 66 } PROPERTY_FLAGS; 67 68 typedef struct _EVENT_PROPERTY_INFO { 69 PROPERTY_FLAGS Flags; 70 ULONG NameOffset; 71 __C89_NAMELESS union { 72 struct { 73 USHORT InType; 74 USHORT OutType; 75 ULONG MapNameOffset; 76 } nonStructType; 77 struct { 78 USHORT StructStartIndex; 79 USHORT NumOfStructMembers; 80 ULONG padding; 81 } structType; 82 }; 83 __C89_NAMELESS union { 84 USHORT count; 85 USHORT countPropertyIndex; 86 }; 87 __C89_NAMELESS union { 88 USHORT length; 89 USHORT lengthPropertyIndex; 90 }; 91 ULONG Reserved; 92 } EVENT_PROPERTY_INFO; 93 94 typedef enum _DECODING_SOURCE { 95 DecodingSourceXMLFile = 0, 96 DecodingSourceWbem = 1, 97 DecodingSourceWPP = 2 98 } DECODING_SOURCE; 99 100 typedef enum _TDH_CONTEXT_TYPE { 101 TDH_CONTEXT_WPP_TMFFILE = 0, 102 TDH_CONTEXT_WPP_TMFSEARCHPATH = 1, 103 TDH_CONTEXT_WPP_GMT = 2, 104 TDH_CONTEXT_POINTERSIZE = 3, 105 TDH_CONTEXT_MAXIMUM = 4 106 } TDH_CONTEXT_TYPE; 107 108 typedef enum _TEMPLATE_FLAGS { 109 TEMPLATE_EVENT_DATA = 1, 110 TEMPLATE_USER_DATA = 2 111 } TEMPLATE_FLAGS; 112 113 typedef struct _TRACE_EVENT_INFO { 114 GUID ProviderGuid; 115 GUID EventGuid; 116 EVENT_DESCRIPTOR EventDescriptor; 117 DECODING_SOURCE DecodingSource; 118 ULONG ProviderNameOffset; 119 ULONG LevelNameOffset; 120 ULONG ChannelNameOffset; 121 ULONG KeywordsNameOffset; 122 ULONG TaskNameOffset; 123 ULONG OpcodeNameOffset; 124 ULONG EventMessageOffset; 125 ULONG ProviderMessageOffset; 126 ULONG BinaryXMLOffset; 127 ULONG BinaryXMLSize; 128 ULONG ActivityIDNameOffset; 129 ULONG RelatedActivityIDNameOffset; 130 ULONG PropertyCount; 131 ULONG TopLevelPropertyCount; 132 TEMPLATE_FLAGS Flags; 133 EVENT_PROPERTY_INFO EventPropertyInfoArray[ANYSIZE_ARRAY]; 134 } TRACE_EVENT_INFO, *PTRACE_EVENT_INFO; 135 136 typedef struct _PROPERTY_DATA_DESCRIPTOR { 137 ULONGLONG PropertyName; 138 ULONG ArrayIndex; 139 ULONG Reserved; 140 } PROPERTY_DATA_DESCRIPTOR, *PPROPERTY_DATA_DESCRIPTOR; 141 142 typedef struct _TRACE_PROVIDER_INFO { 143 GUID ProviderGuid; 144 ULONG SchemaSource; 145 ULONG ProviderNameOffset; 146 } TRACE_PROVIDER_INFO; 147 148 typedef struct _PROVIDER_ENUMERATION_INFO { 149 ULONG NumberOfProviders; 150 ULONG Padding; 151 TRACE_PROVIDER_INFO TraceProviderInfoArray[ANYSIZE_ARRAY]; 152 } PROVIDER_ENUMERATION_INFO, *PPROVIDER_ENUMERATION_INFO; 153 154 typedef struct _PROVIDER_FIELD_INFO { 155 ULONG NameOffset; 156 ULONG DescriptionOffset; 157 ULONGLONG Value; 158 } PROVIDER_FIELD_INFO; 159 160 typedef struct _PROVIDER_FIELD_INFOARRAY { 161 ULONG NumberOfElements; 162 EVENT_FIELD_TYPE FieldType; 163 PROVIDER_FIELD_INFO FieldInfoArray[ANYSIZE_ARRAY]; 164 } PROVIDER_FIELD_INFOARRAY, *PPROVIDER_FIELD_INFOARRAY; 165 166 typedef struct _TDH_CONTEXT { 167 ULONGLONG ParameterValue; 168 TDH_CONTEXT_TYPE ParameterType; 169 ULONG ParameterSize; 170 } TDH_CONTEXT, *PTDH_CONTEXT; 171 172 ULONG __stdcall TdhEnumerateProviderFieldInformation( 173 LPGUID pGuid, 174 EVENT_FIELD_TYPE EventFieldType, 175 PPROVIDER_FIELD_INFOARRAY pBuffer, 176 ULONG *pBufferSize 177 ); 178 179 ULONG __stdcall TdhEnumerateProviders( 180 PPROVIDER_ENUMERATION_INFO pBuffer, 181 ULONG *pBufferSize 182 ); 183 184 ULONG __stdcall TdhGetEventInformation( 185 PEVENT_RECORD pEvent, 186 ULONG TdhContextCount, 187 PTDH_CONTEXT pTdhContext, 188 PTRACE_EVENT_INFO pBuffer, 189 ULONG *pBufferSize 190 ); 191 192 ULONG __stdcall TdhGetEventMapInformation( 193 PEVENT_RECORD pEvent, 194 LPWSTR pMapName, 195 PEVENT_MAP_INFO pBuffer, 196 ULONG *pBufferSize 197 ); 198 199 ULONG __stdcall TdhGetProperty( 200 PEVENT_RECORD pEvent, 201 ULONG TdhContextCount, 202 PTDH_CONTEXT pTdhContext, 203 ULONG PropertyDataCount, 204 PPROPERTY_DATA_DESCRIPTOR pPropertyData, 205 ULONG BufferSize, 206 PBYTE pBuffer 207 ); 208 209 ULONG __stdcall TdhGetPropertySize( 210 PEVENT_RECORD pEvent, 211 ULONG TdhContextCount, 212 PTDH_CONTEXT pTdhContext, 213 ULONG PropertyDataCount, 214 PPROPERTY_DATA_DESCRIPTOR pPropertyData, 215 ULONG *pPropertySize 216 ); 217 218 ULONG __stdcall TdhQueryProviderFieldInformation( 219 LPGUID pGuid, 220 ULONGLONG EventFieldValue, 221 EVENT_FIELD_TYPE EventFieldType, 222 PPROVIDER_FIELD_INFOARRAY pBuffer, 223 ULONG *pBufferSize 224 ); 225 226 #if (_WIN32_WINNT >= 0x0601) 227 typedef struct _PROVIDER_FILTER_INFO { 228 UCHAR Id; 229 UCHAR Version; 230 ULONG MessageOffset; 231 ULONG Reserved; 232 ULONG PropertyCount; 233 EVENT_PROPERTY_INFO EventPropertyInfoArray[ANYSIZE_ARRAY]; 234 } PROVIDER_FILTER_INFO, *PPROVIDER_FILTER_INFO; 235 #endif /*(_WIN32_WINNT >= 0x0601)*/ 236 237 #ifdef __cplusplus 238 } 239 #endif 240 241 #endif /*(_WIN32_WINNT >= 0x0600)*/ 242 #endif /*_INC_TDH*/ 243