建立發行者篩選

有兩種方法可以建立發行者篩選:使用事件類別的 MultiPublisherFilterCLSID 屬性,或使用 IEventControl::SetPublisherFilter

  • 因為它可讓您使用 COM+ 佇列元件 服務撰寫事件物件,因此慣用的方法是在事件類別中使用 MultiPublisherFilterCLSID 屬性來設定發行者篩選。 這會為事件物件的所有事件介面方法建立一個篩選物件。 當事件類別物件使用 CoCreateInstance 具現化時,事件對象會啟動發行者篩選。
  • 您也可以使用 SetPublisherFilter 不過,如果您選擇此方法,則介面無法佇列,因此無法搭配發行者和事件類別對象之間的 COM+ 佇列元件服務使用事件物件。 如需搭配 COM+ 事件使用佇列元件服務的其他資訊,請參閱 搭配 COM+ 佇列元件使用 COM+ 事件。

事件可以有一或多個篩選物件,或完全沒有。 發行者篩選對象必須支援 IPublisherFilter 或 IMultiInterfacePublisherFilter,視事件類別物件上是否有單一引發介面或多個引發介面而定。 IPublisherFilter 和 IMultiInterfacePublisherFilter 介面都指定 Initialize 方法。 在建立篩選對象之後,事件類別物件會立即呼叫 Initialize 方法。

COM+ 事件會嘗試在篩選上叫用兩種方法。 首先,它會呼叫 IPublisherFilter::P repareToFire,並將 IFiringControl 介面指標傳遞至篩選。 然後它會查詢事件介面的篩選物件。 如果篩選支援事件介面,它會在它上叫用方法。 這可讓您存取事件的發行者參數。 篩選條件可以使用這些參數來判斷要引發的訂用帳戶。

篩選 COM+ 中的事件