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