windows-nt/Source/XPSP1/NT/admin/hmonitor/snapin/hmdataelementstatistics.cpp
2020-09-26 16:20:57 +08:00

129 lines
2.6 KiB
C++

// HMDataElementStatistics.cpp: implementation of the CHMDataElementStatistics class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "snapin.h"
#include "HMDataElementStatistics.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
IMPLEMENT_DYNCREATE(CHMDataElementStatistics,CHMEvent)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHMDataElementStatistics::CHMDataElementStatistics()
{
}
CHMDataElementStatistics::~CHMDataElementStatistics()
{
for( int i = 0; i < m_PropStats.GetSize(); i++ )
{
delete m_PropStats[i];
}
m_PropStats.RemoveAll();
Destroy();
}
//////////////////////////////////////////////////////////////////////
// Create
//////////////////////////////////////////////////////////////////////
HRESULT CHMDataElementStatistics::Create(const CString& sMachineName)
{
HRESULT hr = CHMEvent::Create(sMachineName);
if( !CHECKHRESULT(hr) )
{
return hr;
}
return hr;
}
HRESULT CHMDataElementStatistics::Create(IWbemClassObject* pObject)
{
HRESULT hr = CHMEvent::Create(pObject);
if( !CHECKHRESULT(hr) )
{
return hr;
}
return hr;
}
//////////////////////////////////////////////////////////////////////
// Property Retrieval Operations
//////////////////////////////////////////////////////////////////////
HRESULT CHMDataElementStatistics::GetAllProperties()
{
ASSERT(m_pIWbemClassObject);
if( m_pIWbemClassObject == NULL )
{
ASSERT(FALSE);
return S_FALSE;
}
HRESULT hr = S_OK;
// Unique identifier
hr = GetProperty(IDS_STRING_MOF_GUID,m_sGUID);
m_sGUID.TrimLeft(_T("{"));
m_sGUID.TrimRight(_T("}"));
// DTime
CTime time;
hr = GetProperty(IDS_STRING_MOF_DTIME,time);
time.GetAsSystemTime(m_st);
CString sTime;
int iLen = GetTimeFormat(LOCALE_USER_DEFAULT,0L,&m_st,NULL,NULL,0);
iLen = GetTimeFormat(LOCALE_USER_DEFAULT,0L,&m_st,NULL,sTime.GetBuffer(iLen+(sizeof(TCHAR)*1)),iLen);
sTime.ReleaseBuffer();
m_sDateTime = sTime;
// Statistics
hr = GetProperty(IDS_STRING_MOF_STATISTICS,m_Statistics);
long lLower = 0L;
long lUpper = -1L;
if( hr != S_FALSE )
{
m_Statistics.GetLBound(1L,&lLower);
m_Statistics.GetUBound(1L,&lUpper);
}
for( long i = lLower; i <= lUpper; i++ )
{
IWbemClassObject* pIWBCO = NULL;
m_Statistics.GetElement(&i,&pIWBCO);
CHMPropertyStatus* pPS = new CHMPropertyStatus;
pPS->Create(pIWBCO);
pPS->GetAllProperties();
m_PropStats.Add(pPS);
pPS->Destroy();
}
m_Statistics.Destroy();
m_Statistics.Detach();
return hr;
}