// private interfaces for use by the Decoupled Event Provider import "WbemDCpl.idl"; [object, uuid(4875DE77-E623-11d2-9CB3-00105A1F4801)] interface IWbemDecoupledEventSinkLocator : IUnknown { // "Sink available" HRESULT Connect([in] IUnknown* pDecoupledProvider); // "Sink's no good any more" HRESULT Disconnect(); }; [object, uuid(BF9AD5BE-F0FB-11d2-9CC2-00105A1F4801)] interface IWbemDecoupledEventProvider : IUnknown { HRESULT Connect( [in] long lFlags, [in] IUnknown* pPseudoSink, [out] IWbemObjectSink** ppSink, [out] IWbemServices** ppNamespace); // "Here's a provider services, gimmee info HRESULT SetProviderServices([in] IUnknown* pProviderServices, [in] long lFlags, [out] DWORD* dwID); // "provider services no good any more" HRESULT Disconnect([in] DWORD dwID); }; [object, uuid(00B0204A-EC79-11d2-9CB7-00105A1F4801)] interface IWbemDecoupledEventProviderLocator : IUnknown { // Retrieve decoupled provider from ROT entry. HRESULT GetProvider([out] IWbemDecoupledEventProvider** pDecoupledProvider); }; [uuid(E002E4EF-E6EA-11d2-9CB3-00105A1F4801)] library PassiveProvider { [uuid(E002E4EE-E6EA-11d2-9CB3-00105A1F4801)] coclass PseudoProvider { interface IWbemDecoupledEventProvider; interface IWbemDecoupledEventProviderLocator; }; coclass PseudoSink; };