|
|
#ifndef _MWMIOBJECT_H
#define _MWMIOBJECT_H
//
// Copyright (c) Microsoft. All Rights Reserved
//
// THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Microsoft.
// The copyright notice above does not evidence any
// actual or intended publication of such source code.
//
// OneLiner : MWmiObject interface.
// DevUnit : wlbstest
// Author : Murtaza Hakim
//
// Description:
// -----------
// include files
//
#include "MWMIInstance.h"
#include "MWMIDefs.h"
#include <wbemidl.h>
#include <comdef.h>
#include <vector>
using namespace std;
class MWmiObject { public:
enum MWmiObject_Error { MWmiObject_SUCCESS = 0,
CONNECT_FAILED = 1, COM_FAILURE = 2,
NO_SUCH_OBJECT = 3, NO_SUCH_PARAMETER = 4,
NO_SUCH_PATH = 5, };
//
// Description:
// -----------
// constructor.
//
// Parameters:
// ----------
// ipAddr IN : ip address of machine to contact.
// nameSpace IN : namespace to connect to.
// loginName IN : name to log as.
// passWord IN : password to use.
//
// Returns:
// -------
// none.
MWmiObject( const _bstr_t& ipAddr, const _bstr_t& nameSpace, const _bstr_t& loginName, const _bstr_t& passWord );
//
// Description:
// -----------
// constructor for connecting to local machine.
//
// Parameters:
// ----------
// nameSpace IN : namespace to connect to.
//
// Returns:
// -------
// none.
MWmiObject( const _bstr_t& nameSpace );
//
// Description:
// -----------
// copy constructor.
//
// Parameters:
// ----------
// mwmiobj IN : object to copy.
//
// Returns:
// -------
// none.
MWmiObject( const MWmiObject& mwmiobj );
//
// Description:
// -----------
// assignment operator.
//
// Parameters:
// ----------
// rhs IN : obj to assign.
//
// Returns:
// -------
// self.
MWmiObject& MWmiObject::operator=(const MWmiObject& rhs );
//
// Description:
// -----------
// destructor.
//
// Parameters:
// ----------
// none
//
// Returns:
// -------
// none
~MWmiObject();
//
// Description:
// -----------
// gets instances of a particular class.
//
// Parameters:
// ----------
// objectToGetInstancesOf IN : class whose instances to be retrieved.
// instanceStore OUT : vector containing instances.
//
// Returns:
// -------
// SUCCESS else errorcode
MWmiObject_Error getInstances( const _bstr_t& objectToGetInstancesOf, vector< MWmiInstance >* instanceStore );
//
// Description:
// -----------
// gets instances of a particular class having specific __RELPATH
//
// Parameters:
// ----------
// objectToGetInstancesOf IN : class whose instances to be retrieved.
// relPath IN : instances __RELPATH
// instanceStore OUT : vector containing instances.
//
// Returns:
// -------
// SUCCESS else errorcode
MWmiObject_Error getSpecificInstance( const _bstr_t& objectToGetInstancesOf, const _bstr_t& relPath, vector< MWmiInstance >* instanceStore );
//
// Description:
// -----------
// gets instances of a particular class having specific __RELPATH
//
// Parameters:
// ----------
// objectToGetInstancesOf IN : class whose instances to be retrieved.
// query IN : the query to be run.
// instanceStore OUT : vector containing instances.
//
// Returns:
// -------
// SUCCESS else errorcode
MWmiObject_Error getQueriedInstances( const _bstr_t& objectToGetInstancesOf, const _bstr_t& query, vector< MWmiInstance >* instanceStore );
//
// Description:
// -----------
// creates instance of a particular class.
//
// Parameters:
// ----------
// objectToCreateInstancesOf IN : class whose instances to be created
// instanceParameters IN : parameters for the instance to be created.
//
// Returns:
// -------
// SUCCESS else error code.
MWmiObject_Error createInstance( const _bstr_t& objectToCreateInstancesOf, vector<MWmiParameter *>& instanceParameters ); // MWmiInstance* instanceCreated );
//
// Description:
// -----------
// deletes instance.
//
// Parameters:
// ----------
// instanceToDelete IN : instance to delete.
//
// Returns:
// -------
// SUCCESS else error code.
MWmiObject_Error deleteInstance( MWmiInstance& instanceToDelete );
//
// Description:
// -----------
// gets status of object.
//
// Parameters:
// ----------
// none.
//
// Returns:
// -------
// SUCCESS else error code.
MWmiObject_Error getStatus(); private:
enum { timesToRetry = 20, };
IWbemLocatorPtr pwl; IWbemServicesPtr pws;
_bstr_t _nameSpace; MWmiObject_Error status;
MWmiObject_Error getPath( const _bstr_t& objectToRunMethodOn, vector<_bstr_t> *pathStore );
MWmiObject_Error getSpecificPath( const _bstr_t& objectToRunMethodOn, const _bstr_t& relPath, vector<_bstr_t> *pathStore );
MWmiObject_Error getQueriedPath( const _bstr_t& objectToRunMethodOn, const _bstr_t& query, vector<_bstr_t>* pathStore );
HRESULT MWmiObject::betterConnectServer( const BSTR strNetworkResource, const BSTR strUser, const BSTR strPassword, const BSTR strLocale, LONG lSecurityFlags, const BSTR strAuthority, IWbemContext *pCtx, IWbemServices **ppNamespace );
};
//
// Ensure type safety
typedef class MWmiObject MWmiObject;
#endif
|