//*************************************************************************** // // Copyright (c) 1998-1999 Microsoft Corporation // // qualifier.h // // alanbos 27-Mar-00 Created. // // CSWbemQualifier and CSWbemQualifierSet definitions. // //*************************************************************************** #ifndef _QUALIFIER_H_ #define _QUALIFIER_H_ //*************************************************************************** // // CLASS NAME: // // CSWbemQualifier // // DESCRIPTION: // // Implements the ISWbemQualifier interface. // //*************************************************************************** class CSWbemQualifier : public ISWbemQualifier, public ISupportErrorInfo, public IProvideClassInfo { private: class CQualifierDispatchHelp : public CDispatchHelp { public: HRESULT HandleError ( DISPID dispidMember, unsigned short wFlags, DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult, UINT FAR* puArgErr, HRESULT hRes ); bool HandleNulls ( DISPID dispidMember, unsigned short wFlags ) { return false; } }; IWbemQualifierSet *m_pIWbemQualifierSet; CQualifierDispatchHelp m_Dispatch; BSTR m_name; CWbemSite *m_pSite; protected: long m_cRef; //Object reference count public: CSWbemQualifier (IWbemQualifierSet *pQualSet, BSTR name, CWbemSite *pSite = NULL); ~CSWbemQualifier (void); //Non-delegating object IUnknown STDMETHODIMP QueryInterface(REFIID, LPVOID*); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // IDispatch STDMETHODIMP GetTypeInfoCount(UINT* pctinfo) {return m_Dispatch.GetTypeInfoCount(pctinfo);} STDMETHODIMP GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo** pptinfo) {return m_Dispatch.GetTypeInfo(itinfo, lcid, pptinfo);} STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR** rgszNames, UINT cNames, LCID lcid, DISPID* rgdispid) {return m_Dispatch.GetIDsOfNames(riid, rgszNames, cNames, lcid, rgdispid);} STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo, UINT* puArgErr) {return m_Dispatch.Invoke(dispidMember, riid, lcid, wFlags, pdispparams, pvarResult, pexcepinfo, puArgErr);} // ISWbemQualifier methods HRESULT STDMETHODCALLTYPE get_Value ( /*[out]*/ VARIANT *value ); HRESULT STDMETHODCALLTYPE put_Value ( /*[in]*/ VARIANT *value ); HRESULT STDMETHODCALLTYPE get_Name ( /*[out]*/ BSTR *name ); HRESULT STDMETHODCALLTYPE get_IsLocal ( /*[out]*/ VARIANT_BOOL *local ); HRESULT STDMETHODCALLTYPE get_PropagatesToSubclass ( /*[out]*/ VARIANT_BOOL *value ); HRESULT STDMETHODCALLTYPE put_PropagatesToSubclass ( /*[in]*/ VARIANT_BOOL value ); HRESULT STDMETHODCALLTYPE get_PropagatesToInstance ( /*[out]*/ VARIANT_BOOL *value ); HRESULT STDMETHODCALLTYPE put_PropagatesToInstance ( /*[in]*/ VARIANT_BOOL value ); HRESULT STDMETHODCALLTYPE get_IsOverridable ( /*[out]*/ VARIANT_BOOL *value ); HRESULT STDMETHODCALLTYPE put_IsOverridable ( /*[in]*/ VARIANT_BOOL value ); HRESULT STDMETHODCALLTYPE get_IsAmended ( /*[out]*/ VARIANT_BOOL *value ); // ISupportErrorInfo methods HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo ( /* [in] */ REFIID riid ); // IProvideClassInfo methods HRESULT STDMETHODCALLTYPE GetClassInfo ( /* [in,out] */ ITypeInfo **ppTI ) { return m_Dispatch.GetClassInfo (ppTI); }; }; //*************************************************************************** // // CLASS NAME: // // CSWbemQualifierSet // // DESCRIPTION: // // Implements the ISWbemQualifierSet interface. // //*************************************************************************** class CSWbemQualifierSet : public ISWbemQualifierSet, public ISupportErrorInfo, public IProvideClassInfo { private: class CQualifierSetDispatchHelp : public CDispatchHelp { public: HRESULT HandleError ( DISPID dispidMember, unsigned short wFlags, DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult, UINT FAR* puArgErr, HRESULT hRes ); }; IWbemQualifierSet *m_pIWbemQualifierSet; CQualifierSetDispatchHelp m_Dispatch; CWbemSite *m_pSite; protected: long m_cRef; //Object reference count public: CSWbemQualifierSet (IWbemQualifierSet *pQualSet, ISWbemInternalObject *pObject = NULL); ~CSWbemQualifierSet (void); //Non-delegating object IUnknown STDMETHODIMP QueryInterface(REFIID, LPVOID*); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // IDispatch STDMETHODIMP GetTypeInfoCount(UINT* pctinfo) {return m_Dispatch.GetTypeInfoCount(pctinfo);} STDMETHODIMP GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo** pptinfo) {return m_Dispatch.GetTypeInfo(itinfo, lcid, pptinfo);} STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR** rgszNames, UINT cNames, LCID lcid, DISPID* rgdispid) {return m_Dispatch.GetIDsOfNames(riid, rgszNames, cNames, lcid, rgdispid);} STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo, UINT* puArgErr) {return m_Dispatch.Invoke(dispidMember, riid, lcid, wFlags, pdispparams, pvarResult, pexcepinfo, puArgErr);} // Collection methods HRESULT STDMETHODCALLTYPE get__NewEnum ( /*[out]*/ IUnknown **ppUnk ); HRESULT STDMETHODCALLTYPE get_Count ( /*[out]*/ long *plCount ); HRESULT STDMETHODCALLTYPE Add ( /*[in]*/ BSTR name, /*[in]*/ VARIANT *pVal, /*[in]*/ VARIANT_BOOL propagatesToSubclasses, /*[in]*/ VARIANT_BOOL propagatesToInstances, /*[in]*/ VARIANT_BOOL overridable, /*[in]*/ long lFlags, /*[out]*/ ISWbemQualifier **ppQualifier ); HRESULT STDMETHODCALLTYPE Item ( /*[in]*/ BSTR Name, /*[in]*/ long lFlags, /*[out]*/ ISWbemQualifier **ppQualifier ); HRESULT STDMETHODCALLTYPE Remove ( /*[in]*/ BSTR Name, /*[in]*/ long lFlags ); // ISWbemQualifierSet methods HRESULT STDMETHODCALLTYPE BeginEnumeration ( ); HRESULT STDMETHODCALLTYPE Next ( /*[in]*/ long lFlags, /*[out]*/ ISWbemQualifier **ppQualifier ); // ISupportErrorInfo methods HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo ( /* [in] */ REFIID riid ); // IProvideClassInfo methods HRESULT STDMETHODCALLTYPE GetClassInfo ( /* [in,out] */ ITypeInfo **ppTI ) { return m_Dispatch.GetClassInfo (ppTI); }; }; #endif