/*++ Copyright (c) 1997-2000 Microsoft Corporation Module Name: traceint.h Abstract: Trace formatting internal definitions. Revision History: --*/ #ifdef __cplusplus extern "C"{ #endif #ifndef _TRACEINT_ #define _TRACEINT_ #define MAXLOGFILES 16 #define MAXSTR 1024 #define MAXFORMAT 1024 #define MAXTYPE 256 #define MAXGUIDS 128 #define UC(x) ((UINT)((x) & 0xFF)) #define NTOHS(x) ((UC(x) * 256) + UC((x) >> 8)) #ifndef IsEqualGUID #define IsEqualGUID(guid1, guid2) \ (!memcmp((guid1), (guid2), sizeof(GUID))) #endif #define InitializeListHead(ListHead) (\ (ListHead)->Flink = (ListHead)->Blink = (ListHead)) #define InsertTailList(ListHead,Entry) {\ PLIST_ENTRY _EX_Blink;\ PLIST_ENTRY _EX_ListHead;\ _EX_ListHead = (ListHead);\ _EX_Blink = _EX_ListHead->Blink;\ (Entry)->Flink = _EX_ListHead;\ (Entry)->Blink = _EX_Blink;\ _EX_Blink->Flink = (Entry);\ _EX_ListHead->Blink = (Entry);\ } #define RemoveEntryList(Entry) {\ PLIST_ENTRY _EX_Blink;\ PLIST_ENTRY _EX_Flink;\ _EX_Flink = (Entry)->Flink;\ _EX_Blink = (Entry)->Blink;\ _EX_Blink->Flink = _EX_Flink;\ _EX_Flink->Blink = _EX_Blink;\ } #define GUID_TYPE_HEADER _T("Header") #define GUID_TYPE_UNKNOWN _T("Unknown") #define STR_ItemChar _T("ItemChar") #define STR_ItemUChar _T("ItemUChar") #define STR_ItemCharShort _T("ItemCharShort") #define STR_ItemCharSign _T("ItemCharSign") #define STR_ItemDouble _T("ItemDouble") #define STR_ItemShort _T("ItemShort") #define STR_ItemUShort _T("ItemUShort") #define STR_ItemLong _T("ItemLong") #define STR_ItemULong _T("ItemULong") #define STR_ItemULongX _T("ItemULongX") #define STR_ItemLongLong _T("ItemLongLong") #define STR_ItemULongLong _T("ItemULongLong") #define STR_ItemString _T("ItemString") #define STR_ItemWString _T("ItemWString") #define STR_ItemRString _T("ItemRString") #define STR_ItemRWString _T("ItemRWString") #define STR_ItemPString _T("ItemPString") #define STR_ItemPWString _T("ItemPWString") #define STR_ItemMLString _T("ItemMLString") #define STR_ItemNWString _T("ItemNWString") #define STR_ItemPtr _T("ItemPtr") #define STR_ItemDSString _T("ItemDSString") #define STR_ItemDSWString _T("ItemDSWString") #define STR_ItemSid _T("ItemSid") #define STR_ItemChar4 _T("ItemChar4") #define STR_ItemIPAddr _T("ItemIPAddr") #define STR_ItemPort _T("ItemPort") #define STR_ItemNWString _T("ItemNWString") #define STR_ItemListLong _T("ItemListLong") #define STR_ItemListShort _T("ItemListShort") #define STR_ItemListByte _T("ItemListByte") #define STR_ItemNTerror _T("ItemNTerror") #define STR_ItemMerror _T("ItemMerror") #define STR_ItemTimestamp _T("ItemTimestamp") #define STR_ItemHRESULT _T("ItemHRESULT") #define STR_ItemNTSTATUS _T("ItemNTSTATUS") #define STR_ItemWINERROR _T("ItemWINERROR") #define STR_ItemNETEVENT _T("ItemNETEVENT") #define STR_ItemGuid _T("ItemGuid") #define STR_ItemWaitTime _T("ItemWaitTime") #define STR_ItemTimeDelta _T("ItemTimeDelta") #define STR_ItemSetLong _T("ItemSetLong") #define STR_ItemSetShort _T("ItemSetShort") #define STR_ItemSetByte _T("ItemSetByte") #define STR_ItemCharHidden _T("ItemCharHidden") typedef struct _MOF_INFO { LIST_ENTRY Entry; LPTSTR strDescription; // Class Name ULONG EventCount; GUID Guid; PLIST_ENTRY ItemHeader; LPTSTR strType; LONG TypeIndex; ULONG TypeOfType; LPTSTR TypeFormat; INT Indent; } MOF_INFO, *PMOF_INFO; typedef struct _MOF_TYPE { TCHAR strType[MAXSTR]; LONG TypeIndex; ULONG TypeType; TCHAR TypeFormat[MAXFORMAT]; } MOF_TYPE, *PMOF_TYPE; typedef enum _ITEM_TYPE { ItemChar, ItemUChar, ItemCharShort, ItemCharSign, ItemShort, ItemUShort, ItemLong, ItemULong, ItemULongX, ItemLongLong, ItemULongLong, ItemString, ItemWString, ItemRString, ItemRWString, ItemPString, ItemPWString, ItemDSString, ItemDSWString, ItemSid, ItemChar4, ItemIPAddr, ItemPort, ItemMLString, ItemNWString, // Non-null terminated Wide Char String ItemPtr, ItemListLong, // Sort of Enumerated List, field is a long ItemListShort, // Sort of Enumerated List, field is a Short ItemListByte, // Sort of Enumerated List, field is a Byte ItemNTerror, // Convert an NT error number to the usual error string ItemMerror, // Convert an error number to a module message ItemTimestamp, // Convert a LongLong to a timestamp string ItemGuid, // convert a GUID to the usual string ItemNTSTATUS, ItemWINERROR, ItemNETEVENT, ItemWaitTime, ItemTimeDelta, ItemSetLong, ItemSetShort, ItemSetByte, ItemDouble, ItemHRESULT, ItemCharHidden, //Just a block of chars ( name from ETW) ItemUnknown } ITEM_TYPE; typedef struct _ITEM_DESC *PITEM_DESC; typedef struct _ITEM_DESC { LIST_ENTRY Entry; LPTSTR strDescription; ULONG DataSize; LPTSTR ItemList; ITEM_TYPE ItemType; } ITEM_DESC; // // Now the routines we export // #ifndef TRACE_API #ifdef TRACE_EXPORTS #define TRACE_API __declspec(dllexport) #else #define TRACE_API __declspec(dllimport) #endif #endif TRACE_API void MapGuidToName( OUT PLIST_ENTRY * HeadEventList, IN LPGUID pGuid, IN ULONG nType, OUT LPTSTR wstr ); TRACE_API ULONG UserDefinedGuid( OUT PLIST_ENTRY HeadEventList, IN LPGUID Guid, OUT LPTSTR wstr ); TRACE_API VOID AddMofInfo( PLIST_ENTRY HeadEventList, const GUID * Guid, LPTSTR strType, ULONG typeIndex, LPTSTR strDesc, ITEM_TYPE ItemType, TCHAR * ItemList, ULONG TypeOfType, LPTSTR strFormat ); // the following segment is used to impose our own formatting via a copy of RtlTraceFormat, // but which fixes up selected formats that we cannot handle correctly. #define STRINGFIXUP 1 // This conditional is used to identify the differences NTSTATUS TraceFormatMessage( IN PWSTR MessageFormat, IN ULONG MaximumWidth OPTIONAL, IN BOOLEAN IgnoreInserts, IN BOOLEAN ArgumentsAreAnsi, IN BOOLEAN ArgumentsAreAnArray, IN va_list *Arguments, OUT PWSTR Buffer, IN ULONG Length, OUT PULONG ReturnLength OPTIONAL ); #endif // #ifndef _TRACEINT_ #ifdef __cplusplus } #endif