// MofConsumer.h : Declaration of the CMofConsumer #ifndef __MOFCONSUMER_H_ #define __MOFCONSUMER_H_ #include "resource.h" // main symbols ///////////////////////////////////////////////////////////////////////////// // CEventSink class CEventSink : public IWbemUnboundObjectSink { public: CEventSink(); ~CEventSink(); HRESULT Init(IWbemClassObject *pLogicalConsumer); public: STDMETHODIMP QueryInterface(REFIID refid, PVOID *ppThis) { if (refid == IID_IUnknown) *ppThis = (IUnknown*) this; else if (refid == IID_IWbemUnboundObjectSink) *ppThis = (IWbemUnboundObjectSink*) this; else return E_NOINTERFACE; AddRef(); return S_OK; } STDMETHODIMP_(ULONG) AddRef(void) { return InterlockedIncrement(&m_lRef); } STDMETHODIMP_(ULONG) Release(void) { LONG lRet = InterlockedDecrement(&m_lRef); if (lRet == 0) delete this; return lRet; } protected: LONG m_lRef; FILE *m_pFile; }; class CMofEventSink : public CEventSink { public: HRESULT Init(IWbemClassObject *pLogicalConsumer); // IWbemUnboundObjectSink public: HRESULT WINAPI IndicateToConsumer( IWbemClassObject *pLogicalConsumer, long nEvents, IWbemClassObject **ppEvents); }; #define MAX_OBJ_SIZE 32000 class CBlobEventSink : public CEventSink { public: HRESULT Init(IWbemClassObject *pLogicalConsumer); // IWbemUnboundObjectSink public: HRESULT WINAPI IndicateToConsumer( IWbemClassObject *pLogicalConsumer, long nEvents, IWbemClassObject **ppEvents); protected: BYTE m_pBuffer[MAX_OBJ_SIZE]; }; ///////////////////////////////////////////////////////////////////////////// // CMofConsumer class ATL_NO_VTABLE CMofConsumer : public CComObjectRootEx, public CComCoClass, public IWbemEventConsumerProvider { public: CMofConsumer() {} DECLARE_REGISTRY_RESOURCEID(IDR_MOFCONSUMER) DECLARE_NOT_AGGREGATABLE(CMofConsumer) DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CMofConsumer) COM_INTERFACE_ENTRY(IWbemEventConsumerProvider) END_COM_MAP() // IWbemEventConsumerProvider public: HRESULT WINAPI FindConsumer( IWbemClassObject* pLogicalConsumer, IWbemUnboundObjectSink** ppConsumer); // Implementation protected: }; #endif //__MOFCONSUMER_H_