Partager via


Liaison d’un filtre d’événements avec un consommateur logique

Après avoir créé le consommateur d’événements logiques et le filtre d’événements, vous devez les lier, ce qui inscrit le consommateur logique pour recevoir une notification sur les événements spécifiés par le filtre.

La procédure suivante décrit comment lier un filtre d’événements à un consommateur logique.

Pour lier un filtre d’événements à un consommateur logique

  1. Créez une instance de la classe système __FilterToConsumerBinding dans le référentiel WMI.

    La classe __FilterToConsumerBinding est une classe d’association qui lie l’instance de filtre d’événements et l’instance de consommateur logique ensemble via les propriétés de référence Filter et Consumer. Pour plus d’informations, consultez Déclaration d’une classe d’association.

  2. Définissez la propriété Filter sur l’instance de votre filtre.

  3. Définissez la propriété Consumer sur l’instance de votre consommateur logique.

  4. Définissez la propriété DeliverSynchronously pour déterminer le type de remise souhaité.

    La propriété DeliverSynchronously détermine quand WMI remet des notifications d’événements de manière synchrone ou asynchrone. La définition de cette propriété sur TRUE demande une remise synchrone. Utilisez la livraison synchrone uniquement lorsque le consommateur permanent peut traiter des événements dans un délai d’environ 100 microsecondes.

    Notes

    Étant donné que le rappel au récepteur peut ne pas être retourné au même niveau d’authentification que celui requis par le client, il est recommandé d’utiliser une communication semi-synchrone plutôt qu’une communication asynchrone. Pour plus d’informations, consultez Appel d’une méthode.

     

  5. Lorsque vous désinscrivez votre consommateur d’événements logiques, veillez à supprimer l’instance __FilterToConsumerBinding.

    Chaque instance __FilterToConsumerBinding représente une inscription pour une notification d’événement spécifique. Lorsque vous supprimez une liaison, WMI désactive l’inscription. Vous devrez peut-être supprimer les instances de consommateur logique et de filtre d’événements pour désactiver l’inscription, en fonction de l’implémentation.

L’exemple de code suivant montre une instance __FilterToConsumerBinding qui associe une instance de classe ActiveScriptEventConsumer à un filtre d’événements spécifique (l’instance de consommateur d’événements a été créé dans la rubrique Création d’un consommateur logique et le filtre d’événements a été créé dans la rubrique Création d’un filtre d’événements).

instance of __FilterToConsumerBinding
{
    Filter = $FILTER;
    Consumer = $CONSUMER;
    DeliverSynchronously=FALSE;

    // this is the Administrators SID in array of bytes format
    CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0}; 
};

Deux consommateurs, ActiveScriptEventConsumer et CommandLineEventConsumer, ne fonctionnent que si leur créateur est membre du groupe Administrateurs local.

: Lorsqu’un administrateur crée un abonnement, son SID n’est pas utilisé pour la propriété CreatorSID, mais le SID du groupe Administrateurs local est utilisé à la place. Par conséquent, les instances peuvent être créées par différents administrateurs et l’abonnement fonctionnera toujours. Pour plus d’informations, consultez Réception d’événements en toute sécurité.

Lorsqu’un filtre est lié à un consommateur logique, l’événement est enregistré par le suivi d’événements pour Windows (ETW). Pour plus d’informations, consultez Suivi de l’activité WMI.

Réception d’événements à tout moment