Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

442 lines
7.5 KiB

// HMRuleConfiguration.cpp: implementation of the CHMRuleConfiguration class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "snapin.h"
#include "HMRuleConfiguration.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
IMPLEMENT_DYNCREATE(CHMRuleConfiguration,CWbemClassObject)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHMRuleConfiguration::CHMRuleConfiguration()
{
m_iID = 0;
m_iUseFlag = 0;
m_iRuleCondition = 0;
m_iRuleDuration = 0;
m_iState = 0;
m_bEnable = true;
}
CHMRuleConfiguration::~CHMRuleConfiguration()
{
Destroy();
}
//////////////////////////////////////////////////////////////////////
// Create
//////////////////////////////////////////////////////////////////////
HRESULT CHMRuleConfiguration::Create(const CString& sMachineName)
{
HRESULT hr = CWbemClassObject::Create(sMachineName);
if( !CHECKHRESULT(hr) )
{
return hr;
}
return hr;
}
HRESULT CHMRuleConfiguration::Create(IWbemClassObject* pObject)
{
HRESULT hr = CWbemClassObject::Create(pObject);
if( !CHECKHRESULT(hr) )
{
return hr;
}
return hr;
}
//////////////////////////////////////////////////////////////////////
// Enumeration Operations
//////////////////////////////////////////////////////////////////////
HRESULT CHMRuleConfiguration::EnumerateObjects(ULONG& uReturned)
{
// call GetNextObject to proceed to the next object instance
HRESULT hr = GetNextObject(uReturned);
if( FAILED(hr) || uReturned != 1 )
{
// no more instances
return hr;
}
ASSERT(m_pIWbemClassObject);
if( m_pIWbemClassObject == NULL )
{
ASSERT(0);
return S_FALSE;
}
// process the properties of this object
hr = GetAllProperties();
return hr;
}
//////////////////////////////////////////////////////////////////////
// Property Retrieval Operations
//////////////////////////////////////////////////////////////////////
HRESULT CHMRuleConfiguration::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("}"));
// Display name
hr = GetLocaleStringProperty(IDS_STRING_MOF_NAME,m_sName);
// Description
hr = GetLocaleStringProperty(IDS_STRING_MOF_DESCRIPTION,m_sDescription);
hr = GetProperty(IDS_STRING_MOF_ID,m_iID);
// What property to look at from the parent instance
hr = GetProperty(IDS_STRING_MOF_PROPERTYNAME,m_sPropertyName);
// Rules against the average value, not the current value.
hr = GetProperty(IDS_STRING_MOF_USEFLAG,m_iUseFlag);
// The condition to use for the Rule.
hr = GetProperty(IDS_STRING_MOF_RULECONDITION,m_iRuleCondition);
switch( m_iRuleCondition )
{
case 0:
{
m_sRuleCondition.LoadString(IDS_STRING_LESS_THAN);
}
break;
case 1:
{
m_sRuleCondition.LoadString(IDS_STRING_GREATER_THAN);
}
break;
case 2:
{
m_sRuleCondition.LoadString(IDS_STRING_EQUALS);
}
break;
case 3:
{
m_sRuleCondition.LoadString(IDS_STRING_DOES_NOT_EQUAL);
}
break;
case 4:
{
m_sRuleCondition.LoadString(IDS_STRING_GREATER_THAN_EQUAL_TO);
}
break;
case 5:
{
m_sRuleCondition.LoadString(IDS_STRING_LESS_THAN_EQUAL_TO);
}
break;
case 6:
{
m_sRuleCondition.LoadString(IDS_STRING_CONTAINS);
}
break;
case 7:
{
m_sRuleCondition.LoadString(IDS_STRING_DOES_NOT_CONTAIN);
}
break;
}
// Value to use for Rule.
hr = GetProperty(IDS_STRING_MOF_RULEVALUE,m_sRuleValue);
// How long the value must remain. In
hr = GetProperty(IDS_STRING_MOF_RULEDURATION,m_iRuleDuration);
// The state we transition to if cross Rule.
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_INFORMATION);
}
break;
case 3:
{
m_sState.LoadString(IDS_STRING_RESET);
}
break;
}
// Time of origional creation
hr = GetProperty(IDS_STRING_MOF_CREATIONDATE,m_sCreationDate);
// Time of last change
hr = GetProperty(IDS_STRING_MOF_LASTUPDATE,m_sLastUpdate);
// What gets sent to the event. Can contain special
hr = GetProperty(IDS_STRING_MOF_MESSAGE,m_sMessage);
// Enable
hr = GetProperty(IDS_STRING_MOF_ENABLE,m_bEnable);
return hr;
}
HRESULT CHMRuleConfiguration::SaveEnabledProperty()
{
ASSERT(m_pIWbemClassObject);
if( m_pIWbemClassObject == NULL )
{
ASSERT(FALSE);
return S_FALSE;
}
HRESULT hr = S_OK;
// Enable
CString sProperty;
hr = SetProperty(IDS_STRING_MOF_ENABLE,m_bEnable);
ASSERT(SUCCEEDED(hr));
hr = SaveAllProperties();
ASSERT(SUCCEEDED(hr));
return hr;
}
HRESULT CHMRuleConfiguration::SaveAllProperties()
{
ASSERT(m_pIWbemClassObject);
if( m_pIWbemClassObject == NULL )
{
ASSERT(FALSE);
return S_FALSE;
}
HRESULT hr = S_OK;
// Unique identifier
// hr = SetProperty(IDS_STRING_MOF_GUID,m_sGUID);
// Display name
hr = SetProperty(IDS_STRING_MOF_NAME,m_sName);
// Description
hr = SetProperty(IDS_STRING_MOF_DESCRIPTION,m_sDescription);
hr = SetProperty(IDS_STRING_MOF_ID,m_iID);
// What property to look at from the parent instance
hr = SetProperty(IDS_STRING_MOF_PROPERTYNAME,m_sPropertyName);
// Rule against the change, not the current
hr = SetProperty(IDS_STRING_MOF_USEFLAG,m_iUseFlag);
// The condition to use for the Rule.
hr = SetProperty(IDS_STRING_MOF_RULECONDITION,m_iRuleCondition);
// Value to use for Rule.
hr = SetProperty(IDS_STRING_MOF_RULEVALUE,m_sRuleValue);
// How long the value must remain. In
hr = SetProperty(IDS_STRING_MOF_RULEDURATION,m_iRuleDuration);
// The state we transition to if cross Rule.
hr = SetProperty(IDS_STRING_MOF_STATE,m_iState);
// Time of origional creation
hr = SetProperty(IDS_STRING_MOF_CREATIONDATE,m_sCreationDate);
// Time of last change
hr = SetProperty(IDS_STRING_MOF_LASTUPDATE,m_sLastUpdate);
// What gets sent to the event. Can contain special
hr = SetProperty(IDS_STRING_MOF_MESSAGE,m_sMessage);
// Enable
hr = SetProperty(IDS_STRING_MOF_ENABLE,m_bEnable);
hr = CWbemClassObject::SaveAllProperties();
CHECKHRESULT(hr);
return hr;
}
HRESULT CHMRuleConfiguration::SaveAllExpressionProperties()
{
ASSERT(m_pIWbemClassObject);
if( m_pIWbemClassObject == NULL )
{
ASSERT(FALSE);
return S_FALSE;
}
HRESULT hr = S_OK;
// Value to use for Rule.
hr = SetProperty(IDS_STRING_MOF_RULEVALUE,m_sRuleValue);
// The state we transition to if cross Rule.
hr = SetProperty(IDS_STRING_MOF_STATE,m_iState);
// The condition to use for the Rule.
hr = SetProperty(IDS_STRING_MOF_RULECONDITION,m_iRuleCondition);
// What property to look at from the parent instance
hr = SetProperty(IDS_STRING_MOF_PROPERTYNAME,m_sPropertyName);
// Rules against the average value, not the current value.
hr = SetProperty(IDS_STRING_MOF_USEFLAG,m_iUseFlag);
hr = CWbemClassObject::SaveAllProperties();
CHECKHRESULT(hr);
return hr;
}