6 Appendix A: Full IDL

 For ease of implementation, the full IDL is provided below, where "ms-oaut.idl" is the IDL found in [MS-OAUT] Appendix A.

  
 import "ms-oaut.idl";
  
 interface IEventObjectCollection;
  
 [
    object,
    uuid(4E14FB9F-2E22-11D1-9964-00C04FBBB345),
    dual,
    helpstring("IEventSystem Interface"),
    pointer_default(unique)
 ]
 interface IEventSystem : IDispatch
 {
    [id(1), helpstring("method Query")]
    HRESULT Query([in] BSTR progID,
           [in] BSTR queryCriteria,
           [out] int* errorIndex,
           [out,retval] IUnknown** ppInterface);
  
    [id(2), helpstring("method Store")]
    HRESULT Store([in] BSTR ProgID,
           [in] IUnknown* pInterface); 
  
    [id(3), helpstring("method Remove")]
    HRESULT Remove([in] BSTR progID,
           [in] BSTR queryCriteria,
           [out] int* errorIndex);
  
    [id(4), propget, helpstring("method get_EventObjectChangeEventClassID")]
    HRESULT EventObjectChangeEventClassID([out,retval] BSTR* pbstrEventClassID);
  
    [id(5), helpstring("method QueryS")]
    HRESULT QueryS([in] BSTR progID,
           [in] BSTR queryCriteria,
           [out,retval] IUnknown** ppInterface);
  
    [id(6), helpstring("method RemoveS")]
    HRESULT RemoveS([in] BSTR progID,
           [in] BSTR queryCriteria);
 };
  
  
  
 [
    object,
    uuid(fb2b72a0-7a68-11d1-88f9-0080c7d771bf),
    dual,
    helpstring("IEventClass Interface"),
    pointer_default(unique)
 ]
 interface IEventClass : IDispatch
 {
    [propget, id(1), helpstring("property EventClassID")]
    HRESULT EventClassID([out,retval] BSTR* pbstrEventClassID);
    [propput, id(1), helpstring("property EventClassID")]
    HRESULT EventClassID([in] BSTR bstrEventClassID);
  
    [propget, id(2), helpstring("property EventClassName")]
    HRESULT EventClassName([out,retval] BSTR* pbstrEventClassName);
    [propput, id(2), helpstring("property EventClassName")]
    HRESULT EventClassName([in] BSTR bstrEventClassName);
  
    [propget, id(3), helpstring("property OwnerSID")]
    HRESULT OwnerSID([out,retval] BSTR* pbstrOwnerSID);
    [propput, id(3), helpstring("property OwnerSID")]
    HRESULT OwnerSID([in] BSTR bstrOwnerSID);
  
    [propget, id(4), helpstring("property FiringInterfaceID")]
    HRESULT FiringInterfaceID([out,retval] BSTR* pbstrFiringInterfaceID);
    [propput, id(4), helpstring("property FiringInterfaceID")]
    HRESULT FiringInterfaceID([in] BSTR bstrFiringInterfaceID);
  
    [propget, id(5), helpstring("property Description")]
    HRESULT Description([out,retval] BSTR* pbstrDescription);
    [propput, id(5), helpstring("property Description")]
    HRESULT Description([in] BSTR bstrDescription);
  
    // Local only
    HRESULT Opnum17NotUsedOnWire(void);
  
    // Local only
    HRESULT Opnum18NotUsedOnWire(void);
  
  
    [propget, id(7), helpstring("property TypeLib")]
    HRESULT TypeLib([out,retval] BSTR* pbstrTypeLib);
    [propput, id(7), helpstring("property TypeLib")]
    HRESULT TypeLib([in] BSTR bstrTypeLib);
 };
  
  
 [
    object,
    uuid(fb2b72a1-7a68-11d1-88f9-0080c7d771bf),
    dual,
    helpstring("IEventClass2 Interface"),
    pointer_default(unique)
 ]
 interface IEventClass2 : IEventClass
 {
    [id(8), propget, helpstring("property PublisherID")]
    HRESULT PublisherID([out,retval] BSTR* pbstrPublisherID);
    [id(8), propput, helpstring("property PublisherID")]
    HRESULT PublisherID([in] BSTR bstrPublisherID);
  
    [id(9), propget, helpstring("property MultiInterfacePublisherFilterCLSID")]
    HRESULT MultiInterfacePublisherFilterCLSID([out,retval] BSTR* pbstrPubFilCLSID);
    [id(9), propput, helpstring("property MultiInterfacePublisherFilterCLSID")]
    HRESULT MultiInterfacePublisherFilterCLSID([in] BSTR bstrPubFilCLSID);
  
    [id(10), propget, helpstring("property AllowInprocActivation")]
    HRESULT AllowInprocActivation([out,retval]BOOL* pfAllowInprocActivation);
    [id(10), propput, helpstring("property AllowInprocActivation")]
    HRESULT AllowInprocActivation([in]BOOL fAllowInprocActivation);
  
    [id(11), propget, helpstring("property FireInParallel")]
    HRESULT FireInParallel([out,retval]BOOL* pfFireInParallel);
    [id(11), propput, helpstring("property FireInParallel")]
    HRESULT FireInParallel([in]BOOL fFireInParallel);
 }
  
  
 [
    object,
    uuid(F4A07D63-2E25-11D1-9964-00C04FBBB345),
    helpstring("IEnumEventObject Interface"),
    pointer_default(unique)
 ]
 interface IEnumEventObject : IUnknown
 {
    [id(1), helpstring("method Clone")]
    HRESULT Clone([out] IEnumEventObject** ppInterface);
  
    [id(3), helpstring("method Next")]
    HRESULT Next([in] ULONG cReqElem,
           [out,size_is(cReqElem), length_is(*cRetElem)] IUnknown** ppInterface,
           [out] ULONG* cRetElem);
  
    [id(4), helpstring("method Reset")]
    HRESULT Reset();
  
    [id(5), helpstring("method Skip")]
    HRESULT Skip([in] ULONG cSkipElem);
 };
  
  
 [
    object,
    uuid(f89ac270-d4eb-11d1-b682-00805fc79216),
    dual,
    helpstring("IEventObjectCollection Interface"),
    pointer_default(unique)
 ]
 interface IEventObjectCollection : IDispatch
 {
    [id(DISPID_NEWENUM), propget, restricted, helpstring("Create new IEnumVARIANT")]
    HRESULT _NewEnum([out,retval] IUnknown** ppUnkEnum);
  
    [id(DISPID_VALUE), propget]
    HRESULT Item([in] BSTR objectID, [out,retval] VARIANT* pItem);
  
    [id(1), propget, helpstring("Create new IEnumEventObject")]
    HRESULT NewEnum([out,retval] IEnumEventObject** ppEnum);
  
    [id(2), propget, helpstring("Number of items in the collection")]
    HRESULT Count([out,retval] long* pCount);
  
    [id(3), helpstring("Add an item to the collection")]
    HRESULT Add([in] VARIANT* item, [in] BSTR objectID);
  
    [id(4), helpstring("Remove an item from the collection")]
    HRESULT Remove([in] BSTR objectID);
 }
  
  
 [
    object,
    uuid(4A6B0E15-2E38-11D1-9965-00C04FBBB345),
    dual,
    helpstring("IEventSubscription Interface"),
    pointer_default(unique)
 ]
 interface IEventSubscription : IDispatch
 {
    [propget, id(1), helpstring("property SubscriptionID")]
    HRESULT SubscriptionID([out,retval] BSTR* pbstrSubscriptionID);
    [propput, id(1), helpstring("property SubscriptionID")]
    HRESULT SubscriptionID([in] BSTR bstrSubscriptionID);
  
    [propget, id(2), helpstring("property SubscriptionName")]
    HRESULT SubscriptionName([out,retval] BSTR* pbstrSubscriptionName);
    [propput, id(2), helpstring("property SubscriptionName")]
    HRESULT SubscriptionName([in] BSTR bstrSubscriptionName);
  
    [propget, id(3), helpstring("property PublisherID")]
    HRESULT PublisherID([out,retval] BSTR* pbstrPublisherID);
    [propput, id(3), helpstring("property PublisherID")]
    HRESULT PublisherID([in] BSTR bstrPublisherID);
  
    [propget, id(4), helpstring("property EventClassID")]
    HRESULT EventClassID([out,retval] BSTR* pbstrEventClassID);
    [propput, id(4), helpstring("property EventClassID")]
    HRESULT EventClassID([in] BSTR bstrEventClassID);
  
    [propget, id(5), helpstring("property MethodName")]
    HRESULT MethodName([out,retval] BSTR* pbstrMethodName);
    [propput, id(5), helpstring("property MethodName")]
    HRESULT MethodName([in] BSTR bstrMethodName);
  
    [propget, id(6), helpstring("property SubscriberCLSID")]
    HRESULT SubscriberCLSID([out,retval] BSTR* pbstrSubscriberCLSID);
    [propput, id(6), helpstring("property SubscriberCLSID")]
    HRESULT SubscriberCLSID([in] BSTR bstrSubscriberCLSID);
  
    [propget, id(7), helpstring("property SubscriberInterface")]
    HRESULT SubscriberInterface([out,retval] IUnknown** ppSubscriberInterface);
    [propput, id(7), helpstring("property SubscriberInterface")]
    HRESULT SubscriberInterface([in] IUnknown* pSubscriberInterface);
  
    [propget, id(8), helpstring("property PerUser")]
    HRESULT PerUser([out,retval] BOOL* pfPerUser);
    [propput, id(8), helpstring("property PerUser")]
    HRESULT PerUser([in] BOOL fPerUser);
  
    [propget, id(9), helpstring("property OwnerSID")]
    HRESULT OwnerSID([out,retval] BSTR* pbstrOwnerSID);
    [propput, id(9), helpstring("property OwnerSID")]
    HRESULT OwnerSID([in] BSTR bstrOwnerSID);
  
    [propget, id(10), helpstring("property Enabled")]
    HRESULT Enabled([out,retval] BOOL* pfEnabled);
    [propput, id(10), helpstring("property Enabled")]
    HRESULT Enabled([in] BOOL fEnabled);
  
    [propget, id(11), helpstring("property Description")]
    HRESULT Description([out,retval] BSTR* pbstrDescription);
    [propput, id(11), helpstring("property Description")]
    HRESULT Description([in] BSTR bstrDescription);
  
    [propget, id(12), helpstring("property MachineName")]
    HRESULT MachineName([out,retval] BSTR* pbstrMachineName);
    [propput, id(12), helpstring("property MachineName")]
    HRESULT MachineName([in] BSTR bstrMachineName);
  
    [id(13), helpstring("method GetPublisherProperty")]
    HRESULT GetPublisherProperty([in] BSTR bstrPropertyName, 
           [out,retval] VARIANT* propertyValue);
    [id(14), helpstring("method PutPublisherProperty")]
    HRESULT PutPublisherProperty([in] BSTR bstrPropertyName, 
           [in] VARIANT* propertyValue);
    [id(15), helpstring("method RemovePublisherProperty")]
    HRESULT RemovePublisherProperty([in] BSTR bstrPropertyName);
    [id(16), helpstring("method GetPublisherPropertyCollection")]
    HRESULT GetPublisherPropertyCollection([out,retval] IEventObjectCollection** collection);
  
    [id(17), helpstring("method GetSubscriberProperty")]
    HRESULT GetSubscriberProperty([in] BSTR bstrPropertyName, 
           [out,retval] VARIANT* propertyValue);
    [id(18), helpstring("method PutSubscriberProperty")]
    HRESULT PutSubscriberProperty([in] BSTR bstrPropertyName,
           [in] VARIANT* propertyValue);
    [id(19), helpstring("method RemoveSubscriberProperty")]
    HRESULT RemoveSubscriberProperty([in] BSTR bstrPropertyName);
    [id(20), helpstring("method GetSubscriberPropertyCollection")]
    HRESULT GetSubscriberPropertyCollection([out,retval] IEventObjectCollection** collection);
  
    [id(21), propget, helpstring("property InterfaceID")]
    HRESULT InterfaceID([out,retval] BSTR* pbstrInterfaceID);
    [id(21), propput, helpstring("property InterfaceID")]
    HRESULT InterfaceID([in] BSTR bstrInterfaceID);
 };
  
  
 [
    object,
    uuid(4A6B0E16-2E38-11D1-9965-00C04FBBB345),
    dual,
    helpstring("IEventSubscription2 Interface"),
    pointer_default(unique)
 ]
 interface IEventSubscription2 : IEventSubscription
 {
    [propget, id(22), helpstring("property FilterCriteria")]
    HRESULT FilterCriteria([out,retval] BSTR* pbstrFilterCriteria);
    [propput, id(22), helpstring("property FilterCriteria")]
    HRESULT FilterCriteria([in] BSTR bstrFilterCriteria);
  
    [propget, id(23), helpstring("property SubscriberMoniker")]
    HRESULT SubscriberMoniker([out,retval] BSTR* pbstrMoniker);
    [propput, id(23), helpstring("property SubscriberMoniker")]
    HRESULT SubscriberMoniker([in] BSTR bstrMoniker);
 }
  
  
 [
    object,
    uuid(7FB7EA43-2D76-4ea8-8CD9-3DECC270295E),
    dual,
    helpstring("IEventClass3 Interface"),
    pointer_default(unique)
 ]
 interface IEventClass3 : IEventClass2
 {
    [id(12), propget, helpstring("property EventClassPartitionID")]
    HRESULT EventClassPartitionID([out,retval] BSTR* pbstrEventClassPartitionID);
    [id(12), propput, helpstring("property EventClassPartitionID")]
    HRESULT EventClassPartitionID([in] BSTR bstrEventClassPartitionID);
  
    [id(13), propget, helpstring("property EventClassApplicationID")]
    HRESULT EventClassApplicationID([out,retval] BSTR* pbstrEventClassApplicationID);
    [id(13), propput, helpstring("property EventClassApplicationID")]
    HRESULT EventClassApplicationID([in] BSTR bstrEventClassApplicationID);
 }
  
 [
    object,
    uuid(FBC1D17D-C498-43a0-81AF-423DDD530AF6),
    dual,
    helpstring("IEventSubscription3 Interface"),
    pointer_default(unique)
 ]
 interface IEventSubscription3 : IEventSubscription2
 {
    [propget, id(24), helpstring("property EventClassPartitionID")]
    HRESULT EventClassPartitionID([out,retval] BSTR* pbstrEventClassPartitionID);
    [propput, id(24), helpstring("property EventClassPartitionID")]
    HRESULT EventClassPartitionID([in] BSTR bstrEventClassPartitionID);
  
    [propget, id(25), helpstring("property EventClassApplicationID")]
    HRESULT EventClassApplicationID([out,retval] BSTR* pbstrEventClassApplicationID);
    [propput, id(25), helpstring("property EventClassApplicationID")]
    HRESULT EventClassApplicationID([in] BSTR bstrEventClassApplicationID);
  
    [propget, id(26), helpstring("property SubscriberPartitionID")]
    HRESULT SubscriberPartitionID([out,retval] BSTR* pbstrSubscriberPartitionID);
    [propput, id(26), helpstring("property SubscriberPartitionID")]
    HRESULT SubscriberPartitionID([in] BSTR bstrSubscriberPartitionID);
  
    [propget, id(27), helpstring("property SubscriberApplicationID")]
    HRESULT SubscriberApplicationID([out,retval] BSTR* pbstrSubscriberApplicationID);
    [propput, id(27), helpstring("property SubscriberApplicationID")]
    HRESULT SubscriberApplicationID([in] BSTR bstrSubscriberApplicationID);
  
 };
  
 [
    object,
    uuid(99CC098F-A48A-4e9c-8E58-965C0AFC19D5),
    dual,
    helpstring("IEventSystem2 Interface"),
    pointer_default(unique)
 ]
 interface IEventSystem2 : IEventSystem
 {
    [id(7), helpstring("method GetVersion")]
    HRESULT GetVersion([out] int* pnVersion);
    [id(8), helpstring("method VerifyTransientSubscribers")]
    HRESULT VerifyTransientSubscribers();
 }
  
  
 [
    uuid(a0e8f27a-888c-11d1-b763-00c04fb926af),
    pointer_default(unique)
 ]
 interface IEventSystemInitialize : IUnknown
 {
    HRESULT SetCOMCatalogBehaviour(BOOL bRetainSubKeys);
 }; 
  
  
  
  
  
Show: