mirror of https://github.com/UMSKT/xpmgr.git
212 lines
6.3 KiB
C
212 lines
6.3 KiB
C
#ifndef _HTTP_TRACE_H
|
|
#define _HTTP_TRACE_H
|
|
/*++
|
|
|
|
Copyright (c) 2005 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
httptrace.h
|
|
|
|
Abstract:
|
|
|
|
Definition of the event tracing structures for IIS
|
|
(applies for IIS version >= 7 )
|
|
|
|
--*/
|
|
|
|
//
|
|
// HTTP_TRACE_TYPE contains type that are supported by
|
|
// the IIS trace infrastructure.
|
|
// The enum values match the equivalent VARIANT types.
|
|
//
|
|
enum HTTP_TRACE_TYPE
|
|
{
|
|
HTTP_TRACE_TYPE_BYTE = 17, // mof type "uint8"
|
|
HTTP_TRACE_TYPE_USHORT = 18, // mof type "uint16"
|
|
HTTP_TRACE_TYPE_ULONG = 19, // mof type "uint32"
|
|
HTTP_TRACE_TYPE_ULONGLONG = 21, // mof type "uint64"
|
|
HTTP_TRACE_TYPE_CHAR = 16, // mof type "int8"
|
|
HTTP_TRACE_TYPE_SHORT = 2, // mof type "int16"
|
|
HTTP_TRACE_TYPE_LONG = 3, // mof type "int32"
|
|
HTTP_TRACE_TYPE_LONGLONG = 20, // mof type "int64"
|
|
HTTP_TRACE_TYPE_LPCWSTR = 31, // mof type string "w"
|
|
HTTP_TRACE_TYPE_LPCSTR = 30, // mof type string "a"
|
|
HTTP_TRACE_TYPE_LPCGUID = 72, // mof type object "Guid"
|
|
HTTP_TRACE_TYPE_BOOL = 11, // mof type object "boolean"
|
|
};
|
|
|
|
// bit values for the HTTP_TRACE_EVENT.dwFlags
|
|
|
|
//
|
|
// If HTTP_TRACE_EVENT_FLAG_STATIC_DESCRIPTIVE_FIELDS is set then
|
|
// consumers of the trace event can assume that
|
|
// pProviderGuid, pAreaGuid, pszEventName in the HTTP_TRACE_EVENT
|
|
// and pszName and pszDescription in each HTTP_TRACE_EVENT_ITEM
|
|
// entry are static (their memory is available throughout the
|
|
// process lifetime). If event needs to be buffered there is no need
|
|
// to copy values for these fields
|
|
//
|
|
#define HTTP_TRACE_EVENT_FLAG_STATIC_DESCRIPTIVE_FIELDS 0x01
|
|
|
|
//
|
|
// In addition to TRACE_LEVEL_FATAL - TRACE_LEVEL_VERBOSE
|
|
//
|
|
#define HTTP_TRACE_LEVEL_START 6
|
|
#define HTTP_TRACE_LEVEL_END 7
|
|
|
|
struct HTTP_TRACE_EVENT_ITEM;
|
|
|
|
//
|
|
// Each Trace event will need to be described with the HTTP_TRACE_EVENT structure.
|
|
// It is designed to contain all the information relevant to ETW,
|
|
// but ETW is not the only consumer
|
|
//
|
|
//
|
|
|
|
struct HTTP_TRACE_EVENT
|
|
{
|
|
//
|
|
// Trace Provider (such as "WWW Server")
|
|
//
|
|
LPCGUID pProviderGuid ;
|
|
//
|
|
// Trace Area Flag ( a bit flag that may represent area such as "Authentication")
|
|
//
|
|
DWORD dwArea;
|
|
//
|
|
// GUID equivalent to the Area Flag
|
|
//
|
|
LPCGUID pAreaGuid;
|
|
//
|
|
// ID of the event (in the ETW terminology this would be the Event Type)
|
|
//
|
|
DWORD dwEvent;
|
|
//
|
|
// String matching the event ID (dwEvent)
|
|
//
|
|
LPCWSTR pszEventName;
|
|
//
|
|
// Event version
|
|
//
|
|
DWORD dwEventVersion;
|
|
//
|
|
// Verbosity of the event ( General, FatalError, Error, Warning, Info, Verbose)
|
|
// In the ETW terminology this is the "event level"
|
|
DWORD dwVerbosity;
|
|
//
|
|
// Activity GUID. For the http request based event
|
|
// it may represent the request ID
|
|
//
|
|
LPCGUID pActivityGuid;
|
|
//
|
|
// Additional GUID to allow to associate
|
|
// multiple related activities
|
|
//
|
|
LPCGUID pRelatedActivityGuid;
|
|
//
|
|
// Optional timestamp (in GetTickCount() ticks )
|
|
// If set to 0 then system will fill in the TickCount.
|
|
//
|
|
DWORD dwTimeStamp;
|
|
//
|
|
// Flags (reserved: Set to 0)
|
|
//
|
|
DWORD dwFlags;
|
|
//
|
|
//
|
|
// Number of entries in the structured
|
|
// description of the event
|
|
// Note that the maximum allowed number of EventTraceItems
|
|
// should match the ETW internal limit of 16
|
|
//
|
|
DWORD cEventItems;
|
|
//
|
|
// Array of individual entries describing
|
|
// the event
|
|
//
|
|
__field_ecount(cEventItems) HTTP_TRACE_EVENT_ITEM * pEventItems;
|
|
};
|
|
|
|
|
|
// Each HTTP_TRACE_EVENT can have multiple items or elements that describe the event
|
|
// (for example the "GENERAL_REQUEST_START" event contains an item with the Request URL)
|
|
|
|
struct HTTP_TRACE_EVENT_ITEM
|
|
{
|
|
//
|
|
// Friendly name of the item (for example "RequestUrl")
|
|
//
|
|
LPCWSTR pszName;
|
|
//
|
|
// Data type that pbData is pointed to
|
|
//
|
|
HTTP_TRACE_TYPE dwDataType;
|
|
//
|
|
// Pointer to the actual data (needs to be casted based on the dwDataType)
|
|
// For example the HTTP_TRACE_EVENT_ITEM describing HTTP request URL would have
|
|
// the pbData pointing to the actual URL string
|
|
//
|
|
PBYTE pbData;
|
|
//
|
|
// # of bytes of the actual data (it should matter only for string types)
|
|
//
|
|
DWORD cbData;
|
|
//
|
|
// Additional description of the data - enumerations take advantage of this field
|
|
// (always set to NULL if not used)
|
|
//
|
|
LPCWSTR pszDataDescription;
|
|
};
|
|
|
|
|
|
//
|
|
// HTTP_TRACE_CONFIGURATION is used by both trace providers and trace consumers
|
|
// Trace consumers declare the TraceProviders and TraceAreas of the interest.
|
|
// Trace providers can retrieve what areas at what verbosity is allowed
|
|
// for a given provider
|
|
//
|
|
|
|
struct HTTP_TRACE_CONFIGURATION
|
|
{
|
|
LPCGUID pProviderGuid;
|
|
DWORD dwAreas;
|
|
DWORD dwVerbosity;
|
|
BOOL fProviderEnabled;
|
|
};
|
|
|
|
//
|
|
// Definiton of the GUIDs for the TRACE Providers that ship with IIS
|
|
// or are related to IIS
|
|
//
|
|
|
|
DEFINE_GUID( GUID_IIS_ALL_TRACE_PROVIDERS,
|
|
0x00000000,0x0000,0x0000,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
|
|
|
|
DEFINE_GUID( GUID_IIS_WWW_SERVER_TRACE_PROVIDER,
|
|
0x3a2a4e84,0x4c21,0x4981,0xae,0x10,0x3f,0xda,0x0d,0x9b,0x0f,0x83);
|
|
|
|
// IIS V2(Crimson/Unified) trace provider
|
|
DEFINE_GUID( GUID_IIS_WWW_SERVER_V2_TRACE_PROVIDER,
|
|
0xde4649c9,0x15e8,0x4fea,0x9d,0x85,0x1c,0xdd,0xa5,0x20,0xc3,0x34);
|
|
|
|
// ETW name for the provider: "ASP.NET Events
|
|
DEFINE_GUID( GUID_IIS_ASPNET_TRACE_PROVIDER,
|
|
0xAFF081FE,0x0247,0x4275,0x9C,0x4E,0x02,0x1F,0x3D,0xC1,0xDA,0x35);
|
|
|
|
// ETW name for the provider: "IIS: Active Server Pages (ASP)"
|
|
DEFINE_GUID( GUID_IIS_ASP_TRACE_TRACE_PROVIDER,
|
|
0x06b94d9a,0xb15e,0x456e,0xa4,0xef,0x37,0xc9,0x84,0xa2,0xcb,0x4b);
|
|
|
|
DEFINE_GUID( GUID_IIS_WWW_GLOBAL_TRACE_PROVIDER,
|
|
0xd55d3bc9,0xcba9,0x44df,0x82,0x7e,0x13,0x2d,0x3a,0x45,0x96,0xc2);
|
|
|
|
// ETW name for the provider: "IIS: WWW Isapi Extension"
|
|
DEFINE_GUID( GUID_IIS_ISAPI_TRACE_PROVIDER,
|
|
0xa1c2040e,0x8840,0x4c31,0xba,0x11,0x98,0x71,0x03,0x1a,0x19,0xea);
|
|
|
|
|
|
#endif
|
|
|
|
|