//	++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
//	PERFCTRS.CPP
//
//	Copyright 1986-1998 Microsoft Corporation, All Rights Reserved
//

#include <_davprs.h>
#include "instdata.h"


//	--- !!! INSTRUCTIONS !!! ---
//
//	To add new counters:
//
//	1) Read the instructions in \cal\src\inc\perfctrs.h to make sure
//	   you know what else you need to update.
//
//	2) Cut and paste a block from the PERF_COUNTER_DEFINITIONs in
//	   gsc_ObjectType below and update the appropriate counter-specific
//	   things like counter type, detail level, etc.  Make sure the
//	   Be sure to update the IPC_ and CTI_ symbolic names to match
//	   those that you just added in perfctrs.h
//
//	--- !!! INSTRUCTIONS !!! ---

//	========================================================================
//
//	Common perf counters
//
//	These are layed out just as they would be for data collection
//	by perfmon.  See winperf.h in the NT includes for all of the
//	PERF_xxx structure definitions.  Also, for a good visual picture
//	of perf counter data layout, see Matt Pietrek's "Under The Hood"
//	MSDN article (April 1996, Number 4) on the subject.
//
#pragma pack(8)
static const struct SCounterBlock
{
	PERF_COUNTER_BLOCK pcb;
	LONG rglCounters[CPC_COMMON];
}
gsc_CounterBlock =
{
	//
	//	PERF_COUNTER_BLOCK
	//
	{
		sizeof(SCounterBlock)	// ByteLength (including counters)
	}
};

static const struct SInstanceDefinition
{
	PERF_INSTANCE_DEFINITION pid;
	WCHAR rgwchName[];
}
gsc_InstanceDef =
{
	//
	//	PERF_INSTANCE_DEFINITION
	//
	{
		sizeof(PERF_INSTANCE_DEFINITION), // ByteLength (computed)
		0,	// ParentObjectTitleIndex (no "parent" object)
		0,	// ParentObjectIndex (no "parent" object)
		-1,	// UniqueID (none; use name string to choose among instances)
		sizeof(PERF_INSTANCE_DEFINITION), // NameOffset (UNICODE name immediately follows definition)
		0,	// NameLength (computed)
	}
};

static const struct SObjectType
{
	PERF_OBJECT_TYPE pot;
	PERF_COUNTER_DEFINITION rgcd[CPC_COMMON];
}
gsc_ObjectType =
{
	//
	//	PERF_OBJECT_TYPE
	//
	{
		0,                        // TotalByteLength (computed by PCLIB)
		sizeof(PERF_OBJECT_TYPE) +
			CPC_COMMON * sizeof(PERF_COUNTER_DEFINITION), // DefinitionLength

		sizeof(PERF_OBJECT_TYPE), // HeaderLength
		CTI_OBJECT,               // ObjectNameTitleIndex (0-relative)
		NULL,					  // ObjectNameTitle (monitor-computed)
		1 + CTI_OBJECT,           // ObjectHelpTitleIndex (0-relative)
		NULL,                     // ObjectHelpTitle (monitor-computed)
		PERF_DETAIL_NOVICE,		  // DetailLevel
		CPC_COMMON,				  // NumCounters
		IPC_TOTAL_REQUESTS,       // DefaultCounter
		0,						  // NumInstances (initially 0)
		0						  // CodePage (0 --> instance strings in UNICODE)
		//
		//	PerfTime/PerfFreq implicitly initialized to LARGE_INTEGER(0)
		//
	},

	//
	//	PERF_COUNTER_DEFINITIONs
	//
	{
		//
		//	Per-vroot (per-instance) counters
		//	------------------------------------------------------
		//

		//
		//	SERVER_ID
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_SERVER_ID,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_SERVER_ID,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_DISPLAY_NOSHOW | PERF_SIZE_DWORD | PERF_TYPE_NUMBER, // CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_SERVER_ID]))
		},

		//
		//		Per second verb counters
		//
		//		"What is the current distribution of requests?"
		//
		//
		//	REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_REQUESTS_PER_SECOND]))
		},

		//
		//	OPTIONS_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_OPTIONS_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_OPTIONS_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_OPTIONS_REQUESTS_PER_SECOND]))
		},

		//
		//	GET_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_GET_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_GET_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_GET_REQUESTS_PER_SECOND]))
		},

		//
		//	HEAD_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_HEAD_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_HEAD_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_HEAD_REQUESTS_PER_SECOND]))
		},

		//
		//	PUT_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_PUT_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_PUT_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_PUT_REQUESTS_PER_SECOND]))
		},

		//
		//	POST_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_POST_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_POST_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_POST_REQUESTS_PER_SECOND]))
		},

		//
		//	DELETE_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_DELETE_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_DELETE_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_DELETE_REQUESTS_PER_SECOND]))
		},

		//
		//	COPY_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_COPY_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_COPY_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_COPY_REQUESTS_PER_SECOND]))
		},

		//
		//	MOVE_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_MOVE_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_MOVE_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_MOVE_REQUESTS_PER_SECOND]))
		},

		//
		//	MKCOL_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_MKCOL_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_MKCOL_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_MKCOL_REQUESTS_PER_SECOND]))
		},

		//
		//	PROPFIND_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_PROPFIND_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_PROPFIND_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_PROPFIND_REQUESTS_PER_SECOND]))
		},

		//
		//	PROPPATCH_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_PROPPATCH_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_PROPPATCH_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_PROPPATCH_REQUESTS_PER_SECOND]))
		},

		//
		//	LOCK_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_LOCK_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_LOCK_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_LOCK_REQUESTS_PER_SECOND]))
		},

		//
		//	UNLOCK_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_UNLOCK_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_UNLOCK_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_UNLOCK_REQUESTS_PER_SECOND]))
		},

		//
		//	SEARCH_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_SEARCH_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_SEARCH_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_SEARCH_REQUESTS_PER_SECOND]))
		},

		//
		//	OTHER_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_OTHER_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_OTHER_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_OTHER_REQUESTS_PER_SECOND]))
		},

		//
		//	200_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_200_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_200_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_200_RESPONSES_PER_SECOND]))
		},

		//
		//	201_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_201_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_201_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_201_RESPONSES_PER_SECOND]))
		},

		//
		//	400_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_400_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_400_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_400_RESPONSES_PER_SECOND]))
		},

		//
		//	401_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_401_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_401_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_401_RESPONSES_PER_SECOND]))
		},

		//
		//	404_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_404_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_404_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_404_RESPONSES_PER_SECOND]))
		},

		//
		//	423_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_423_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_423_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_423_RESPONSES_PER_SECOND]))
		},

		//
		//	500_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_500_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_500_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_500_RESPONSES_PER_SECOND]))
		},

		//
		//	REDIRECT_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_REDIRECT_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_REDIRECT_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_REDIRECT_RESPONSES_PER_SECOND]))
		},

		//
		//		Total verb counters
		//
		//		"What is the historical (cumulative) distribution of requests?"
		//
		//
		//	TOTAL_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_REQUESTS]))
		},

		//
		//	TOTAL_OPTIONS_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_OPTIONS_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_OPTIONS_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_OPTIONS_REQUESTS]))
		},

		//
		//	TOTAL_GET_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_GET_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_GET_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_GET_REQUESTS]))
		},

		//
		//	TOTAL_HEAD_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_HEAD_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_HEAD_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_HEAD_REQUESTS]))
		},

		//
		//	TOTAL_PUT_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PUT_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PUT_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PUT_REQUESTS]))
		},

		//
		//	TOTAL_POST_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_POST_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_POST_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_POST_REQUESTS]))
		},

		//
		//	TOTAL_DELETE_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_DELETE_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_DELETE_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_DELETE_REQUESTS]))
		},

		//
		//	TOTAL_COPY_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_COPY_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_COPY_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_COPY_REQUESTS]))
		},

		//
		//	TOTAL_MOVE_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_MOVE_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_MOVE_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_MOVE_REQUESTS]))
		},

		//
		//	TOTAL_MKCOL_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_MKCOL_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_MKCOL_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_MKCOL_REQUESTS]))
		},

		//
		//	TOTAL_PROPFIND_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPFIND_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPFIND_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPFIND_REQUESTS]))
		},

		//
		//	TOTAL_PROPPATCH_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPPATCH_REQUESTS]))
		},

		//
		//	TOTAL_LOCK_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_LOCK_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_LOCK_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_LOCK_REQUESTS]))
		},

		//
		//	TOTAL_UNLOCK_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_UNLOCK_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_UNLOCK_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_UNLOCK_REQUESTS]))
		},

		//
		//	TOTAL_SEARCH_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_SEARCH_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_SEARCH_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_SEARCH_REQUESTS]))
		},

		//
		//	TOTAL_OTHER_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_OTHER_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_OTHER_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_OTHER_REQUESTS]))
		},

#ifdef TRANSACTION_SIZE_COUNTERS
		//
		//		Historical (cumulative) requests/responses by body
		//		size/content.
		//
		//		Useful in analyzing usage characteristics for methods
		//		whose performance can vary widely depending on certain
		//		per-request factors.
		//
		//
		//	TOTAL_GET_RESPONSES_0_5K_BYTES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_GET_RESPONSES_0_5K_BYTES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_GET_RESPONSES_0_5K_BYTES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_GET_RESPONSES_0_5K_BYTES]))
		},

		//
		//	TOTAL_GET_RESPONSES_5_15K_BYTES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_GET_RESPONSES_5_15K_BYTES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_GET_RESPONSES_5_15K_BYTES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_GET_RESPONSES_5_15K_BYTES]))
		},

		//
		//	TOTAL_GET_RESPONSES_GT_15K_BYTES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_GET_RESPONSES_GT_15K_BYTES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_GET_RESPONSES_GT_15K_BYTES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_GET_RESPONSES_GT_15K_BYTES]))
		},

		//
		//	TOTAL_PUT_REQUESTS_0_5K_BYTES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PUT_REQUESTS_0_5K_BYTES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PUT_REQUESTS_0_5K_BYTES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PUT_REQUESTS_0_5K_BYTES]))
		},

		//
		//	TOTAL_PUT_REQUESTS_5_15K_BYTES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PUT_REQUESTS_5_15K_BYTES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PUT_REQUESTS_5_15K_BYTES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PUT_REQUESTS_5_15K_BYTES]))
		},

		//
		//	TOTAL_PUT_REQUESTS_GT_15K_BYTES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PUT_REQUESTS_GT_15K_BYTES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PUT_REQUESTS_GT_15K_BYTES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PUT_REQUESTS_GT_15K_BYTES]))
		},

		//
		//	TOTAL_COPY_REQUESTS_DEPTH_0
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_COPY_REQUESTS_DEPTH_0,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_COPY_REQUESTS_DEPTH_0,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_COPY_REQUESTS_DEPTH_0]))
		},

		//
		//	TOTAL_COPY_REQUESTS_DEPTH_INFINITY
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_COPY_REQUESTS_DEPTH_INFINITY,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_COPY_REQUESTS_DEPTH_INFINITY,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_COPY_REQUESTS_DEPTH_INFINITY]))
		},

		//
		//	TOTAL_MKCOL_REQUESTS_0_10_ITEMS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_MKCOL_REQUESTS_0_10_ITEMS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_MKCOL_REQUESTS_0_10_ITEMS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_MKCOL_REQUESTS_0_10_ITEMS]))
		},

		//
		//	TOTAL_MKCOL_REQUESTS_10_100_ITEMS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_MKCOL_REQUESTS_10_100_ITEMS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_MKCOL_REQUESTS_10_100_ITEMS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_MKCOL_REQUESTS_10_100_ITEMS]))
		},

		//
		//	TOTAL_MKCOL_REQUESTS_100_1K_ITEMS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_MKCOL_REQUESTS_100_1K_ITEMS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_MKCOL_REQUESTS_100_1K_ITEMS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_MKCOL_REQUESTS_100_1K_ITEMS]))
		},

		//
		//	TOTAL_MKCOL_REQUESTS_GT_1K_ITEMS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_MKCOL_REQUESTS_GT_1K_ITEMS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_MKCOL_REQUESTS_GT_1K_ITEMS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_MKCOL_REQUESTS_GT_1K_ITEMS]))
		},

		//
		//	TOTAL_PROPFIND_RESPONSES_0_10_PROPERTIES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPFIND_RESPONSES_0_10_PROPERTIES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPFIND_RESPONSES_0_10_PROPERTIES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPFIND_RESPONSES_0_10_PROPERTIES]))
		},

		//
		//	TOTAL_PROPFIND_RESPONSES_10_100_PROPERTIES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPFIND_RESPONSES_10_100_PROPERTIES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPFIND_RESPONSES_10_100_PROPERTIES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPFIND_RESPONSES_10_100_PROPERTIES]))
		},

		//
		//	TOTAL_PROPFIND_RESPONSES_100_1K_PROPERTIES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPFIND_RESPONSES_100_1K_PROPERTIES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPFIND_RESPONSES_100_1K_PROPERTIES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPFIND_RESPONSES_100_1K_PROPERTIES]))
		},

		//
		//	TOTAL_PROPFIND_RESPONSES_GT_1K_PROPERTIES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPFIND_RESPONSES_GT_1K_PROPERTIES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPFIND_RESPONSES_GT_1K_PROPERTIES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPFIND_RESPONSES_GT_1K_PROPERTIES]))
		},

		//
		//	TOTAL_PROPPATCH_REQUESTS_0_10_PROPERTIES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS_0_10_PROPERTIES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS_0_10_PROPERTIES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPPATCH_REQUESTS_0_10_PROPERTIES]))
		},

		//
		//	TOTAL_PROPPATCH_REQUESTS_10_100_PROPERTIES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS_10_100_PROPERTIES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS_10_100_PROPERTIES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPPATCH_REQUESTS_10_100_PROPERTIES]))
		},

		//
		//	TOTAL_PROPPATCH_REQUESTS_100_1K_PROPERTIES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS_100_1K_PROPERTIES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS_100_1K_PROPERTIES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPPATCH_REQUESTS_100_1K_PROPERTIES]))
		},

		//
		//	TOTAL_PROPPATCH_REQUESTS_GT_1K_PROPERTIES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS_GT_1K_PROPERTIES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_PROPPATCH_REQUESTS_GT_1K_PROPERTIES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_PROPPATCH_REQUESTS_GT_1K_PROPERTIES]))
		},

		//
		//	TOTAL_SEARCH_RESPONSES_0_10_ROWS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_SEARCH_RESPONSES_0_10_ROWS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_SEARCH_RESPONSES_0_10_ROWS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_SEARCH_RESPONSES_0_10_ROWS]))
		},

		//
		//	TOTAL_SEARCH_RESPONSES_10_100_ROWS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_SEARCH_RESPONSES_10_100_ROWS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_SEARCH_RESPONSES_10_100_ROWS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_SEARCH_RESPONSES_10_100_ROWS]))
		},

		//
		//	TOTAL_SEARCH_RESPONSES_100_1K_ROWS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_SEARCH_RESPONSES_100_1K_ROWS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_SEARCH_RESPONSES_100_1K_ROWS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_SEARCH_RESPONSES_100_1K_ROWS]))
		},

		//
		//	TOTAL_SEARCH_RESPONSES_GT_1K_ROWS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_SEARCH_RESPONSES_GT_1K_ROWS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_SEARCH_RESPONSES_GT_1K_ROWS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_SEARCH_RESPONSES_GT_1K_ROWS]))
		},

#endif // TRANSACTION_SIZE_COUNTERS

		//
		//		Historical (cumulative) response percentages by status code
		//
		//
		//	TOTAL_200_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_200_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_200_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_200_RESPONSES]))
		},

		//
		//	TOTAL_201_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_201_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_201_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_201_RESPONSES]))
		},

		//
		//	TOTAL_400_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_400_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_400_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_400_RESPONSES]))
		},

		//
		//	TOTAL_401_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_401_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_401_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_401_RESPONSES]))
		},

		//
		//	TOTAL_404_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_404_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_404_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_404_RESPONSES]))
		},

		//
		//	TOTAL_423_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_423_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_423_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_423_RESPONSES]))
		},

		//
		//	TOTAL_500_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_500_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_500_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_500_RESPONSES]))
		},

		//
		//	TOTAL_REDIRECT_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_REDIRECT_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_REDIRECT_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_REDIRECT_RESPONSES]))
		},

		//
		//		Concurrent data flow counters
		//
		//		"Where is the data flow path spending most of its time?"
		//
		//
		//	CURRENT_REQUESTS_EXECUTING
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_CURRENT_REQUESTS_EXECUTING,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_CURRENT_REQUESTS_EXECUTING,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_CURRENT_REQUESTS_EXECUTING]))
		},

		//
		//		Historical data flow counters for presumably uncommon
		//		(and possibly expensive) code paths.
		//
		//
		//	TOTAL_REQUESTS_FORWARDED
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_REQUESTS_FORWARDED,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_REQUESTS_FORWARDED,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_REQUESTS_FORWARDED]))
		},

		//
		//	TOTAL_EXCEPTIONS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_EXCEPTIONS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_EXCEPTIONS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_EXCEPTIONS]))
		},

		//
		//	POLL_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_POLL_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_POLL_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_POLL_REQUESTS_PER_SECOND]))
		},

		//
		//	SUBSCRIBE_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_SUBSCRIBE_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_SUBSCRIBE_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_SUBSCRIBE_REQUESTS_PER_SECOND]))
		},

		//
		//	UNSUBSCRIBE_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_UNSUBSCRIBE_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_UNSUBSCRIBE_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_UNSUBSCRIBE_REQUESTS_PER_SECOND]))
		},

		//
		//	BATCHDELETE_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_BATCHDELETE_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_BATCHDELETE_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_BATCHDELETE_REQUESTS_PER_SECOND]))
		},

		//
		//	BATCHCOPY_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_BATCHCOPY_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_BATCHCOPY_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_BATCHCOPY_REQUESTS_PER_SECOND]))
		},

		//
		//	BATCHMOVE_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_BATCHMOVE_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_BATCHMOVE_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_BATCHMOVE_REQUESTS_PER_SECOND]))
		},

		//
		//	BATCHPROPPATCH_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_BATCHPROPPATCH_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_BATCHPROPPATCH_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_BATCHPROPPATCH_REQUESTS_PER_SECOND]))
		},

		//
		//	BATCHPROPFIND_REQUESTS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_BATCHPROPFIND_REQUESTS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_BATCHPROPFIND_REQUESTS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_BATCHPROPFIND_REQUESTS_PER_SECOND]))
		},

		//
		//	204_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_204_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_204_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_204_RESPONSES_PER_SECOND]))
		},

		//
		//	207_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_207_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_207_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_207_RESPONSES_PER_SECOND]))
		},

		//
		//	302_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_302_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_302_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_302_RESPONSES_PER_SECOND]))
		},

		//
		//	403_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_403_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_403_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_403_RESPONSES_PER_SECOND]))
		},

		//
		//	405_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_405_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_405_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_405_RESPONSES_PER_SECOND]))
		},

		//
		//	406_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_406_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_406_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_406_RESPONSES_PER_SECOND]))
		},

		//
		//	409_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_409_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_409_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_409_RESPONSES_PER_SECOND]))
		},

		//
		//	412_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_412_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_412_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_412_RESPONSES_PER_SECOND]))
		},

		//
		//	415_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_415_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_415_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_415_RESPONSES_PER_SECOND]))
		},

		//
		//	422_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_422_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_422_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_422_RESPONSES_PER_SECOND]))
		},

		//
		//	424_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_424_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_424_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_424_RESPONSES_PER_SECOND]))
		},

		//
		//	501_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_501_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_501_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_501_RESPONSES_PER_SECOND]))
		},

		//
		//	503_RESPONSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_503_RESPONSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_503_RESPONSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_503_RESPONSES_PER_SECOND]))
		},

		//
		//	TOTAL_POLL_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_POLL_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_POLL_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_POLL_REQUESTS]))
		},

		//
		//	TOTAL_SUBSCRIBE_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_SUBSCRIBE_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_SUBSCRIBE_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_SUBSCRIBE_REQUESTS]))
		},

		//
		//	TOTAL_UNSUBSCRIBE_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_UNSUBSCRIBE_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_UNSUBSCRIBE_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_UNSUBSCRIBE_REQUESTS]))
		},

		//
		//	TOTAL_BATCHDELETE_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_BATCHDELETE_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_BATCHDELETE_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_BATCHDELETE_REQUESTS]))
		},

		//
		//	TOTAL_BATCHCOPY_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_BATCHCOPY_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_BATCHCOPY_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_BATCHCOPY_REQUESTS]))
		},

		//
		//	TOTAL_BATCHMOVE_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_BATCHMOVE_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_BATCHMOVE_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_BATCHMOVE_REQUESTS]))
		},

		//
		//	TOTAL_BATCHPROPPATCH_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_BATCHPROPPATCH_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_BATCHPROPPATCH_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_BATCHPROPPATCH_REQUESTS]))
		},

		//
		//	TOTAL_BATCHPROPFIND_REQUESTS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_BATCHPROPFIND_REQUESTS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_BATCHPROPFIND_REQUESTS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_BATCHPROPFIND_REQUESTS]))
		},

		//
		//	TOTAL_204_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_204_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_204_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_204_RESPONSES]))
		},

		//
		//	TOTAL_207_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_207_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_207_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_207_RESPONSES]))
		},

		//
		//	TOTAL_302_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_302_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_302_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_302_RESPONSES]))
		},

		//
		//	TOTAL_403_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_403_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_403_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_403_RESPONSES]))
		},

		//
		//	TOTAL_405_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_405_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_405_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_405_RESPONSES]))
		},

		//
		//	TOTAL_406_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_406_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_406_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_406_RESPONSES]))
		},

		//
		//	TOTAL_409_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_409_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_409_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_409_RESPONSES]))
		},

		//
		//	TOTAL_412_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_412_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_412_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_412_RESPONSES]))
		},

		//
		//	TOTAL_415_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_415_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_415_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_415_RESPONSES]))
		},

		//
		//	TOTAL_422_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_422_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_422_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_422_RESPONSES]))
		},

		//
		//	TOTAL_424_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_424_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_424_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_424_RESPONSES]))
		},

		//
		//	TOTAL_501_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_501_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_501_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_501_RESPONSES]))
		},

		//
		//	TOTAL_503_RESPONSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_503_RESPONSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_503_RESPONSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_503_RESPONSES]))
		},

		//
		//	REDIRECTS_FROM_BACKEND_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_REDIRECTS_FROM_BACKEND_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_REDIRECTS_FROM_BACKEND_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_REDIRECTS_FROM_BACKEND_PER_SECOND]))
		},

		//
		//	TOTAL_REDIRECTS_FROM_BACKEND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_REDIRECTS_FROM_BACKEND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_REDIRECTS_FROM_BACKEND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_REDIRECTS_FROM_BACKEND]))
		},

		//
		//	IFS_CACHE_HITS_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_IFS_CACHE_HITS_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_IFS_CACHE_HITS_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_IFS_CACHE_HITS_PER_SECOND]))
		},

		//
		//	TOTAL_IFS_CACHE_HITS
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_IFS_CACHE_HITS,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_IFS_CACHE_HITS,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_IFS_CACHE_HITS]))
		},

		//
		//	IFS_CACHE_MISSES_PER_SECOND
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_IFS_CACHE_MISSES_PER_SECOND,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_IFS_CACHE_MISSES_PER_SECOND,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_COUNTER,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_IFS_CACHE_MISSES_PER_SECOND]))
		},

		//
		//	TOTAL_IFS_CACHE_MISSES
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_TOTAL_IFS_CACHE_MISSES,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_TOTAL_IFS_CACHE_MISSES,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_TOTAL_IFS_CACHE_MISSES]))
		},

		//
		//	CURRENT_ITEM_COUNT_IN_IFS_CACHE
		//
		{
			sizeof(PERF_COUNTER_DEFINITION),	// ByteLength
												// CounterNameTitleIndex
			CTI_COUNTER_CURRENT_ITEM_COUNT_IN_IFS_CACHE,
			NULL,								// CounterNameTitle (monitor-computed)
												// CounterHelpTitleIndex
			1 + CTI_COUNTER_CURRENT_ITEM_COUNT_IN_IFS_CACHE,
			NULL,								// CounterHelpTitle (monitor-computed)
			0,									// DefaultScale (10^n)
			PERF_DETAIL_NOVICE,					// DetailLevel
			PERF_COUNTER_RAWCOUNT,				// CounterType
			sizeof(DWORD),						// CounterSize
												// CounterOffset
			static_cast<DWORD>(offsetof(SCounterBlock, rglCounters[IPC_CURRENT_ITEM_COUNT_IN_IFS_CACHE]))
		}
	}
};
#pragma pack()

//	========================================================================
//
//	CLASS CPerfCounters
//
class CPerfCounters : private Singleton<CPerfCounters>
{
	//
	//	Friend declarations required by Singleton template
	//
	friend class Singleton<CPerfCounters>;

	//
	//	PCLIB Initializer
	//
	CPclibInit m_pclib;

	//
	//	The perf object (we only have one)
	//
	auto_ptr<IPerfObject> m_pObject;

	//
	//	The "_Total" counter block instance
	//
	auto_ptr<IPerfCounterBlock> m_pCounterBlockTotal;

	//	NOT IMPLEMENTED
	//
	CPerfCounters& operator=(const CPerfCounters&);
	CPerfCounters(const CPerfCounters&);

	//	CREATORS
	//
	CPerfCounters() {}

public:
	//
	//	Instance creating/destroying routines provided
	//	by the Singleton template.
	//
	using Singleton<CPerfCounters>::CreateInstance;
	using Singleton<CPerfCounters>::DestroyInstance;
	using Singleton<CPerfCounters>::Instance;

	//	MANIPULATORS
	//
	BOOL FInitialize( const VOID * lpvCounterDefs );

	IPerfCounterBlock * NewVRCounters( LPCSTR lpszVRoot );
	VOID IncrementTotalCounter( UINT iCounter );
	VOID DecrementTotalCounter( UINT iCounter );
};

//	------------------------------------------------------------------------
//
//	CPerfCounters::FInitialize()
//
BOOL
CPerfCounters::FInitialize( const VOID * lpvCounterDefs )
{
	//
	//	Initialize PCLIB
	//
	if ( !m_pclib.FInitialize( gc_wszSignature ) )
		return FALSE;

	//
	//	Build our perf object
	//
	m_pObject = PCLIB::NewPerfObject( gsc_ObjectType.pot );
	if ( !m_pObject.get() )
		return FALSE;

	UINT cbWszTotal = static_cast<UINT>((wcslen(gc_wsz_Total) + 1) * sizeof(WCHAR));

	//	Add a "_Total" instance.
	//
	Assert (1024 >= (sizeof(gsc_InstanceDef) + Align8(cbWszTotal)));
	CStackBuffer<SInstanceDefinition,1024> psid;

	psid->pid = gsc_InstanceDef.pid;
	CopyMemory( psid->rgwchName, gc_wsz_Total, cbWszTotal );
	psid->pid.ByteLength = sizeof(gsc_InstanceDef) + Align8(cbWszTotal);
	psid->pid.NameLength = cbWszTotal;
	m_pCounterBlockTotal = m_pObject->NewInstance( psid->pid, gsc_CounterBlock.pcb );
	if ( !m_pCounterBlockTotal.get() )
		return FALSE;

	return TRUE;
}

//	------------------------------------------------------------------------
//
//	CPerfCounters::NewVRCounters()
//
IPerfCounterBlock *
CPerfCounters::NewVRCounters( LPCSTR pszVRoot )
{
	Assert( m_pObject.get() );

	//	Convert the VRoot string to UNICODE so it can
	//	be used as an instance name.
	//
	UINT cbVRoot = static_cast<UINT>(strlen(pszVRoot) + 1);

	Assert (1024 >= (sizeof(gsc_InstanceDef) + Align8(sizeof(WCHAR) * cbVRoot)));
	CStackBuffer<SInstanceDefinition,1024> psid;

	psid->pid = gsc_InstanceDef.pid;

	//  We know that the buffer size is big enough.
	//
	UINT cchVRoot = MultiByteToWideChar(CP_ACP,
										MB_ERR_INVALID_CHARS,
										pszVRoot,
										cbVRoot,
										psid->rgwchName,
										cbVRoot);
	if (0 == cchVRoot)
	{
		Assert(FAILED(HRESULT_FROM_WIN32(GetLastError())));
		throw CLastErrorException();
	}

	//	The characters '/' are not allowed in perfcounter
	//	instance name any more. Munge them to '\'.
	//
	LPWSTR pwszName = psid->rgwchName;
	while (*pwszName)
	{
		if (L'/' == *pwszName)
			*pwszName = L'\\';
		pwszName++;
	}

	psid->pid.ByteLength = sizeof(gsc_InstanceDef) + Align8(sizeof(WCHAR) * cchVRoot);
	psid->pid.NameLength = sizeof(WCHAR) * cchVRoot;

	IPerfCounterBlock * ppcb = m_pObject->NewInstance( psid->pid, gsc_CounterBlock.pcb );
	if ( ppcb )
	{
		//
		//	Set the server ID perf counter.  This allows us to report
		//	perf counter data on a per-server rather than a per-vroot
		//	basis (as is done for W3SVC).
		//
		//	If the server ID could not be converted, LInstFromVroot()
		//	returns 0. The counter data will then be reported as part
		//	of the _Total instance.
		//
		ppcb->SetCounter( IPC_SERVER_ID, LInstFromVroot( pszVRoot ) );
	}

	return ppcb;
}

//	------------------------------------------------------------------------
//
//	CPerfCounters::IncrementTotalCounter()
//
VOID
CPerfCounters::IncrementTotalCounter( UINT iCounter )
{
	Assert( m_pCounterBlockTotal.get() );
	m_pCounterBlockTotal->IncrementCounter( iCounter );
}

//	------------------------------------------------------------------------
//
//	CPerfCounters::DecrementTotalCounter()
//
VOID
CPerfCounters::DecrementTotalCounter( UINT iCounter )
{
	Assert( m_pCounterBlockTotal.get() );
	m_pCounterBlockTotal->DecrementCounter( iCounter );
}

//	------------------------------------------------------------------------
//
//	InitPerfCounters()
//
BOOL FInitPerfCounters( const VOID * lpvCounterDefs )
{
	if ( CPerfCounters::CreateInstance().FInitialize( lpvCounterDefs ) )
		return TRUE;

	CPerfCounters::DestroyInstance();
	return FALSE;
}

//	------------------------------------------------------------------------
//
//	DeinitPerfCounters()
//
void
DeinitPerfCounters()
{
	CPerfCounters::DestroyInstance();
}

//	------------------------------------------------------------------------
//
//	NewVRCounters()
//
IPerfCounterBlock * NewVRCounters( LPCSTR lpszVRoot )
{
	return CPerfCounters::Instance().NewVRCounters( lpszVRoot );
}

//	------------------------------------------------------------------------
//
//	IncrementGlobalPerfCounter()
//
VOID IncrementGlobalPerfCounter( UINT iCounter )
{
	CPerfCounters::Instance().IncrementTotalCounter( iCounter );
}

//	------------------------------------------------------------------------
//
//	DecrementGlobalPerfCounter()
//
VOID DecrementGlobalPerfCounter( UINT iCounter )
{
	CPerfCounters::Instance().DecrementTotalCounter( iCounter );
}

//	------------------------------------------------------------------------
//
//	IncrementInstancePerfCounter()
//
VOID IncrementInstancePerfCounter( const CInstData& cid, UINT iCounter )
{
	cid.PerfCounterBlock().IncrementCounter( iCounter );
	CPerfCounters::Instance().IncrementTotalCounter( iCounter );
}

//	------------------------------------------------------------------------
//
//	DecrementInstancePerfCounter()
//
VOID DecrementInstancePerfCounter( const CInstData& cid, UINT iCounter )
{
	cid.PerfCounterBlock().DecrementCounter( iCounter );
	CPerfCounters::Instance().DecrementTotalCounter( iCounter );
}