84 lines
3.4 KiB
C
84 lines
3.4 KiB
C
// --monshare.h-----------------------------------------------------------------
|
|
//
|
|
// Header file containing the definition of the performance monitoring shared
|
|
// memory structure. The shared memory is used to communicate between the
|
|
// monitored object side and the performance DLL called by the NT Performance
|
|
// Monitor.
|
|
//
|
|
// Copyright 1986 - 1998 Microsoft Corporation. All Rights Reserved.
|
|
// -----------------------------------------------------------------------------
|
|
#if !defined(_MONSHARE_H)
|
|
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
|
|
#define _MONSHARE_H
|
|
|
|
//
|
|
// Mapping and Mutex Object Names
|
|
//
|
|
|
|
// NOTE: "" and L"" versions must be the same!!!
|
|
|
|
#define MON_MAPPING_NAME_TEMPLATE "MS Exchange SDK PerfMon Mapping %s"
|
|
#define MON_MAPPING_NAME_TEMPLATE_W L"MS Exchange SDK PerfMon Mapping %s"
|
|
|
|
#define MON_MUTEX_NAME_TEMPLATE "MS Exchange SDK PerfMon Mutex %s"
|
|
#define MON_MUTEX_NAME_TEMPLATE_W L"MS Exchange SDK PerfMon Mutex %s"
|
|
|
|
//
|
|
// Defined Constants
|
|
//
|
|
|
|
// MON_SHARED_MEMORY_SIGNATURE identifies the shared memory section as an
|
|
// Exchange SDK performance monitoring shared memory communication block.
|
|
// This constant should be incremented when the structure of the shared
|
|
// memory section is changed to catch version mismatches between the
|
|
// monitored object and the DLL.
|
|
|
|
#define MON_SHARED_MEMORY_SIGNATURE 0x47575011
|
|
|
|
// MON_DATA_BLOCK_SIZE is the size of the buffer within the shared block
|
|
// in which is built the structure that is sent to the Windows NT
|
|
// Performance Monitor. This value may be increased if needed to hold
|
|
// a larger number of counters. A change in this value does not require
|
|
// any other values to be changed.
|
|
|
|
#define MON_DATA_BLOCK_SIZE 4000
|
|
|
|
// MON_MUTEX_TIMEOUT is the number of miliseconds to wait for the
|
|
// mutex that locks the shared memory section. May be defined as
|
|
// INFINITE to wait forever.
|
|
|
|
#define MON_MUTEX_TIMEOUT (5*60*1000)
|
|
|
|
//
|
|
// Structure Definitions
|
|
//
|
|
|
|
//$--MONSHAREDMEMORY------------------------------------------------------------
|
|
// This is the structure of the shared memory block used to communicate with
|
|
// the performance DLL. The _PERF_* structures are all built inside the
|
|
// rgbDataBlock array within this structure.
|
|
// -----------------------------------------------------------------------------
|
|
typedef struct _MonSharedMemory // (hungarian notation = msm)
|
|
{
|
|
DWORD dwSignature; // value that identifies this as an
|
|
// Exchange SDK perf mon memory block
|
|
DWORD fDataIsValid; // safe for DLL to use shared mem data
|
|
DWORD ibHeaderOffset; // offset of _PERF_OBJECT_TYPE and
|
|
// _PERF_COUNTER_DEFINITION structures
|
|
// in this shared memory block
|
|
DWORD cbHeaderSize; // size of _PERF_OBJECT_TYPE and
|
|
// _PERF_COUNTER_DEFINITION structures
|
|
// in this shared memory block
|
|
DWORD ibInstanceOffset; // offset of _PERF_INSTANCE_DEFINITION,
|
|
// _PERF_COUNTER_BLOCK and counters
|
|
// in this shared memory block
|
|
DWORD cbInstanceSize; // size of _PERF_INSTANCE_DEFINITION,
|
|
// _PERF_COUNTER_BLOCK and counters
|
|
// in this shared memory block
|
|
BYTE rgbDataBlock[MON_DATA_BLOCK_SIZE]; // the actual data block containing
|
|
// both of the structures listed above
|
|
} MONSHAREDMEMORY, *LPMONSHAREDMEMORY;
|
|
|
|
#pragma option pop /*P_O_Pop*/
|
|
#endif
|