import "objidl.idl"; import "oleidl.idl"; import "oaidl.idl"; import "wbemcli.idl"; // flags passed to IWbemDecoupledEventSink::Connect typedef [v1_enum] enum tag_WBEM_PSEUDO_PROVIDER_CONNECT_FLAGS { WBEM_FLAG_NOTIFY_START_STOP = 1, WBEM_FLAG_NOTIFY_QUERY_CHANGE = 2, WBEM_FLAG_CHECK_SECURITY = 4 } WBEM_PSEUDO_PROVIDER_CONNECT_FLAGS; // flags passed to IWbemEventProvider::ProvideEvents typedef [v1_enum] enum tag_WBEM_PROVIDE_EVENTS_FLAGS { WBEM_FLAG_START_PROVIDING = 0, WBEM_FLAG_STOP_PROVIDING = 1 } WBEM_PROVIDE_EVENTS_FLAGS; [object, local, uuid(CD94EBF2-E622-11d2-9CB3-00105A1F4801)] interface IWbemDecoupledEventSink : IUnknown { // "real provider ready to play" HRESULT Connect( [in, string] LPCWSTR wszNamespace, [in, string] LPCWSTR wszProviderName, [in] long lFlags, [out] IWbemObjectSink** ppSink, [out] IWbemServices** ppNamespace); // real provider wants notifications HRESULT SetProviderServices([in] IUnknown* pProviderServices, [in] long lFlags); // real provider doesn't want to play any more HRESULT Disconnect(); }; [uuid(E002EEEF-E6EA-11d2-9CB3-00105A1F4801)] library PassiveSink { [uuid(E002E4F0-E6EA-11d2-9CB3-00105A1F4801)] coclass PseudoSink { interface IWbemDecoupledEventSink; }; };