Erstellen eines Verlegerfilters

Es gibt zwei Methoden zum Einrichten des Herausgeberfilters: mithilfe der MultiPublisherFilterCLSID-Eigenschaft der Ereignisklasse oder mit IEventControl::SetPublisherFilter.

  • Da es Ihnen ermöglicht, das Ereignisobjekt mit dem COM+-Komponentendienst in der Warteschlange zu verfassen, ist die bevorzugte Methode die Verwendung der MultiPublisherFilterCLSID-Eigenschaft in der Ereignisklasse, um den Herausgeberfilter festzulegen. Dadurch wird ein Filterobjekt für alle Methoden der Ereignisschnittstellen für ein Ereignisobjekt eingerichtet. Das Ereignisobjekt aktiviert den Herausgeberfilter, wenn das Ereignisklassenobjekt mithilfe von CoCreateInstance instanziiert wird.
  • Sie können auch SetPublisherFilter verwenden. Wenn Sie diese Methode auswählen, ist die -Schnittstelle jedoch nicht queuierbar und kann daher das Ereignisobjekt nicht mit dem COM+-Komponentendienst in der Warteschlange zwischen dem Herausgeber und dem Ereignisklassenobjekt verwenden. Weitere Informationen zur Verwendung des Komponentendiensts in der Warteschlange mit COM+-Ereignissen finden Sie unter Verwenden von COM+-Ereignissen mit COM+-Komponenten in der Warteschlange.

Ein Ereignis kann mindestens ein Filterobjekt oder gar keines haben. Die Herausgeberfilterobjekte müssen entweder IPublisherFilter oder IMultiInterfacePublisherFilter unterstützen, je nachdem, ob Sie über eine einzelne Auslösungsschnittstelle oder mehrere Auslösenschnittstellen für das Ereignisklassenobjekt verfügen. Die Schnittstellen IPublisherFilter und IMultiInterfacePublisherFilter geben beide eine Initialize-Methode an . Die Initialize-Methode wird vom Ereignisklassenobjekt unmittelbar nach dem Erstellen des Filterobjekts aufgerufen.

COM+-Ereignisse versucht, zwei Methoden für den Filter aufzurufen. Zuerst ruft er IPublisherFilter::P repareToFire auf und übergibt einen IFiringControl-Schnittstellenzeiger an den Filter. Anschließend wird das Filterobjekt für die Ereignisschnittstelle abfragt. Wenn der Filter die Ereignisschnittstelle unterstützt, ruft er eine -Methode auf. Dadurch erhalten Sie Zugriff auf die Herausgeberparameter für ein Ereignis. Der Filter kann diese Parameter verwenden, um zu bestimmen, welche Abonnements ausgelöst werden sollen.

Filtern von Ereignissen in COM+