/*++ 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