|
|
// HMDataElementConfiguration.cpp: implementation of the HMDataElementConfiguration class.
//
// Copyright (c) 2000 Microsoft Corporation
//
// 03/21/00 v-marfin bug 62315 : Moved from below GetAllProperties() to here to ensure
// this property was fetched.
#include "stdafx.h"
#include "snapin.h"
#include "HMDataElementConfiguration.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW
#endif
IMPLEMENT_DYNCREATE(CHMDataElementConfiguration,CWbemClassObject)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHMDataElementConfiguration::CHMDataElementConfiguration() { m_sName.LoadString(IDS_STRING_UNKNOWN); m_sDescription.LoadString(IDS_STRING_UNKNOWN); m_iCollectionIntervalMultiple = 0; m_iStatisticsWindowSize = 0; m_iActiveDays = 0; m_bRequireManualReset = false; m_bEnable = true; }
CHMDataElementConfiguration::~CHMDataElementConfiguration() { Destroy(); }
//////////////////////////////////////////////////////////////////////
// Create
//////////////////////////////////////////////////////////////////////
HRESULT CHMDataElementConfiguration::Create(const CString& sMachineName) { HRESULT hr = CWbemClassObject::Create(sMachineName); if( !CHECKHRESULT(hr) ) { return hr; }
return hr; }
HRESULT CHMDataElementConfiguration::Create(IWbemClassObject* pObject) { HRESULT hr = CWbemClassObject::Create(pObject); if( !CHECKHRESULT(hr) ) { return hr; }
return hr; }
//////////////////////////////////////////////////////////////////////
// Enumeration Operations
//////////////////////////////////////////////////////////////////////
HRESULT CHMDataElementConfiguration::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 CHMDataElementConfiguration::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);
// What Namespace we are to look in. Can contain path to a remote machine.
hr = GetProperty(IDS_STRING_MOF_TARGETNAMESPACE,m_sTargetNamespace);
// How often to sample.
hr = GetProperty(IDS_STRING_MOF_COLLECTIONINTERVAL,m_iCollectionIntervalMultiple);
// Number of collection intervals to calculate the statistics across.
// And also determining number of event rule cases.
hr = GetProperty(IDS_STRING_MOF_STATISTICSWINDOW,m_iStatisticsWindowSize);
// Days of the week it is active. One bit per day.
hr = GetProperty(IDS_STRING_MOF_ACTIVEDAYS,m_iActiveDays);
// Hour (24hr) to activate (if day is active). e.g. 9 for 9AM
hr = GetProperty(IDS_STRING_MOF_BEGINTIME,m_BeginTime,false); if( hr == S_FALSE ) { m_BeginTime = CTime(1999,12,31,0,0,0); }
// Hour (24hr) to inactivate. e.g. 1350
hr = GetProperty(IDS_STRING_MOF_ENDTIME,m_EndTime,false); if( hr == S_FALSE ) { m_EndTime = CTime(1999,12,31,23,59,59); }
// For use by the console to aid in the display
hr = GetProperty(IDS_STRING_MOF_TYPEGUID,m_sTypeGUID); m_sTypeGUID.TrimLeft(_T("{")); m_sTypeGUID.TrimRight(_T("}")); hr = GetProperty(IDS_STRING_MOF_REQUIRERESET,m_bRequireManualReset);
// Enable
hr = GetProperty(IDS_STRING_MOF_ENABLE,m_bEnable);
// Statistics Property Names
hr = GetProperty(IDS_STRING_MOF_STATISTICSPROPERTYNAMES,m_saStatisticsPropertyNames);
return hr; }
HRESULT CHMDataElementConfiguration::SaveEnabledProperty() { ASSERT(m_pIWbemClassObject); if( m_pIWbemClassObject == NULL ) { ASSERT(FALSE); return S_FALSE; }
HRESULT hr = S_OK;
// Enable
hr = SetProperty(IDS_STRING_MOF_ENABLE,m_bEnable);
ASSERT(SUCCEEDED(hr));
hr = SaveAllProperties(); ASSERT(SUCCEEDED(hr));
return hr; }
HRESULT CHMDataElementConfiguration::SaveAllProperties() { HRESULT hr = S_OK;
// Display name
hr = SetProperty(IDS_STRING_MOF_NAME,m_sName);
// Description
hr = SetProperty(IDS_STRING_MOF_DESCRIPTION,m_sDescription);
// What Namespace we are to look in. Can contain path to a remote machine.
hr = SetProperty(IDS_STRING_MOF_TARGETNAMESPACE,m_sTargetNamespace);
// How often to sample.
hr = SetProperty(IDS_STRING_MOF_COLLECTIONINTERVAL,m_iCollectionIntervalMultiple);
// Number of collection intervals to calculate the statistics across.
// And also determining number of event rule cases.
hr = SetProperty(IDS_STRING_MOF_STATISTICSWINDOW,m_iStatisticsWindowSize);
// Days of the week it is active. One bit per day.
hr = SetProperty(IDS_STRING_MOF_ACTIVEDAYS,m_iActiveDays);
// Hour (24hr) to activate (if day is active). e.g. 9 for 9AM
hr = SetProperty(IDS_STRING_MOF_BEGINTIME,m_BeginTime,false);
// Hour (24hr) to inactivate. e.g. 1350
hr = SetProperty(IDS_STRING_MOF_ENDTIME,m_EndTime,false);
// For use by the console to aid in the display
hr = SetProperty(IDS_STRING_MOF_TYPEGUID,m_sTypeGUID);
hr = SetProperty(IDS_STRING_MOF_REQUIRERESET,m_bRequireManualReset);
// Enable
hr = SetProperty(IDS_STRING_MOF_ENABLE,m_bEnable);
// Statistics Property Names
hr = SetProperty(IDS_STRING_MOF_STATISTICSPROPERTYNAMES,m_saStatisticsPropertyNames);
if( ! CHECKHRESULT( hr = CWbemClassObject::SaveAllProperties() ) ) { TRACE(_T("FAILED : Call to CWbemClassObject::SaveAllProperties failed.\n")); }
return hr; }
//////////////////////////////////////////////////////////////////////
// implementation of the CHMPolledGetObjectDataElementConfiguration class
//////////////////////////////////////////////////////////////////////
// Property Retreival Operations
//////////////////////////////////////////////////////////////////////
HRESULT CHMPolledGetObjectDataElementConfiguration::GetAllProperties() { HRESULT hr = S_OK;
// Unique identifier
// v-marfin 62315 : Moved from below GetAllProperties() to here to ensure
// this property was fetched.
hr = GetProperty(IDS_STRING_MOF_PATH,m_sObjectPath); if (!CHECKHRESULT(hr)) { return hr; }
if( ! CHECKHRESULT(hr = CHMDataElementConfiguration::GetAllProperties()) ) { return hr; }
return hr; }
HRESULT CHMPolledGetObjectDataElementConfiguration::SaveAllProperties() { HRESULT hr = S_OK;
// ObjectPath
hr = SetProperty(IDS_STRING_MOF_PATH,m_sObjectPath);
if( ! CHECKHRESULT(hr = CHMDataElementConfiguration::SaveAllProperties()) ) { return hr; }
return hr; }
//////////////////////////////////////////////////////////////////////
// implementation of the CHMPolledMethodDataElementConfiguration class
CHMPolledMethodDataElementConfiguration::~CHMPolledMethodDataElementConfiguration() { DestroyArguments(m_Arguments); }
void CHMPolledMethodDataElementConfiguration::AddArgument(HMContextArray& Arguments, const CString& sMachineName, const CString& sName, int iType, const CString& sValue) { CHMContext* pContext = new CHMContext; pContext->SetMachineName(sMachineName); CString sClassName = _T("Microsoft_HMContext"); BSTR bsClassName = sClassName.AllocSysString(); if( ! CHECKHRESULT(pContext->CreateInstance(bsClassName)) ) { return; }
pContext->m_iType = iType; pContext->m_sValue = sValue; pContext->m_sName = sName; pContext->SaveAllProperties();
Arguments.Add(pContext);
::SysFreeString(bsClassName); }
void CHMPolledMethodDataElementConfiguration::DestroyArguments(HMContextArray& Arguments) { for( int i = 0; i < Arguments.GetSize(); i++ ) { if( GfxCheckObjPtr(Arguments[i],CHMContext) ) { delete Arguments[i]; } } Arguments.RemoveAll(); }
void CHMPolledMethodDataElementConfiguration::CopyArgsToSafeArray(HMContextArray& Arguments, COleSafeArray& Target) { Target.CreateOneDim(VT_UNKNOWN,(int)Arguments.GetSize());
for( long i = 0; i < Arguments.GetSize(); i++ ) { IWbemClassObject* pIWCO = Arguments[i]->GetClassObject(); if( pIWCO ) { Target.PutElement(&i,pIWCO); pIWCO->Release(); } } }
void CHMPolledMethodDataElementConfiguration::CopyArgsFromSafeArray(COleSafeArray& Arguments, HMContextArray& Target) { long lLower = 0L; long lUpper = -1L;
Arguments.GetLBound(1L,&lLower); Arguments.GetUBound(1L,&lUpper);
for( long i = lLower; i <= lUpper; i++ ) { IWbemClassObject* pIWBCO = NULL; Arguments.GetElement(&i,&pIWBCO); if( pIWBCO ) { CHMContext* pHMC = new CHMContext; pHMC->Create(pIWBCO); pHMC->GetAllProperties(); Target.Add(pHMC); } }
}
//////////////////////////////////////////////////////////////////////
// Property Retreival Operations
//////////////////////////////////////////////////////////////////////
HRESULT CHMPolledMethodDataElementConfiguration::GetAllProperties() { HRESULT hr = S_OK; if( ! CHECKHRESULT(hr = CHMPolledGetObjectDataElementConfiguration::GetAllProperties()) ) { return hr; }
// MethodName
hr = GetProperty(IDS_STRING_MOF_METHODNAME,m_sMethodName);
// Arguments
hr = GetProperty(IDS_STRING_MOF_ARGUMENTS,m_arguments);
long lLower = 0L; long lUpper = -1L;
if( hr != S_FALSE ) { m_arguments.GetLBound(1L,&lLower); m_arguments.GetUBound(1L,&lUpper); }
for( long i = lLower; i <= lUpper; i++ ) { IWbemClassObject* pIWBCO = NULL; m_arguments.GetElement(&i,&pIWBCO); if( pIWBCO ) { CHMContext* pHMC = new CHMContext; pHMC->Create(pIWBCO); pHMC->GetAllProperties(); m_Arguments.Add(pHMC); } }
return hr; }
HRESULT CHMPolledMethodDataElementConfiguration::SaveAllProperties() { HRESULT hr = S_OK;
// MethodName
hr = SetProperty(IDS_STRING_MOF_METHODNAME,m_sMethodName);
// Arguments
m_arguments.Destroy(); m_arguments.CreateOneDim(VT_UNKNOWN,(int)m_Arguments.GetSize());
for( long i = 0; i < m_Arguments.GetSize(); i++ ) { IWbemClassObject* pIWCO = m_Arguments[i]->GetClassObject(); if( pIWCO ) { m_arguments.PutElement(&i,pIWCO); pIWCO->Release(); } }
hr = SetProperty(IDS_STRING_MOF_ARGUMENTS,m_arguments);
if( ! CHECKHRESULT(hr = CHMPolledGetObjectDataElementConfiguration::SaveAllProperties()) ) { return hr; }
return hr; }
//////////////////////////////////////////////////////////////////////
// implementation of the CHMQueryDataElementConfiguration class
//////////////////////////////////////////////////////////////////////
// Property Retreival Operations
//////////////////////////////////////////////////////////////////////
HRESULT CHMQueryDataElementConfiguration::GetAllProperties() { HRESULT hr = S_OK; if( ! CHECKHRESULT(hr = CHMDataElementConfiguration::GetAllProperties()) ) { return hr; }
hr = GetProperty(IDS_STRING_MOF_QUERY,m_sQuery);
return hr; }
HRESULT CHMQueryDataElementConfiguration::SaveAllProperties() { HRESULT hr = S_OK;
hr = SetProperty(IDS_STRING_MOF_QUERY,m_sQuery);
if( ! CHECKHRESULT(hr = CHMDataElementConfiguration::SaveAllProperties()) ) { return hr; }
return hr; }
|