windows-nt/Source/XPSP1/NT/admin/wmi/wbem/winmgmt/stdprov/provperf.h

172 lines
4 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (C) 1995-2001 Microsoft Corporation
Module Name:
PROVPERF.H
Abstract:
Declares the classes needed for the perm monitor provider.
History:
a-davj 27-Nov-95 Created.
--*/
#ifndef _PROVPERF_H_
#define _PROVPERF_H_
#include <winperf.h>
#include "perfprov.h"
#include "impdyn.h"
#include "cfdyn.h"
#include "perfcach.h"
#include "indexcac.h"
//***************************************************************************
//
// CLASS NAME:
//
// CEnumPerfInfo
//
// DESCRIPTION:
//
// A collection class that holds the instance information for use when
// support enumeration.
//
//***************************************************************************
class CEnumPerfInfo : public CEnumInfo
{
public:
CEnumPerfInfo();
~CEnumPerfInfo();
void AddEntry(LPWSTR pNew);
LPWSTR GetEntry(int iIndex);
int GetNumDuplicates(LPWSTR pwcTest);
SCODE GetStatus(void){return m_status;};
private:
int m_iNumUniChar;
int m_iNumEntries;
LPWSTR m_pBuffer;
SCODE m_status;
};
//***************************************************************************
//
// CLASS NAME:
//
// CImpPerf
//
// DESCRIPTION:
//
// This overrides the CImpDyn class and provides the main functions of
// support the perf monitor instance provider.
//
//***************************************************************************
class CImpPerf : public CImpDyn
{
public:
friend DWORD CleanUpThreadRoutine( LPDWORD pParam );
CImpPerf();
~CImpPerf();
int iGetMinTokens(void){return 3;};
SCODE RefreshProperty(long lFlags, IWbemClassObject FAR * pClassInt,
BSTR PropName,CProvObj & ProvObj,CObject * pPackage,
CVariant * pVar, BOOL bTesterDetails);
SCODE UpdateProperty(long lFlags, IWbemClassObject FAR * pClassInt,
BSTR PropName,CProvObj & ProvObj,CObject * pPackage,
CVariant * pVar);
SCODE LoadData(CProvObj & ProvObj,LINESTRUCT * pls,int * piObject,
int * piCounter, PERF_DATA_BLOCK **ppNew, BOOL bJustGettingInstances);
SCODE MakeEnum(IWbemClassObject * pClass, CProvObj & ProvObj,
CEnumInfo ** ppInfo);
SCODE GetKey(CEnumInfo * pInfo, int iIndex, LPWSTR * ppKey);
virtual void FreeStuff(void);
DWORD GetPerfTitleSz ();
DWORD dwGetRegHandles(const TCHAR * pMachine);
int iGetTitleIndex(const TCHAR * pSearch);
SCODE FindData(PERF_DATA_BLOCK * pData,int iObj, int iCount,CProvObj & ProvObj,DWORD * pdwSize,
void **ppRetData,PLINESTRUCT pls, BOOL bNew,CEnumPerfInfo * pInfo);
SCODE MergeStrings(LPWSTR *ppOut,LPWSTR pClassContext,LPWSTR pKey,LPWSTR pPropContext);
private:
HANDLE hExec;
PerfCache Cache;
HKEY hKeyMachine;
DWORD dwLastTimeUsed;
HKEY hKeyPerf;
TString sMachine;
HANDLE m_hTermEvent;
LPTSTR TitleBuffer; // raw buffer of counter titles
CIndexCache m_IndexCache;
};
//***************************************************************************
//
// CLASS NAME:
//
// CCFPerf
//
// DESCRIPTION:
//
// Class factory for CLocatorPerf class
//
//***************************************************************************
class CCFPerf : public CCFDyn
{
public:
IUnknown * CreateImpObj() {return (IWbemServices*) new CImpPerf;};
} ;
//***************************************************************************
//
// CLASS NAME:
//
// CImpPerfProp
//
// DESCRIPTION:
//
// Perf Provider property provider class.
//
//***************************************************************************
class CImpPerfProp : public CImpDynProp {
public:
CImpPerfProp();
~CImpPerfProp();
};
//***************************************************************************
//
// CLASS NAME:
//
// CCFPerfProp
//
// DESCRIPTION:
//
// Class factory for CImpPerfProp class.
//
//***************************************************************************
class CCFPerfProp : public CCFDyn
{
public:
IUnknown * CreateImpObj() {return new CImpPerfProp();};
} ;
#endif //_PROVPERF_H_