2025-04-27 07:49:33 -04:00

47 lines
1.5 KiB
C++

/************************************************************
* FILE: cperfman.h
* PURPOSE: Definition of the CPerfMan class.
* HISTORY:
* // t-JeffS 970810 15:14:36: Created
************************************************************/
#ifndef _CPERFMAN_H
#define _CPERFMAN_H
#include <windows.h>
#include <winperf.h>
#include "csharmem.h"
/************************************************************
* CLASS: CPerfMan
* PURPOSE: Perform all the generic work an NT perf DLL normaly does.
************************************************************/
class CPerfMan {
private:
CSharedMem m_cShare;
DWORD m_dwNumCounters;
LPTSTR m_pszAppName;
LONG m_lRefCount;
PPERF_OBJECT_TYPE m_pObjectType;
PPERF_COUNTER_DEFINITION m_pCounterDefs;
DWORD m_cbDataDef;
CRITICAL_SECTION m_cs;
BOOL SetOffsets();
ULONG SizeOfPerformanceData() { return (m_dwNumCounters + 1)*sizeof(DWORD); }
public:
CPerfMan();
~CPerfMan();
BOOL Initialize( LPTSTR szAppName, PVOID pDataDef, DWORD dwNumCounters );
DWORD OpenPerformanceData( LPWSTR lpDeviceNames );
DWORD CollectPerformanceData( IN LPWSTR lpValueName,
IN OUT LPVOID *lppData,
IN OUT LPDWORD lpcbTotalBytes,
IN OUT LPDWORD lpNumObjectTypes);
DWORD ClosePerformanceData();
};
#endif //_CPERFMAN_H