Partager via


Création d’un filtre d’éditeur

Il existe deux méthodes pour établir le filtre d’éditeur : à l’aide de la propriété MultiPublisherFilterCLSID de la classe d’événements ou à l’aide de IEventControl::SetPublisherFilter.

  • Étant donné qu’elle vous permet de composer l’objet d’événement avec le service de composants en file d’attente COM+ , la méthode recommandée consiste à utiliser la propriété MultiPublisherFilterCLSID dans la classe d’événements pour définir le filtre publisher. Cela établit un objet de filtre pour toutes les méthodes des interfaces d’événement d’un objet d’événement. L’objet événement active le filtre publisher lorsque l’objet de classe d’événements est instancié à l’aide de CoCreateInstance.
  • Vous pouvez également utiliser SetPublisherFilter. Toutefois, si vous choisissez cette méthode, l’interface n’est pas modifiable et ne peut donc pas utiliser l’objet d’événement avec le service de composants mis en file d’attente COM+ entre l’éditeur et l’objet de classe d’événements. Pour plus d’informations sur l’utilisation du service de composants mis en file d’attente avec les événements COM+, consultez Utilisation d’événements COM+ avec des composants mis en file d’attente COM+.

Un événement peut avoir un ou plusieurs objets de filtre ou aucun du tout. Les objets de filtre de l’éditeur doivent prendre en charge IPublisherFilter ou IMultiInterfacePublisherFilter, selon que vous disposez d’une interface de déclenchement unique ou de plusieurs interfaces de déclenchement sur l’objet de classe d’événements. Les interfaces IPublisherFilter et IMultiInterfacePublisherFilter spécifient une méthode Initialize . La méthode Initialize est appelée par l’objet de classe d’événements immédiatement après la création de l’objet de filtre.

Les événements COM+ essaient d’appeler deux méthodes sur le filtre. Tout d’abord, il appelle IPublisherFilter::P repareToFire et passe un pointeur d’interface IFiringControl au filtre. Ensuite, il interroge l’objet de filtre pour l’interface d’événement. Si le filtre prend en charge l’interface d’événement, il appelle une méthode dessus. Cela permet d’accéder aux paramètres de l’éditeur pour un événement. Le filtre peut utiliser ces paramètres pour déterminer les abonnements à déclencher.

Filtrage des événements dans COM+