Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

262 lines
7.3 KiB

/*++
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 GUID_TYPE_OBSOLETE _T("ObsoleteGUID")
#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_ItemIPV6Addr _T("ItemIPV6Addr")
#define STR_ItemMACAddr _T("ItemMACAddr")
#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")
#define STR_ItemWChar _T("ItemWChar")
#define STR_ItemHexDump _T("ItemHexDump")
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;
LPTSTR FunctionName ;
LPTSTR ComponentName ;
LPTSTR SubComponentName ;
LPTSTR TraceFlagsName ;
LPTSTR TraceLevelsName ;
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,
ItemIPV6Addr,
ItemMACAddr,
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)
ItemWChar,
ItemHexDump,
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.
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