Détermination du type d’événement à recevoir

Avant de vous inscrire pour recevoir un événement, vous devez déterminer les types d’événements à recevoir : intrinsèques ou extrinsèques. Pour plus d’informations sur la façon de recevoir des événements, consultez Réception d’un événement WMI. Pour plus d’informations sur la fourniture d’événements, consultez Développement d’un fournisseur WMI et Écriture d’un fournisseur d’événements. Pour plus d’informations sur les problèmes de sécurité liés à la réception et à la fourniture d’événements, consultez Sécurisation des événements WMI.

Événements intrinsèques

Événement qui se produit en réponse à une modification dans le modèle de données WMI standard. Chaque classe d'événement intrinsèque représente un type spécifique de modification et se produit lorsque WMI ou un fournisseur crée, supprime ou modifie un espace de noms, une classe ou une instance de classe. Par exemple, la création d’une instance Win32_LogicalDisk entraînerait une instance __InstanceCreationEvent.

WMI crée des événements intrinsèques pour les objets stockés dans le référentiel WMI. Un fournisseur génère des événements intrinsèques pour les classes dynamiques, mais WMI peut créer une instance pour une classe dynamique si aucun fournisseur n’est disponible. WMI utilise l’interrogation pour détecter les modifications. Le tableau suivant répertorie les classes système utilisées par WMI pour signaler les événements intrinsèques.

Classe système Description
__ClassCreationEvent Avertit un consommateur lorsqu’une classe est créée.
__ClassDeletionEvent Avertit un consommateur lorsqu’une classe est supprimée.
__ClassModificationEvent Avertit un consommateur lorsqu’une classe est modifiée.
__InstanceCreationEvent Avertit un consommateur lorsqu’une classe instance est créée.
__InstanceOperationEvent Notifie un consommateur lorsqu'un événement se produit dans l'instance, tel que la création, la suppression ou la modification de l'instance. Vous pouvez utiliser cette classe dans les requêtes pour obtenir tous les types d’événements associés à une instance.
__InstanceDeletionEvent Avertit un consommateur lorsqu’une instance est supprimée.
__InstanceModificationEvent Avertit un consommateur lorsqu’une instance est modifiée.
__NamespaceCreationEvent Avertit un consommateur lorsqu’un espace de noms est créé.
__NamespaceDeletionEvent Avertit un consommateur lorsqu’un espace de noms est supprimé.
__NamespaceModificationEvent Avertit un consommateur lorsqu’un espace de noms est modifié.
__ConsumerFailureEvent Avertit un consommateur lorsqu’un autre événement est supprimé en raison d’une défaillance de la part d’un consommateur d’événements.
__EventDroppedEvent Avertit un consommateur lorsqu’un autre événement est supprimé au lieu d’être remis au consommateur d’événements demandeur.
__EventQueueOverflowEvent Avertit un consommateur lorsqu’un événement est supprimé à la suite d’un débordement de la file d’attente de remise.
__MethodInvocationEvent Avertit un consommateur lorsqu’un événement d’appel de méthode se produit.

 

Événements extrinsèques

Un événement extrinsèque est une occurrence prédéfinie qui ne peut pas être liée directement aux modifications apportées au modèle de données WMI. Par conséquent, WMI permet à un fournisseur d’événements de définir une classe d’événements qui décrit l’événement. Par exemple, un événement qui décrit un ordinateur qui passe en mode veille est un événement extrinsèque. Un fournisseur dérive un événement extrinsèque de la classe système __ExtrinsicEvent, qui est une sous-classe de la classe système __Event. Le Registre système et les fournisseurs SNMP définissent des classes d’événements extrinsèques, telles que RegistryKeyChangeEvent, qui avertit un consommateur lorsqu’une clé de Registre est modifiée. Pour plus d’informations, voir Inscription aux événements du Registre système et Écriture d’un fournisseur d’événements.

Dans l’exemple suivant, un fournisseur d’événements signale des violations de sécurité à un ou plusieurs bâtiments. La classe suivante peut être définie pour l’événement extrinsèque représentant une violation de sécurité.

class SecurityViolationEvent : __ExtrinsicEvent
{
   string Building;           // building where violation occurred
   sint32 EntranceNumber;     // entrance where violation occurred
   datetime TimeOfDetection;  // date and time of violation
}

Pour recevoir les notifications de violation de sécurité, un consommateur s’inscrit au type d’événement SecurityViolationEvent. Sauf indication contraire, un consommateur reçoit une notification de toutes les violations de sécurité pendant toutes les périodes et dans tous les bâtiments. La classe d’événements contient également des informations que les consommateurs peuvent utiliser pour demander des événements plus spécifiques.

Dans l’exemple suivant, la requête inscrit le consommateur pour les événements de violation de sécurité dans le bâtiment 24 uniquement.

SELECT * FROM SecurityViolationEvent WHERE Building = 24;