174 lines
3.6 KiB
C++
174 lines
3.6 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 1999-2000 Microsoft Corporation
|
|
//
|
|
// Module Name:
|
|
// CProvBase.cpp
|
|
//
|
|
// Description:
|
|
// Implementation of CProvBase class
|
|
//
|
|
// Author:
|
|
// Henry Wang (HenryWa) 24-AUG-1999
|
|
//
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "Pch.h"
|
|
#include "ProvBase.h"
|
|
|
|
//****************************************************************************
|
|
//
|
|
// CProvBase
|
|
//
|
|
//****************************************************************************
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//++
|
|
//
|
|
// CProvBase::CProvBase(
|
|
// LPCWSTR pwszNameIn,
|
|
// CWbemServices * pNamespaceIn
|
|
// )
|
|
//
|
|
// Description:
|
|
// Constructor.
|
|
//
|
|
// Arguments:
|
|
// pwszNameIn -- Class name
|
|
// pNamespaceIn -- Namespace
|
|
//
|
|
// Return Values:
|
|
// None.
|
|
//
|
|
//--
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
CProvBase::CProvBase(
|
|
LPCWSTR pwszNameIn,
|
|
CWbemServices * pNamespaceIn
|
|
)
|
|
: m_pNamespace( NULL )
|
|
, m_pClass( NULL )
|
|
{
|
|
SCODE sc;
|
|
|
|
m_pNamespace = pNamespaceIn;
|
|
m_bstrClassName = pwszNameIn;
|
|
|
|
sc = m_pNamespace->GetObject(
|
|
m_bstrClassName,
|
|
0,
|
|
0,
|
|
&m_pClass,
|
|
NULL
|
|
);
|
|
|
|
// failed to construct object,
|
|
if ( FAILED( sc ) )
|
|
{
|
|
throw CProvException( sc );
|
|
}
|
|
|
|
} //*** CProvBase::CProvBase()
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//++
|
|
//
|
|
// CProvBase::~CProvBase( void )
|
|
//
|
|
// Description:
|
|
// Destructor.
|
|
//
|
|
// Arguments:
|
|
// None.
|
|
//
|
|
// Return Values:
|
|
// None.
|
|
//
|
|
//--
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
CProvBase::~CProvBase( void )
|
|
{
|
|
if ( m_pClass != NULL )
|
|
{
|
|
m_pClass->Release();
|
|
}
|
|
|
|
} //*** CProvBase::~CProvBase()
|
|
|
|
//****************************************************************************
|
|
//
|
|
// CProvBaseAssociation
|
|
//
|
|
//****************************************************************************
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//++
|
|
//
|
|
// void
|
|
// CProvBaseAssociation::GetTypeName(
|
|
// _bstr_t & rbstrClassNameOut,
|
|
// _bstr_t bstrPropertyIn
|
|
// )
|
|
//
|
|
// Description:
|
|
// Get the type of a property.
|
|
//
|
|
// Arguments:
|
|
// rbstrClassNameOut -- Receives type name string.
|
|
// bstrPropertyIn -- Property name.
|
|
//
|
|
// Return Values:
|
|
// None.
|
|
//
|
|
//--
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
void
|
|
CProvBaseAssociation::GetTypeName(
|
|
_bstr_t & rbstrClassNameOut,
|
|
_bstr_t bstrPropertyIn
|
|
)
|
|
{
|
|
CError er;
|
|
IWbemQualifierSet * pQualifier;
|
|
_variant_t var;
|
|
_bstr_t bstrTemp;
|
|
LPCWSTR pwsz, pwsz1;
|
|
|
|
er = m_pClass->GetPropertyQualifierSet(
|
|
bstrPropertyIn,
|
|
&pQualifier
|
|
);
|
|
|
|
if ( er != WBEM_S_NO_ERROR ) {
|
|
return;
|
|
}
|
|
|
|
er = pQualifier->Get(
|
|
PVD_WBEM_QUA_CIMTYPE,
|
|
0,
|
|
&var,
|
|
NULL
|
|
);
|
|
|
|
if ( er != WBEM_S_NO_ERROR ) {
|
|
goto ERROR_EXIT;
|
|
}
|
|
|
|
|
|
bstrTemp = var;
|
|
pwsz1 = bstrTemp;
|
|
if (pwsz1==NULL)
|
|
goto ERROR_EXIT;
|
|
pwsz = wcschr( bstrTemp, L':' );
|
|
if ( pwsz != NULL)
|
|
{
|
|
pwsz++;
|
|
rbstrClassNameOut = pwsz;
|
|
}
|
|
ERROR_EXIT:
|
|
pQualifier->Release();
|
|
return;
|
|
|
|
} //*** CProvBaseAssociation::GetTypeName()
|