Partager via


Inscription d’un fournisseur d’événements

Pour créer un fournisseur d’événements WMI, vous devez inscrire l’instance _Win32Provider qui représente votre fournisseur en utilisant une instance de __EventProviderRegistration. En tant qu’objet COM, votre fournisseur doit s’inscrire auprès du système d’exploitation et de WMI. La procédure suivante suppose que vous avez déjà implémenté le processus d’inscription, comme décrit dans Inscription d’un fournisseur.

La procédure suivante explique comment inscrire un fournisseur d’événements.

Pour inscrire un fournisseur d’événements

  1. Créez un instance de la classe __Win32Provider qui décrit le fournisseur.

  2. Créez une instance de la classe __EventProviderRegistration qui décrit l’ensemble de fonctionnalités du fournisseur.

    La classe __EventProviderRegistration hérite de nombreuses propriétés de la classe parente __ObjectProviderRegistration. Les propriétés locales de la classe __EventProviderRegistration sont le chemin d’accès de l’objet au fournisseur et une liste de requêtes qui décrivent les événements pris en charge par le fournisseur. Pour plus d’informations, consultez Interrogation de WMI.

  3. Chargez votre implémentation des classes __Win32Provider et __EventProviderRegistration dans le référentiel WMI.

    WMI utilise votre définition de classe pour inscrire et accéder à votre fournisseur d’événements. Pour plus d’informations, consultez Inscription d’un fournisseur.

L’exemple de code suivant décrit une implémentation d’une classe __Win32Provider et d’une classe __EventProviderRegistration.

instance of __Win32Provider as $P
{
    ClientLoadableCLSID = NULL;
    CLSID = "{AA7828C5-95F9-11d2-BB0D-00C042424242}";
    DefaultMachineName = NULL;
    ImpersonationLevel = 0;
    InitializationReentrancy = 0;
    InitializeAsAdminFirst = FALSE;
    Name = "FaxEventProvider";
    PerLocaleInitialization = FALSE;
    PerUserInitialization = FALSE;
    Pure = TRUE;
    UnloadTimeout = NULL;
};

instance of __EventProviderRegistration
{  
Provider = $P;
EventQueryList = {
         "SELECT * FROM FaxEvent",
         "SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA \"Win32_LogicalDisk\""};
};

La première requête indique que le fournisseur génère toutes les notifications d’événements pour la classe d’événements extrinsèque FaxEvent. Étant donné qu’elle utilise l’opérateur ISA, la deuxième requête implique que le fournisseur génère des notifications pour tous les événements de création d’instances pour la classe Win32_LogicalDisk et pour toutes ses sous-classes.

Lorsqu’un fournisseur s’inscrit pour fournir un événement intrinsèque, l’événement doit s’appliquer à toutes les instances d’une classe. En d’autres termes, une requête ne peut pas être écrite pour fournir des événements de création d’instances uniquement pour certains lecteurs de disque qui appartiennent à la classe Win32_LogicalDisk.