windows-nt/Source/XPSP1/NT/base/cluster/wmiprovider/objectpath.h
2020-09-26 16:20:57 +08:00

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