//
// DNSCTR.h
//
// Offset definition file for exensible counter objects and counters
//
// These "relative" offsets must start at 0 and be multiples of 2 (i.e.
// even numbers). In the Open Procedure, they will be added to the
// "First Counter" and "First Help" values of the device they belong to,
// in order to determine the absolute location of the counter and
// object names and corresponding help text in the registry.
//
// this file is used by the extensible counter DLL code as well as the
// counter name and help text definition file (.INI) file that is used
// by LODCTR to load the names into the registry.
//
// We use a version number to keep track of which set of counters we are
// using, and whether the performance counters in the registry need to be
// reloaded. If you add or delete any counters, please change the version
// number at the end of this file.
//
#define DNSOBJ 0
#define TOTALQUERYRECEIVED 2
#define TOTALQUERYRECEIVED_S 4
#define UDPQUERYRECEIVED 6
#define UDPQUERYRECEIVED_S 8
#define TCPQUERYRECEIVED 10
#define TCPQUERYRECEIVED_S 12
#define TOTALRESPONSESENT 14
#define TOTALRESPONSESENT_S 16
#define UDPRESPONSESENT 18
#define UDPRESPONSESENT_S 20
#define TCPRESPONSESENT 22
#define TCPRESPONSESENT_S 24
#define RECURSIVEQUERIES 26
#define RECURSIVEQUERIES_S 28
#define RECURSIVETIMEOUT 30
#define RECURSIVETIMEOUT_S 32
#define RECURSIVEQUERYFAILURE 34
#define RECURSIVEQUERYFAILURE_S 36
#define NOTIFYSENT 38
#define ZONETRANSFERREQUESTRECEIVED 40
#define ZONETRANSFERSUCCESS 42
#define ZONETRANSFERFAILURE 44
#define AXFRREQUESTRECEIVED 46
#define AXFRSUCCESSSENT 48
#define IXFRREQUESTRECEIVED 50
#define IXFRSUCCESSSENT 52
#define NOTIFYRECEIVED 54
#define ZONETRANSFERSOAREQUESTSENT 56
#define AXFRREQUESTSENT 58
#define AXFRRESPONSERECEIVED 60
#define AXFRSUCCESSRECEIVED 62
#define IXFRREQUESTSENT 64
#define IXFRRESPONSERECEIVED 66
#define IXFRSUCCESSRECEIVED 68
#define IXFRUDPSUCCESSRECEIVED 70
#define IXFRTCPSUCCESSRECEIVED 72
#define WINSLOOKUPRECEIVED 74
#define WINSLOOKUPRECEIVED_S 76
#define WINSRESPONSESENT 78
#define WINSRESPONSESENT_S 80
#define WINSREVERSELOOKUPRECEIVED 82
#define WINSREVERSELOOKUPRECEIVED_S 84
#define WINSREVERSERESPONSESENT 86
#define WINSREVERSERESPONSESENT_S 88
#define DYNAMICUPDATERECEIVED 90
#define DYNAMICUPDATERECEIVED_S 92
#define DYNAMICUPDATENOOP 94
#define DYNAMICUPDATENOOP_S 96
#define DYNAMICUPDATEWRITETODB 98
#define DYNAMICUPDATEWRITETODB_S 100
#define DYNAMICUPDATEREJECTED 102
#define DYNAMICUPDATETIMEOUT 104
#define DYNAMICUPDATEQUEUED 106
#define SECUREUPDATERECEIVED 108
#define SECUREUPDATERECEIVED_S 110
#define SECUREUPDATEFAILURE 112
#define DATABASENODEMEMORY 114
#define RECORDFLOWMEMORY 116
#define CACHINGMEMORY 118
#define UDPMESSAGEMEMORY 120
#define TCPMESSAGEMEMORY 122
#define NBSTATMEMORY 124
#define DNS_PERF_COUNTER_BLOCK TEXT("Global\\Microsoft.Windows.DNS.Perf")
extern volatile unsigned long * pcTotalQueryReceived;
extern volatile unsigned long * pcUdpQueryReceived;
extern volatile unsigned long * pcTcpQueryReceived;
extern volatile unsigned long * pcTotalResponseSent;
extern volatile unsigned long * pcUdpResponseSent;
extern volatile unsigned long * pcTcpResponseSent;
extern volatile unsigned long * pcRecursiveQueries;
extern volatile unsigned long * pcRecursiveTimeOut;
extern volatile unsigned long * pcRecursiveQueryFailure;
extern volatile unsigned long * pcNotifySent;
extern volatile unsigned long * pcZoneTransferRequestReceived;
extern volatile unsigned long * pcZoneTransferSuccess;
extern volatile unsigned long * pcZoneTransferFailure;
extern volatile unsigned long * pcAxfrRequestReceived;
extern volatile unsigned long * pcAxfrSuccessSent;
extern volatile unsigned long * pcIxfrRequestReceived;
extern volatile unsigned long * pcIxfrSuccessSent;
extern volatile unsigned long * pcNotifyReceived;
extern volatile unsigned long * pcZoneTransferSoaRequestSent;
extern volatile unsigned long * pcAxfrRequestSent;
extern volatile unsigned long * pcAxfrResponseReceived;
extern volatile unsigned long * pcAxfrSuccessReceived;
extern volatile unsigned long * pcIxfrRequestSent;
extern volatile unsigned long * pcIxfrResponseReceived;
extern volatile unsigned long * pcIxfrSuccessReceived;
extern volatile unsigned long * pcIxfrUdpSuccessReceived;
extern volatile unsigned long * pcIxfrTcpSuccessReceived;
extern volatile unsigned long * pcWinsLookupReceived;
extern volatile unsigned long * pcWinsResponseSent;
extern volatile unsigned long * pcWinsReverseLookupReceived;
extern volatile unsigned long * pcWinsReverseResponseSent;
extern volatile unsigned long * pcDynamicUpdateReceived;
extern volatile unsigned long * pcDynamicUpdateNoOp;
extern volatile unsigned long * pcDynamicUpdateWriteToDB;
extern volatile unsigned long * pcDynamicUpdateRejected;
extern volatile unsigned long * pcDynamicUpdateTimeOut;
extern volatile unsigned long * pcDynamicUpdateQueued;
extern volatile unsigned long * pcSecureUpdateReceived;
extern volatile unsigned long * pcSecureUpdateFailure;
extern volatile unsigned long * pcDatabaseNodeMemory;
extern volatile unsigned long * pcRecordFlowMemory;
extern volatile unsigned long * pcCachingMemory;
extern volatile unsigned long * pcUdpMessageMemory;
extern volatile unsigned long * pcTcpMessageMemory;
extern volatile unsigned long * pcNbstatMemory;
#define PERF_INC(p) ( ++(*(p)) )
#define PERF_DEC(p) ( --(*(p)) )
#define PERF_ADD(p, c) ( (*(p)) += (c) )
#define PERF_SUB(p, c) ( (*(p)) -= (c) )
#define PERF_SET(p, c) ( (*(p)) = (c) )
#define DNS_PERFORMANCE_COUNTER_VERSION 1