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.
|
|
#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; }
|