📄 wmiclientrep.cpp
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================//// Author: Jair Santos, Hewlett-Packard Company (jair.santos@hp.com)//// Modified By: Terry Martin, Hewlett-Packard Company (terry.martin@hp.com)////%/////////////////////////////////////////////////////////////////////////////#include "WMIClientRep.h"///////////////////////////////////////////////////////////////////////////////// Need to include these before the WMI Provider headers#include <atlbase.h>#include <comdef.h>#include <wbemcli.h>///////////////////////////////////////////////////////////////////////////////// WMI Provider interface headers#include <WMIMapper/WMIProvider/WMIInstanceProvider.h>#include <WMIMapper/WMIProvider/WMIClassProvider.h>#include <WMIMapper/WMIProvider/WMIAssociatorProvider.h>#include <WMIMapper/WMIProvider/WMIReferenceProvider.h>#include <WMIMapper/WMIProvider/WMIQualifierProvider.h>#include <WMIMapper/WMIProvider/WMIMethodProvider.h>#include <WMIMapper/WMIProvider/WMIQueryProvider.h>///////////////////////////////////////////////////////////////////////////////PEGASUS_USING_STD;PEGASUS_NAMESPACE_BEGINstatic Boolean verifyServerCertificate(SSLCertificateInfo &certInfo){ //ATTN-NB-03-05132002: Add code to handle server certificate verification. return true;}///////////////////////////////////////////////////////////////////////////////WMIClientRep::WMIClientRep(Uint32 timeoutMilliseconds): MessageQueue(PEGASUS_QUEUENAME_CLIENT), _timeoutMilliseconds(timeoutMilliseconds), _connected(false){}///////////////////////////////////////////////////////////////////////////////WMIClientRep::~WMIClientRep(){ disconnect();}///////////////////////////////////////////////////////////////////////////////void WMIClientRep::handleEnqueue(){}///////////////////////////////////////////////////////////////////////////////void WMIClientRep::connectLocal(){ // // If already connected, bail out! // if (_connected) throw AlreadyConnectedException(); _connected = true;}///////////////////////////////////////////////////////////////////////////////void WMIClientRep::disconnect(){ if (_connected) _connected = false;}///////////////////////////////////////////////////////////////////////////////CIMClass WMIClientRep::getClass( const CIMNamespaceName& nameSpace, const CIMName& className, Boolean localOnly, Boolean includeQualifiers, Boolean includeClassOrigin, const CIMPropertyList& propertyList){ CIMClass cimClass; CIMException cimException; try { //Initializes the WMI Provider Interface WMIClassProvider provider; provider.initialize(TRUE); //Performs the WMI call cimClass = provider.getClass( nameSpace.getString(), String::EMPTY, String::EMPTY, className.getString(), localOnly, includeQualifiers, includeClassOrigin, propertyList); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "getClass() failed!"); throw cimException; } return(cimClass);}///////////////////////////////////////////////////////////////////////////////CIMInstance WMIClientRep::getInstance( const CIMNamespaceName& nameSpace, const CIMObjectPath& instanceName, Boolean localOnly, Boolean includeQualifiers, Boolean includeClassOrigin, const CIMPropertyList& propertyList){ CIMInstance cimInstance; CIMException cimException; try { //Initializes the WMI Provider Interface WMIInstanceProvider provider; provider.initialize(TRUE); //Performs the WMI call cimInstance = provider.getInstance( nameSpace.getString(), String::EMPTY, String::EMPTY, instanceName, localOnly, includeQualifiers, includeClassOrigin, propertyList); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "getInstance() failed!"); throw cimException; } return(cimInstance);}///////////////////////////////////////////////////////////////////////////////void WMIClientRep::deleteClass( const CIMNamespaceName& nameSpace, const CIMName& className){ CIMException cimException; try { //Initializes the WMI Provider Interface WMIClassProvider provider; provider.initialize(TRUE); //Performs the WMI call provider.deleteClass( nameSpace.getString(), String::EMPTY, String::EMPTY, className.getString()); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "deleteClass() failed!"); throw cimException; }}///////////////////////////////////////////////////////////////////////////////void WMIClientRep::deleteInstance( const CIMNamespaceName& nameSpace, const CIMObjectPath& instanceName){ CIMException cimException; try { //Initializes the WMI Provider Interface WMIInstanceProvider provider; provider.initialize(TRUE); //Performs the WMI call provider.deleteInstance( nameSpace.getString(), String::EMPTY, String::EMPTY, instanceName); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "deleteInstance() failed!"); throw cimException; }}///////////////////////////////////////////////////////////////////////////////void WMIClientRep::createClass( const CIMNamespaceName& nameSpace, const CIMClass& newClass){ CIMException cimException; try { //Initializes the WMI Provider Interface WMIClassProvider provider; provider.initialize(TRUE); //Performs the WMI call provider.createClass( nameSpace.getString(), String::EMPTY, String::EMPTY, newClass); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "createClass() failed!"); throw cimException; }}///////////////////////////////////////////////////////////////////////////////CIMObjectPath WMIClientRep::createInstance( const CIMNamespaceName& nameSpace, const CIMInstance& newInstance){ CIMObjectPath instanceName; CIMException cimException; try { //Initializes the WMI Provider Interface WMIInstanceProvider provider; provider.initialize(TRUE); //Performs the WMI call instanceName = provider.createInstance( nameSpace.getString(), String::EMPTY, String::EMPTY, newInstance); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "createInstance() failed!"); throw cimException; } return (instanceName);}///////////////////////////////////////////////////////////////////////////////void WMIClientRep::modifyClass( const CIMNamespaceName& nameSpace, const CIMClass& modifiedClass){ CIMException cimException; try { //Initializes the WMI Provider Interface WMIClassProvider provider; provider.initialize(TRUE); //Performs the WMI call provider.modifyClass( nameSpace.getString(), String::EMPTY, String::EMPTY, modifiedClass); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "modifyClass() failed!"); throw cimException; }}///////////////////////////////////////////////////////////////////////////////void WMIClientRep::modifyInstance( const CIMNamespaceName& nameSpace, const CIMInstance& modifiedInstance, Boolean includeQualifiers, const CIMPropertyList& propertyList){ CIMException cimException; try { //Initializes the WMI Provider Interface WMIInstanceProvider provider; provider.initialize(TRUE); //Performs the WMI call provider.modifyInstance( nameSpace.getString(), String::EMPTY, String::EMPTY, modifiedInstance, includeQualifiers, propertyList); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "modifyInstance() failed!"); throw cimException; }}///////////////////////////////////////////////////////////////////////////////Array<CIMClass> WMIClientRep::enumerateClasses( const CIMNamespaceName& nameSpace, const CIMName& className, Boolean deepInheritance, Boolean localOnly, Boolean includeQualifiers, Boolean includeClassOrigin){ Array<CIMClass> cimClasses; CIMException cimException; try { //Initializes the WMI Provider Interface WMIClassProvider provider; provider.initialize(TRUE); //Performs the WMI call cimClasses = provider.enumerateClasses( nameSpace.getString(), String::EMPTY, String::EMPTY, className.getString(), deepInheritance, localOnly, includeQualifiers, includeClassOrigin); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "enumerateClasses() failed!"); throw cimException; } return(cimClasses);}///////////////////////////////////////////////////////////////////////////////Array<CIMName> WMIClientRep::enumerateClassNames( const CIMNamespaceName& nameSpace, const CIMName& className, Boolean deepInheritance){ Array<CIMName> classNames; CIMException cimException; try { //Initializes the WMI Provider Interface WMIClassProvider provider; provider.initialize(TRUE); //Performs the WMI call classNames = provider.enumerateClassNames( nameSpace.getString(), String::EMPTY, String::EMPTY, className.getString(), deepInheritance); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "enumerateClassNames() failed!"); throw cimException; } return(classNames);}///////////////////////////////////////////////////////////////////////////////Array<CIMInstance> WMIClientRep::enumerateInstances( const CIMNamespaceName& nameSpace, const CIMName& className, Boolean deepInheritance, Boolean localOnly, Boolean includeQualifiers, Boolean includeClassOrigin, const CIMPropertyList& propertyList){ Array<CIMInstance> cimInstances; CIMPropertyList myPropertyList(propertyList); CIMException cimException; try { //Initializes the WMI Provider Interface WMIInstanceProvider provider; provider.initialize(TRUE); //Performs the WMI call cimInstances = provider.enumerateInstances( nameSpace.getString(), String::EMPTY, String::EMPTY, className.getString(), deepInheritance, localOnly, includeQualifiers, includeClassOrigin, myPropertyList); //terminate the provider provider.terminate(); } catch(CIMException&) { throw; } catch(Exception& exception) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, exception.getMessage()); throw cimException; } catch(...) { cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, "enumerateInstances() failed!"); throw cimException; } return(cimInstances);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -