/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1993 **/ /**********************************************************************/ /* dhcpdata.h Extensible object definitions for the DHCP Server's counter objects & counters. FILE HISTORY: Pradeepb 20-July-1993 Created. RameshV 05-Aug-1998 Adapted for DHCP */ #ifndef _DHCPDATA_H_ #define _DHCPDATA_H_ // // This structure is used to ensure the first counter is properly // aligned. Unfortunately, since PERF_COUNTER_BLOCK consists // of just a single DWORD, any LARGE_INTEGERs that immediately // follow will not be aligned properly. // // This structure requires "natural" packing & alignment (probably // quad-word, especially on Alpha). Ergo, keep it out of the // #pragma pack(4) scope below. // typedef struct _DHCPDATA_COUNTER_BLOCK { PERF_COUNTER_BLOCK PerfCounterBlock; LARGE_INTEGER DummyEntryForAlignmentPurposesOnly; } DHCPDATA_COUNTER_BLOCK; // // The routines that load these structures assume that all fields // are DWORD packed & aligned. // #pragma pack(4) // // Offsets within a PERF_COUNTER_BLOCK. // #define DHCPDATA_PACKETS_RECEIVED_OFFSET (0*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_PACKETS_DUPLICATE_OFFSET (1*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_PACKETS_EXPIRED_OFFSET (2*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_MILLISECONDS_PER_PACKET_OFFSET (3*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_PACKETS_IN_ACTIVE_QUEUE_OFFSET (4*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_PACKETS_IN_PING_QUEUE_OFFSET (5*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_DISCOVERS_OFFSET (6*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_OFFERS_OFFSET (7*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_REQUESTS_OFFSET (8*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_INFORMS_OFFSET (9*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_ACKS_OFFSET (10*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_NACKS_OFFSET (11*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_DECLINES_OFFSET (12*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_RELEASES_OFFSET (13*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) #define DHCPDATA_SIZE_OF_PERFORMANCE_DATA (14*sizeof(DWORD) + sizeof(DHCPDATA_COUNTER_BLOCK)) // // The counter structure returned. // typedef struct _DHCPDATA_DATA_DEFINITION { PERF_OBJECT_TYPE ObjectType; PERF_COUNTER_DEFINITION PacketsReceived; PERF_COUNTER_DEFINITION PacketsDuplicate; PERF_COUNTER_DEFINITION PacketsExpired; PERF_COUNTER_DEFINITION MilliSecondsPerPacket; PERF_COUNTER_DEFINITION ActiveQueuePackets; PERF_COUNTER_DEFINITION PingQueuePackets; PERF_COUNTER_DEFINITION Discovers; PERF_COUNTER_DEFINITION Offers; PERF_COUNTER_DEFINITION Requests; PERF_COUNTER_DEFINITION Informs; PERF_COUNTER_DEFINITION Acks; PERF_COUNTER_DEFINITION Nacks; PERF_COUNTER_DEFINITION Declines; PERF_COUNTER_DEFINITION Releases; } DHCPDATA_DATA_DEFINITION; extern DHCPDATA_DATA_DEFINITION DhcpDataDataDefinition; #define NUMBER_OF_DHCPDATA_COUNTERS ((sizeof(DHCPDATA_DATA_DEFINITION) - \ sizeof(PERF_OBJECT_TYPE)) / \ sizeof(PERF_COUNTER_DEFINITION)) #define DHCPDATA_PERFORMANCE_KEY \ TEXT("System\\CurrentControlSet\\Services\\DHCPServer\\Performance") // // Restore default packing & alignment. // #pragma pack() #endif // _DHCPDATA_H_