|
|
/*++
Copyright (c) 1996 Microsoft Corporation All rights reserved.
Module Name:
perf.hxx
Abstract:
Performance public header file.
Author:
Albert Ting (AlbertT) 18-Dec-1996
Revision History:
--*/
#ifndef PERF_HXX
#define PERF_HXX
/********************************************************************
To use the performance library, do the following:
* Define a string gszAppName that is the name of the application. * Export the routines:
Pf_dwClientOpen Pf_dwClientCollet Pf_vClientClose
* In Pf_dwClientOpen, call Pf_*FixIndicies* to update the indicies based on either a performance registry key, or fixed known values.
* Static link with perf.lib.
********************************************************************/
typedef struct PERF_DATA_DEFINITION { PERF_OBJECT_TYPE ObjectType; PERF_COUNTER_DEFINITION aCounterDefinitions[1];
} *PPERF_DATA_DEFINITION;
inline UINT QuadAlignUp( UINT u ) { return ( u + 7 ) & ~7; }
/********************************************************************
Support routines client may call.
********************************************************************/
DWORD Pf_dwFixIndiciesKey( LPCTSTR szPerformanceKey, PPERF_DATA_DEFINITION ppdd );
VOID Pf_vFixIndiciesFromIndex( DWORD dwFirstCounter, DWORD dwFirstHelp, PPERF_DATA_DEFINITION ppdd );
DWORD Pf_dwBuildInstance( DWORD dwParentObjectTitleIndex, DWORD dwParentObjectInstance, DWORD dwUniqueID, LPCWSTR pszName, PBYTE* ppData, PDWORD pcbDataLeft );
/********************************************************************
Client export functions.
********************************************************************/
DWORD Pf_dwClientOpen( LPCWSTR pszDeviceNames, PPERF_DATA_DEFINITION *pppdd );
DWORD Pf_dwClientCollect( PBYTE *ppData, PDWORD pcbDataLeft, PDWORD pcNumInstances );
VOID Pf_vClientClose( VOID );
/********************************************************************
Event logging.
********************************************************************/
enum EEventLogLevel { kSuccess = 0, kInformation = 1, kWarning = 2, kError = 3,
kTypeMask = 0xffff,
kNone = 0x00000, kUser = 0x10000, kDebug = 0x20000, kVerbose = 0x30000,
kLevelShift = 0x10 };
VOID Pf_vReportEvent( UINT uLevel, DWORD dwMessage, DWORD cbData, PVOID pvData, LPCWSTR pszFirst, ... );
#endif // ifdef PERF_HXX
|