This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/monshare.h

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