|
|
// HMRuleStatusInstance.cpp: implementation of the CHMRuleStatusInstance class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "snapin.h"
#include "HMRuleStatus.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW
#endif
IMPLEMENT_DYNCREATE(CHMRuleStatusInstance,CHMEvent)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHMRuleStatusInstance::CHMRuleStatusInstance() { m_iState = 2; m_sState.LoadString(IDS_STRING_UNKNOWN); m_sMessage.LoadString(IDS_STRING_CONNECTED); m_sCurrentValue.LoadString(IDS_STRING_UNKNOWN); }
CHMRuleStatusInstance::CHMRuleStatusInstance(const CHMRuleStatusInstance& rsi) { m_sSystemName = rsi.m_sSystemName; m_sGuid = rsi.m_sGuid; m_ID= rsi.m_ID; m_sMessage = rsi.m_sMessage; m_sInstanceName = rsi.m_sInstanceName; m_iState = rsi.m_iState; m_sState = rsi.m_sState; m_sStatusGuid = rsi.m_sStatusGuid; m_sCurrentValue = rsi.m_sCurrentValue; m_sDateTime= rsi.m_sDateTime; m_st = rsi.m_st;
m_sDataElementName = rsi.m_sDataElementName; }
CHMRuleStatusInstance::~CHMRuleStatusInstance() { Destroy(); }
//////////////////////////////////////////////////////////////////////
// Create
//////////////////////////////////////////////////////////////////////
HRESULT CHMRuleStatusInstance::Create(const CString& sMachineName) { HRESULT hr = CHMEvent::Create(sMachineName); if( !CHECKHRESULT(hr) ) { return hr; }
// create the enumerator for Microsoft_HMRuleStatus object instances
BSTR bsClass = SysAllocString(_T("Microsoft_HMThresholdStatusInstance")); hr = CreateEnumerator(bsClass); SysFreeString(bsClass);
if( !CHECKHRESULT(hr) ) { return hr; }
return hr; }
HRESULT CHMRuleStatusInstance::Create(IWbemClassObject* pObject) { HRESULT hr = CHMEvent::Create(pObject); if( !CHECKHRESULT(hr) ) { return hr; }
return hr; }
//////////////////////////////////////////////////////////////////////
// Property Retrieval Operations
//////////////////////////////////////////////////////////////////////
HRESULT CHMRuleStatusInstance::GetAllProperties() { ASSERT(m_pIWbemClassObject); if( m_pIWbemClassObject == NULL ) { ASSERT(FALSE); return S_FALSE; }
HRESULT hr = S_OK;
// GUID
hr = GetProperty(IDS_STRING_MOF_GUID,m_sGuid); m_sGuid.TrimLeft(_T("{")); m_sGuid.TrimRight(_T("}"));
// StatusGUID
hr = GetProperty(IDS_STRING_MOF_STATUSGUID,m_sStatusGuid); m_sStatusGuid.TrimLeft(_T("{")); m_sStatusGuid.TrimRight(_T("}"));
// State
hr = GetProperty(IDS_STRING_MOF_STATE,m_iState);
switch( m_iState ) { case 0: { m_sState.LoadString(IDS_STRING_CRITICAL); } break;
case 1: { m_sState.LoadString(IDS_STRING_WARNING); } break;
case 2: { m_sState.LoadString(IDS_STRING_NODATA); } break;
case 3: { m_sState.LoadString(IDS_STRING_UNKNOWN); } break;
case 4: { m_sState.LoadString(IDS_STRING_OUTAGE); } break;
case 5: { m_sState.LoadString(IDS_STRING_DISABLED); } break;
case 6: { m_sState.LoadString(IDS_STRING_INFORMATION); } break;
case 7: { m_sState.LoadString(IDS_STRING_RESET); } break;
case 8: { m_sState.LoadString(IDS_STRING_NORMAL); } break; }
// Message
hr = GetProperty(IDS_STRING_MOF_MESSAGE,m_sMessage);
// CurrentValue
hr = GetProperty(IDS_STRING_MOF_CURRENTVALUE,m_sCurrentValue);
// InstanceName
hr = GetProperty(IDS_STRING_MOF_INSTANCENAME,m_sInstanceName);
// ID
hr = GetProperty(IDS_STRING_MOF_ID,m_ID);
// DTime
CTime time; hr = GetProperty(IDS_STRING_MOF_LOCALTIME,time); time.GetAsSystemTime(m_st);
CString sTime; CString sDate;
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();
iLen = GetDateFormat(LOCALE_USER_DEFAULT,0L,&m_st,NULL,NULL,0); iLen = GetDateFormat(LOCALE_USER_DEFAULT,0L,&m_st,NULL,sDate.GetBuffer(iLen+(sizeof(TCHAR)*1)),iLen); sDate.ReleaseBuffer();
m_sDateTime = sDate + _T(" ") + sTime;
// propogate the status back up to the HMSystemStatus instance
// this gives us a roll up of status at each node in the tree
CHMEvent* pParent = GetParent(); CHMRuleStatusInstance* pStatus = NULL; while(pParent) { pStatus = new CHMRuleStatusInstance(*this); pStatus->SetParent(this); pParent->m_RolledUpRuleStatus.Add(pStatus); pParent = pParent->GetParent(); }
return hr; }
|