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

391 lines
7.1 KiB
C++

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
/////////////////////////////////////////////////////////////////////////////
// WMI Operations
/////////////////////////////////////////////////////////////////////////////
inline HRESULT CRule::EnumerateChildren()
{
TRACEX(_T("CRule::EnumerateChildren\n"));
return S_OK;
}
inline CString CRule::GetObjectPath()
{
TRACEX(_T("CRule::GetObjectPath\n"));
CString sPath;
sPath.Format(IDS_STRING_MOF_OBJECTPATH,IDS_STRING_MOF_HMR_CONFIG,GetGuid());
return sPath;
}
inline CString CRule::GetStatusObjectPath()
{
TRACEX(_T("CRule::GetStatusObjectPath\n"));
CString sPath;
sPath.Format(IDS_STRING_MOF_OBJECTPATH,IDS_STRING_MOF_HMR_STATUS,GetGuid());
return sPath;
}
inline CWbemClassObject* CRule::GetParentClassObject()
{
TRACEX(_T("CRule::GetParentClassObject\n"));
CWbemClassObject* pClassObject = new CWbemClassObject;
if( ! CHECKHRESULT(pClassObject->Create(GetSystemName())) )
{
delete pClassObject;
return NULL;
}
CString sQuery;
sQuery.Format(IDS_STRING_R2DE_ASSOC_QUERY,GetGuid());
BSTR bsQuery = sQuery.AllocSysString();
if( ! CHECKHRESULT(pClassObject->ExecQuery(bsQuery)) )
{
delete pClassObject;
::SysFreeString(bsQuery);
return NULL;
}
::SysFreeString(bsQuery);
ULONG ulReturned = 0L;
if( pClassObject->GetNextObject(ulReturned) != S_OK )
{
ASSERT(FALSE);
delete pClassObject;
return NULL;
}
ASSERT(ulReturned > 0);
return pClassObject;
}
inline CHMEvent* CRule::GetStatusClassObject()
{
TRACEX(_T("CRule::GetStatusClassObject\n"));
CHMEvent* pClassObject = new CHMRuleStatus;
pClassObject->SetMachineName(GetSystemName());
if( ! CHECKHRESULT(pClassObject->GetObject(GetStatusObjectPath())) )
{
delete pClassObject;
return NULL;
}
pClassObject->GetAllProperties();
return pClassObject;
}
inline CString CRule::GetThresholdString()
{
TRACEX(_T("CRule::GetThresholdString\n"));
CWbemClassObject* pThreshold = GetClassObject();
if( ! GfxCheckObjPtr(pThreshold,CWbemClassObject) )
{
return _T("");
}
CString sExpression;
CString sValue;
int iCondition = -1;
pThreshold->GetProperty(IDS_STRING_MOF_PROPERTYNAME,sValue);
if( sValue.IsEmpty() )
{
delete pThreshold;
return _T("");
}
sExpression += sValue + _T(" ");
pThreshold->GetProperty(IDS_STRING_MOF_RULECONDITION,iCondition);
switch( iCondition )
{
case 0:
{
sValue = _T("<");
}
break;
case 1:
{
sValue = _T(">");
}
break;
case 2:
{
sValue = _T("=");
}
break;
case 3:
{
sValue = _T("!=");
}
break;
case 4:
{
sValue = _T(">=");
}
break;
case 5:
{
sValue = _T("<=");
}
break;
case 6:
{
sValue.LoadString(IDS_STRING_CONTAINS);
}
break;
case 7:
{
sValue.LoadString(IDS_STRING_DOES_NOT_CONTAIN);
}
break;
default:
{
delete pThreshold;
return _T("");
}
break;
}
sExpression += sValue + _T(" ");
pThreshold->GetProperty(IDS_STRING_MOF_RULEVALUE,sValue);
if( sValue.IsEmpty() )
{
delete pThreshold;
return _T("");
}
sExpression += sValue;
delete pThreshold;
return sExpression;
}
/*
inline void CRule::DeleteClassObject()
{
TRACEX(_T("CRule::DeleteClassObject\n"));
// get associator path
CWbemClassObject Associator;
Associator.SetMachineName(GetSystemName());
CString sQuery;
sQuery.Format(IDS_STRING_R2DE_REF_QUERY,GetGuid());
BSTR bsQuery = sQuery.AllocSysString();
if( ! CHECKHRESULT(Associator.ExecQuery(bsQuery)) )
{
::SysFreeString(bsQuery);
return;
}
::SysFreeString(bsQuery);
ULONG ulReturned = 0L;
if( Associator.GetNextObject(ulReturned) != S_OK )
{
ASSERT(FALSE);
return;
}
CString sAssociatorPath;
Associator.GetProperty(_T("__path"),sAssociatorPath);
Associator.Destroy();
// delete the instance
Associator.SetMachineName(GetSystemName());
BSTR bsInstanceName = sAssociatorPath.AllocSysString();
CHECKHRESULT(Associator.DeleteInstance(bsInstanceName));
::SysFreeString(bsInstanceName);
}
*/
/////////////////////////////////////////////////////////////////////////////
// Clipboard Operations
/////////////////////////////////////////////////////////////////////////////
inline bool CRule::Cut()
{
TRACEX(_T("CRule::Cut\n"));
return false;
}
inline bool CRule::Copy()
{
TRACEX(_T("CRule::Copy\n"));
return false;
}
inline bool CRule::Paste()
{
TRACEX(_T("CRule::Paste\n"));
return false;
}
/////////////////////////////////////////////////////////////////////////////
// Operations
/////////////////////////////////////////////////////////////////////////////
inline bool CRule::Rename(const CString& sNewName)
{
TRACEX(_T("CRule::Rename\n"));
TRACEARGs(sNewName);
CString sName = sNewName;
CString sThreshold;
sThreshold.LoadString(IDS_STRING_RULE_FMT);
sThreshold = sThreshold.Left(sThreshold.GetLength()-3);
// do we need to autoname this ?
if( sName.Find(sThreshold) == 0 )
{
CWbemClassObject* pRuleObject = GetClassObject();
CString sPropertyName;
CString sCompareValue;
CString sOperator;
int iCondition;
pRuleObject->GetProperty(IDS_STRING_MOF_PROPERTYNAME,sPropertyName);
pRuleObject->GetProperty(IDS_STRING_MOF_COMPAREVALUE,sCompareValue);
pRuleObject->GetProperty(IDS_STRING_MOF_RULECONDITION,iCondition);
delete pRuleObject;
pRuleObject = NULL;
switch( iCondition )
{
case 0:
{
sOperator.LoadString(IDS_STRING_LESS_THAN);
}
break;
case 1:
{
sOperator.LoadString(IDS_STRING_GREATER_THAN);
}
break;
case 2:
{
sOperator.LoadString(IDS_STRING_EQUALS);
}
break;
case 3:
{
sOperator.LoadString(IDS_STRING_DOES_NOT_EQUAL);
}
break;
case 4:
{
sOperator.LoadString(IDS_STRING_GREATER_THAN_EQUAL_TO);
}
break;
case 5:
{
sOperator.LoadString(IDS_STRING_LESS_THAN_EQUAL_TO);
}
break;
case 6:
{
sOperator.LoadString(IDS_STRING_CONTAINS);
}
break;
case 7:
{
sOperator.LoadString(IDS_STRING_DOES_NOT_CONTAIN);
}
break;
case 8:
{
sOperator.LoadString(IDS_STRING_IS_ALWAYS_TRUE);
}
break;
}
if( ! sPropertyName.IsEmpty() && ! sOperator.IsEmpty() && ! sCompareValue.IsEmpty() )
{
if( iCondition != 8 ) // Is Always true is a special case
{
sName.Format(_T("%s %s %s"),sPropertyName,sOperator,sCompareValue);
}
}
else if( ! sOperator.IsEmpty() && iCondition == 8 )
{
sName = sOperator;
}
}
return CHMObject::Rename(sName);
}
inline bool CRule::Refresh()
{
TRACEX(_T("CRule::Refresh\n"));
return false;
}
inline bool CRule::ResetStatus()
{
TRACEX(_T("CRule::ResetStatus\n"));
return false;
}
inline CString CRule::GetUITypeName()
{
TRACEX(_T("CRule::GetUITypeName\n"));
CString sTypeName;
sTypeName.LoadString(IDS_STRING_RULE);
return sTypeName;
}
/////////////////////////////////////////////////////////////////////////////
// Scope Item Members
/////////////////////////////////////////////////////////////////////////////
inline CScopePaneItem* CRule::CreateScopeItem()
{
TRACEX(_T("CRule::CreateScopeItem\n"));
CRuleScopeItem * pNewItem = new CRuleScopeItem;
pNewItem->SetObjectPtr(this);
return pNewItem;
}