315 lines
6.7 KiB
C
315 lines
6.7 KiB
C
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Copyright (c) 1999-2000 Microsoft Corporation
|
||
|
//
|
||
|
// Module Name:
|
||
|
// ObjectPath.h
|
||
|
//
|
||
|
// Implementation File:
|
||
|
// ObjectPath.cpp
|
||
|
//
|
||
|
// Description:
|
||
|
// Definition of the CObjpath class.
|
||
|
//
|
||
|
// Author:
|
||
|
// Henry Wang (HenryWa) 24-AUG-1999
|
||
|
//
|
||
|
// Notes:
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
// Include Files
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#include "genlex.h" //wbem sdk header
|
||
|
#include "objpath.h" //wbem sdk header
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
// Forward Declarations
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
class CObjPath;
|
||
|
class CProvException;
|
||
|
class CWbemClassObject;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// class CObjPath
|
||
|
//
|
||
|
// Description:
|
||
|
// CObjpath class make it easier to work with Object path string
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
class CObjPath
|
||
|
{
|
||
|
//
|
||
|
// constructor and desctructor
|
||
|
//
|
||
|
public:
|
||
|
|
||
|
CObjPath( void );
|
||
|
virtual ~CObjPath( void );
|
||
|
|
||
|
public:
|
||
|
_bstr_t GetObjectPathString( void );
|
||
|
|
||
|
BOOL AddProperty(
|
||
|
LPCWSTR pwszNameIn,
|
||
|
LPCWSTR pwszValueIn
|
||
|
);
|
||
|
|
||
|
BOOL AddProperty(
|
||
|
LPCWSTR pwszNameIn,
|
||
|
VARIANT * pvValueIn
|
||
|
);
|
||
|
|
||
|
BOOL SetClass(
|
||
|
IN LPCWSTR pwszValue
|
||
|
);
|
||
|
|
||
|
_bstr_t GetStringValueForProperty(
|
||
|
LPCWSTR pwszIn
|
||
|
);
|
||
|
|
||
|
_bstr_t GetClassName( void );
|
||
|
|
||
|
BOOL Init(
|
||
|
LPCWSTR pwszPathIn
|
||
|
);
|
||
|
|
||
|
protected:
|
||
|
ParsedObjectPath * m_parsedObj;
|
||
|
|
||
|
}; //*** class CObjPath
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// class CProvException
|
||
|
//
|
||
|
// Description:
|
||
|
// Base exception class, declares common interface and member data
|
||
|
// for all exception subclass
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
class CProvException
|
||
|
{
|
||
|
public:
|
||
|
CProvException(
|
||
|
HRESULT hrIn
|
||
|
)
|
||
|
: m_hr( hrIn )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
CProvException(
|
||
|
DWORD nWin32ErrorIn
|
||
|
)
|
||
|
: m_hr( 0 )
|
||
|
{
|
||
|
m_hr = HRESULT_FROM_WIN32( nWin32ErrorIn );
|
||
|
}
|
||
|
|
||
|
virtual ~CProvException( void )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
CProvException(
|
||
|
const CProvException & rhsIn
|
||
|
)
|
||
|
: m_hr( 0 )
|
||
|
{
|
||
|
m_bstrError = rhsIn.m_bstrError;
|
||
|
m_hr = rhsIn.m_hr;
|
||
|
}
|
||
|
|
||
|
CProvException & operator=(
|
||
|
const CProvException & rhsIn
|
||
|
)
|
||
|
{
|
||
|
m_bstrError = rhsIn.m_bstrError;
|
||
|
m_hr = rhsIn.m_hr;
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
LPCWSTR PwszErrorMessage( void ) const;
|
||
|
|
||
|
BOOL BIsWmiError( void ) const
|
||
|
{
|
||
|
return HRESULT_FACILITY( m_hr ) == 4;
|
||
|
}
|
||
|
|
||
|
DWORD DwGetError( void ) const throw()
|
||
|
{
|
||
|
return HRESULT_CODE( m_hr );
|
||
|
}
|
||
|
|
||
|
HRESULT hrGetError( void ) const throw()
|
||
|
{
|
||
|
return m_hr;
|
||
|
}
|
||
|
|
||
|
protected:
|
||
|
mutable _bstr_t m_bstrError;
|
||
|
HRESULT m_hr;
|
||
|
|
||
|
}; //*** class CProvException
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// class CWbemClassObject
|
||
|
//
|
||
|
// Description:
|
||
|
// Wrap for IWbemClassObject
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
class CWbemClassObject
|
||
|
{
|
||
|
protected:
|
||
|
IWbemClassObject * m_pClassObject;
|
||
|
VARIANT m_v;
|
||
|
|
||
|
public:
|
||
|
CWbemClassObject( void );
|
||
|
CWbemClassObject( IWbemClassObject * pInstIn );
|
||
|
virtual ~CWbemClassObject( void );
|
||
|
|
||
|
IWbemClassObject ** operator&( void )
|
||
|
{
|
||
|
return &m_pClassObject;
|
||
|
}
|
||
|
|
||
|
CWbemClassObject & operator=( IWbemClassObject * pInstIn )
|
||
|
{
|
||
|
if( pInstIn != NULL )
|
||
|
{
|
||
|
pInstIn->AddRef();
|
||
|
if ( m_pClassObject != NULL )
|
||
|
{
|
||
|
m_pClassObject->Release();
|
||
|
}
|
||
|
m_pClassObject = pInstIn;
|
||
|
}
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
CWbemClassObject & operator=( CWbemClassObject & rInstIn )
|
||
|
{
|
||
|
|
||
|
if ( m_pClassObject != NULL )
|
||
|
{
|
||
|
m_pClassObject->Release();
|
||
|
}
|
||
|
|
||
|
m_pClassObject = rInstIn.m_pClassObject;
|
||
|
if ( m_pClassObject != NULL )
|
||
|
{
|
||
|
m_pClassObject->AddRef();
|
||
|
}
|
||
|
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
SCODE SetProperty(
|
||
|
LPCSTR pszValueIn,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
|
||
|
SCODE SetProperty(
|
||
|
DWORD dwValueIn,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
|
||
|
SCODE SetProperty(
|
||
|
LPCWSTR pwszValueIn,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
SCODE SetProperty(
|
||
|
IWbemClassObject * pWbemClassObjectIn,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
SCODE SetProperty(
|
||
|
DWORD dwSizeIn,
|
||
|
PBYTE pByteIn,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
SCODE SetProperty(
|
||
|
DWORD dwSizeIn,
|
||
|
LPCWSTR pwszMultiSzIn,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
|
||
|
SCODE SetProperty(
|
||
|
DWORD dwSizeIn,
|
||
|
BSTR * pbstrIn,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
|
||
|
SCODE GetProperty(
|
||
|
DWORD * pdwValueOut,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
SCODE GetProperty(
|
||
|
DWORD * pdwSizeOut,
|
||
|
PBYTE * ppByteOut,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
SCODE GetProperty(
|
||
|
DWORD * pdwSizeOut,
|
||
|
_bstr_t ** ppbstrOut,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
SCODE GetPropertyMultiSz(
|
||
|
DWORD * pdwSizeOut,
|
||
|
LPWSTR * ppwszMultiSzOut,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
SCODE GetProperty(
|
||
|
_bstr_t & rBstrOut,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
|
||
|
SCODE GetProperty(
|
||
|
BOOL * pfValueOut,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
|
||
|
SCODE GetProperty(
|
||
|
VARIANT * pVariantOut,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
SCODE GetProperty(
|
||
|
CWbemClassObject & rWcoInout,
|
||
|
LPCWSTR pwszPropNameIn
|
||
|
);
|
||
|
|
||
|
SCODE GetMethod(
|
||
|
BSTR bstrMethodNameIn,
|
||
|
LONG lFlagIn,
|
||
|
IWbemClassObject ** ppINOut,
|
||
|
IWbemClassObject ** ppOUTOut
|
||
|
);
|
||
|
SCODE SpawnInstance(
|
||
|
LONG lFlagIn,
|
||
|
IWbemClassObject ** ppNewOut
|
||
|
);
|
||
|
SCODE SpawnDerivedClass(
|
||
|
LONG lFlagIn,
|
||
|
IWbemClassObject ** ppNewOut
|
||
|
);
|
||
|
|
||
|
IWbemClassObject * data( void )
|
||
|
{
|
||
|
return m_pClassObject;
|
||
|
}
|
||
|
|
||
|
}; //*** class CWbemClassObject
|