2025-04-27 07:49:33 -04:00

183 lines
5.9 KiB
C++

/***************************************************************************/
//
// Copyright (c) 2000-2001 Microsoft Corporation
//
// WbemClassObject.h
//
// ramrao Jan 4th 2001 - Created
//
//
// Declaration of CWbemClassObject class and some related classes
// This class implements IWbemClassObject interface
//
//***************************************************************************/
#include "wbemqualset.h"
//========================================================================
// class to store a property
//========================================================================
class CProperty :public CPropRoot
{
private:
WCHAR * m_pszOriginClass;
IXMLDOMNode * m_pNode;
CWbemQualifierSet * m_pQualSet; // PropertyQualifier
public:
CProperty();
virtual ~CProperty();
HRESULT SetPropOrigin(WCHAR * pstrOrigin);
WCHAR * GetPropOrigin() {return m_pszOriginClass;}
CWbemQualifierSet * GetQualifierSet() { return m_pQualSet;}
};
//========================================================================
// Class to implement IWbemClassObject interface
//========================================================================
class CWbemClassObject:public IWbemClassObject
{
private:
CEnumObject m_PropEnum;
LONG m_cRef;
CWbemQualifierSet * m_pQualSet; // class/instance qualifierset
BOOL m_bClass;
IXMLDOMDocument2 * m_pIDomDoc;
BOOL m_bInitObject;
public:
CWbemClassObject();
virtual ~CWbemClassObject();
// IUnknown Methods
STDMETHODIMP QueryInterface(REFIID, LPVOID*);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
virtual HRESULT STDMETHODCALLTYPE GetQualifierSet(
/* [out] */ IWbemQualifierSet** ppQualSet);
virtual HRESULT STDMETHODCALLTYPE Get(
/* [in, string] */ LPCWSTR wszName,
/* [in] */ long lFlags,
/* [out, OPTIONAL] */ VARIANT* pVal,
/* [out, OPTIONAL] */ CIMTYPE* pType,
/* [out, OPTIONAL] */ long* plFlavor);
virtual HRESULT STDMETHODCALLTYPE Put(
/* [in, string] */ LPCWSTR wszName,
/* [in] */ long lFlags,
/* [in] */ VARIANT* pVal,
/* [in] */ CIMTYPE Type);
virtual HRESULT STDMETHODCALLTYPE Delete(/* [in, string] */ LPCWSTR wszName);
virtual HRESULT STDMETHODCALLTYPE GetNames(
/* [in, string] */ LPCWSTR wszQualifierName,
/* [in] */ long lFlags,
/* [in] */ VARIANT* pQualifierVal,
/* [out] */ SAFEARRAY * pNames);
virtual HRESULT STDMETHODCALLTYPE BeginEnumeration(/* [in] */ long lEnumFlags);
virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ long lFlags,
/* [out, OPTIONAL] */ BSTR* strName,
/* [out, OPTIONAL] */ VARIANT* pVal,
/* [out, OPTIONAL] */ CIMTYPE* pType,
/* [out, OPTIONAL] */ long* plFlavor
);
virtual HRESULT STDMETHODCALLTYPE EndEnumeration();
virtual HRESULT STDMETHODCALLTYPE GetPropertyQualifierSet(
/* [in, string] */ LPCWSTR wszProperty,
/* [out] */ IWbemQualifierSet** ppQualSet);
virtual HRESULT STDMETHODCALLTYPE Clone(
/* [out] */ IWbemClassObject** ppCopy
);
virtual HRESULT STDMETHODCALLTYPE GetObjectText(
/* [in] */ long lFlags,
/* [out] */ BSTR* pstrObjectText
);
virtual HRESULT STDMETHODCALLTYPE SpawnDerivedClass(
/* [in] */ long lFlags,
/* [out] */ IWbemClassObject** ppNewClass);
virtual HRESULT STDMETHODCALLTYPE SpawnInstance(
/* [in] */ long lFlags,
/* [out] */ IWbemClassObject** ppNewInstance);
virtual HRESULT STDMETHODCALLTYPE CompareTo(
/* [in] */ long lFlags,
/* [in] */ IWbemClassObject* pCompareTo
);
virtual HRESULT STDMETHODCALLTYPE GetPropertyOrigin(
/* [in, string] */ LPCWSTR wszName,
/* [out] */ BSTR* pstrClassName);
virtual HRESULT STDMETHODCALLTYPE InheritsFrom(
/* [in] */ LPCWSTR strAncestor);
// Method manipulation.
// ====================
virtual HRESULT STDMETHODCALLTYPE GetMethod(
/* [in, string] */ LPCWSTR wszName,
/* [in] */ long lFlags,
/* [out] */ IWbemClassObject** ppInSignature,
/* [out] */ IWbemClassObject** ppOutSignature);
virtual HRESULT STDMETHODCALLTYPE PutMethod(
/* [in, string] */ LPCWSTR wszName,
/* [in] */ long lFlags,
/* [in] */ IWbemClassObject* pInSignature,
/* [in] */ IWbemClassObject* pOutSignature);
virtual HRESULT STDMETHODCALLTYPE DeleteMethod(
/* [in, string] */ LPCWSTR wszName);
virtual HRESULT STDMETHODCALLTYPE BeginMethodEnumeration(/* [in] */ long lEnumFlags);
virtual HRESULT STDMETHODCALLTYPE NextMethod(
/* [in] */ long lFlags,
/* [out, OPTIONAL] */ BSTR* pstrName,
/* [out, OPTIONAL] */ IWbemClassObject** ppInSignature,
/* [out, OPTIONAL] */ IWbemClassObject** ppOutSignature);
virtual HRESULT STDMETHODCALLTYPE EndMethodEnumeration();
virtual HRESULT STDMETHODCALLTYPE GetMethodQualifierSet(
/* [in, string] */ LPCWSTR wszMethod,
/* [out] */ IWbemQualifierSet** ppQualSet);
virtual HRESULT STDMETHODCALLTYPE GetMethodOrigin(
/* [in, string] */ LPCWSTR wszMethodName,
/* [out] */ BSTR* pstrClassName);
HRESULT FInit(VARIANT *pVarXml);
private:
HRESULT InitializeQualifiers();
HRESULT InitializePropQualifiers(WCHAR * pstrProp);
HRESULT InitializeMethodQualifiers(WCHAR * pstrMethod);
HRESULT InitializeProperty(WCHAR * pstrProp);
HRESULT InitializeAllProperties();
HRESULT InitializeMethod(WCHAR * pstrMethod);
HRESULT InitializeAllMethods();
HRESULT GetProperty(CProperty * pProperty,VARIANT * pVal, CIMTYPE * pType,LONG * plFlavor);
HRESULT InitObject();
};