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.
|
|
// File Action.inl // // // Copyright (c) 2000 Microsoft Corporation // // 03/18/00 v-marfin : bug 59492 - SetObjectPtr() before calling Create() so object // has necessary member ptr set. //
#ifdef _DEBUG #define new DEBUG_NEW #endif
///////////////////////////////////////////////////////////////////////////// // WMI Operations ///////////////////////////////////////////////////////////////////////////// // v-marfin 59492 --------------------------------------- inline CString CAction::GetStatusObjectPath() { TRACEX(_T("CAction::GetStatusObjectPath\n"));
CString sPath; sPath.Format(IDS_STRING_MOF_OBJECTPATH,IDS_STRING_MOF_HMACTION_STATUS,GetGuid());
return sPath; } //-------------------------------------------------------
inline CString CAction::GetObjectPath() { TRACEX(_T("CAction::GetObjectPath\n"));
CString sPath; sPath.Format(IDS_STRING_MOF_OBJECTPATH,IDS_STRING_MOF_HMA_CONFIG,GetGuid());
return sPath; }
inline CWbemClassObject* CAction::GetConsumerClassObject() { TRACEX(_T("CAction::GetConsumerClassObject\n"));
CWbemClassObject* pConfigObject = GetClassObject();
if( ! pConfigObject ) { return NULL; }
CString sEventConsumerPath; pConfigObject->GetProperty(IDS_STRING_MOF_EVENTCONSUMER,sEventConsumerPath);
delete pConfigObject; pConfigObject = NULL;
if( sEventConsumerPath.IsEmpty() ) { return NULL; }
CWbemClassObject* pClassObject = new CWbemClassObject;
if( ! CHECKHRESULT(pClassObject->Create(GetSystemName())) ) { delete pClassObject; return NULL; }
if( ! CHECKHRESULT(pClassObject->GetObject(sEventConsumerPath)) ) { delete pClassObject; return NULL; }
return pClassObject; }
inline CWbemClassObject* CAction::GetAssociatedConfigObjects() { TRACEX(_T("CAction::GetAssociatedConfigObjects\n"));
// execute the query for config objects associated to this action CWbemClassObject* pConfigObject = new CWbemClassObject; CString sQuery;
sQuery.Format(IDS_STRING_A2C_ASSOC_QUERY,GetGuid());
if( ! CHECKHRESULT(pConfigObject->Create(GetSystemName())) ) { return NULL; }
BSTR bsQuery = sQuery.AllocSysString();
if( ! CHECKHRESULT(pConfigObject->ExecQuery(bsQuery)) ) { ::SysFreeString(bsQuery); return NULL; }
::SysFreeString(bsQuery);
return pConfigObject; }
inline CWbemClassObject* CAction::GetAssociationObjects() { TRACEX(_T("CAction::GetAssociationObjects\n"));
// execute the query for config objects associated to this action CWbemClassObject* pAssociationObject = new CWbemClassObject;
CString sQuery; sQuery.Format(_T("REFERENCES OF {%s} WHERE ResultClass=Microsoft_HMConfigurationActionAssociation Role=ChildPath"),GetObjectPath());
CWbemClassObject Association;
pAssociationObject->Create(GetSystemName()); BSTR bsQuery = sQuery.AllocSysString(); if( ! CHECKHRESULT(pAssociationObject->ExecQuery(bsQuery)) ) { ::SysFreeString(bsQuery); return NULL; } ::SysFreeString(bsQuery);
return pAssociationObject; }
inline CWbemClassObject* CAction::GetA2CAssociation(const CString& sConfigGuid) { TRACEX(_T("CAction::GetEventFilter\n")); TRACEARGs(sConfigGuid);
CString sActionPath = GetObjectPath();
CString sQuery; sQuery.Format(_T("REFERENCES OF {%s} WHERE ResultClass=Microsoft_HMConfigurationActionAssociation Role=ChildPath"),sActionPath);
CWbemClassObject* pAssociation = new CWbemClassObject;
pAssociation->Create(GetSystemName()); BSTR bsQuery = sQuery.AllocSysString(); if( ! CHECKHRESULT(pAssociation->ExecQuery(bsQuery)) ) { ::SysFreeString(bsQuery); delete pAssociation; return NULL; } ::SysFreeString(bsQuery);
CString sParentPath; CString sEventFilterPath; ULONG ulReturned = 0L;
while( pAssociation->GetNextObject(ulReturned) == S_OK && ulReturned > 0 ) { pAssociation->GetProperty(_T("ParentPath"),sParentPath); if( sParentPath.Find(sConfigGuid) != -1 ) { break; } }
return pAssociation; }
inline CString CAction::GetConditionString(const CString& sConfigGuid) { TRACEX(_T("CAction::GetConditionString\n")); TRACEARGs(sConfigGuid);
CWbemClassObject* pAssociation = GetA2CAssociation(sConfigGuid); if( ! pAssociation ) { return _T(""); }
CString sQuery; CString sCondition; CString sResString;
pAssociation->GetProperty(_T("Query"),sQuery);
sQuery.MakeUpper();
if( sQuery.Find(_T("TARGETINSTANCE.STATE=0")) != -1 ) { sResString.LoadString(IDS_STRING_NORMAL); sCondition += sResString + _T(","); }
if( sQuery.Find(_T("TARGETINSTANCE.STATE=8")) != -1 ) { sResString.LoadString(IDS_STRING_WARNING); sCondition += sResString + _T(","); }
if( sQuery.Find(_T("TARGETINSTANCE.STATE=9")) != -1 ) { sResString.LoadString(IDS_STRING_CRITICAL); sCondition += sResString + _T(","); }
if( sQuery.Find(_T("TARGETINSTANCE.STATE=7")) != -1 ) { sResString.LoadString(IDS_STRING_NODATA); sCondition += sResString + _T(","); }
if( sQuery.Find(_T("TARGETINSTANCE.STATE=4")) != -1 ) { sResString.LoadString(IDS_STRING_DISABLED); sCondition += sResString + _T(","); }
sCondition.TrimRight(_T(","));
delete pAssociation;
return sCondition; }
inline bool CAction::CreateStatusListener() { if( ! m_pActionStatusListener ) { m_pActionStatusListener = new CActionStatusListener;
// v-marfin : bug 59492 - SetObjectPtr() before calling Create() so object // has necessary member ptr set. m_pActionStatusListener->SetObjectPtr(this); m_pActionStatusListener->Create(); }
return true; }
inline void CAction::DestroyStatusListener() { if( m_pActionStatusListener ) { delete m_pActionStatusListener; m_pActionStatusListener = NULL; } }
///////////////////////////////////////////////////////////////////////////// // Clipboard Operations /////////////////////////////////////////////////////////////////////////////
inline bool CAction::Cut() { TRACEX(_T("CAction::Cut\n")); return false; }
inline bool CAction::Copy() { TRACEX(_T("CAction::Copy\n")); return false; } inline bool CAction::Paste() { TRACEX(_T("CAction::Paste\n")); return false; }
///////////////////////////////////////////////////////////////////////////// // Operations /////////////////////////////////////////////////////////////////////////////
inline bool CAction::Refresh() { TRACEX(_T("CAction::Refresh\n")); return false; }
///////////////////////////////////////////////////////////////////////////// // Scope Item Members /////////////////////////////////////////////////////////////////////////////
inline CScopePaneItem* CAction::CreateScopeItem() { TRACEX(_T("CAction::CreateScopeItem\n"));
CActionScopeItem * pNewItem = new CActionScopeItem; pNewItem->SetObjectPtr(this);
return pNewItem; }
///////////////////////////////////////////////////////////////////////////// // Type GUID /////////////////////////////////////////////////////////////////////////////
inline CString CAction::GetTypeGuid() { TRACEX(_T("CAction::GetTypeGuid\n"));
return m_sTypeGuid; }
inline void CAction::SetTypeGuid(const CString& sGuid) { TRACEX(_T("CAction::SetTypeGuid\n")); TRACEARGs(sGuid);
m_sTypeGuid = sGuid;
if( m_sTypeGuid == IDS_STRING_MOF_HMAT_CMDLINE ) { SetType(IDM_ACTION_CMDLINE); m_sConsumerClassName = _T("CommandLineEventConsumer"); } else if( m_sTypeGuid == IDS_STRING_MOF_HMAT_EMAIL ) { SetType(IDM_ACTION_EMAIL); m_sConsumerClassName = _T("SmtpEventConsumer"); } else if( m_sTypeGuid == IDS_STRING_MOF_HMAT_TEXTLOG ) { SetType(IDM_ACTION_LOGFILE); m_sConsumerClassName = _T("LogFileEventConsumer"); } else if( m_sTypeGuid == IDS_STRING_MOF_HMAT_NTEVENT ) { SetType(IDM_ACTION_NTEVENT); m_sConsumerClassName = _T("NTEventLogEventConsumer"); } else if( m_sTypeGuid == IDS_STRING_MOF_HMAT_SCRIPT ) { SetType(IDM_ACTION_SCRIPT); m_sConsumerClassName = _T("ActiveScriptEventConsumer"); } else if( m_sTypeGuid == IDS_STRING_MOF_HMAT_PAGING ) { SetType(IDM_ACTION_PAGING); m_sConsumerClassName = _T("PagerEventConsumer"); } }
inline int CAction::GetType() { TRACEX(_T("CAction::GetType\n"));
return m_iType; }
inline void CAction::SetType(int iType) { TRACEX(_T("CAction::SetType\n")); TRACEARGn(iType);
m_iType = iType; }
inline CString CAction::GetUITypeName() { TRACEX(_T("CAction::GetUITypeName\n"));
CString sTypeName;
switch( GetType() ) { case IDM_ACTION_CMDLINE: { sTypeName.LoadString(IDS_STRING_ACTION_CMDLINE_FMT); } break;
case IDM_ACTION_EMAIL: { sTypeName.LoadString(IDS_STRING_ACTION_EMAIL_FMT); } break;
case IDM_ACTION_LOGFILE: { sTypeName.LoadString(IDS_STRING_ACTION_LOGFILE_FMT); } break;
case IDM_ACTION_NTEVENT: { sTypeName.LoadString(IDS_STRING_ACTION_NTEVENT_FMT); } break;
case IDM_ACTION_SCRIPT: { sTypeName.LoadString(IDS_STRING_ACTION_SCRIPT_FMT); } break;
case IDM_ACTION_PAGING: { sTypeName.LoadString(IDS_STRING_ACTION_PAGING_FMT); } break; }
sTypeName = sTypeName.Left(sTypeName.GetLength()-3);
return sTypeName; }
|