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èque ou extrinsèque. Pour plus d’informations sur la réception d’événements, consultez réception d’un événement WMI. Pour plus d’informations sur la façon de fournir des é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
Un événement intrinsèque est un é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 de _ disque logique Win32 se traduirait par une instance _ _ InstanceCreationEvent .
WMI crée des événements intrinsèques pour les objets stockés dans l’espace de stockage 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 que WMI utilise pour signaler des é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 instance de classe est créée. |
| __InstanceOperationEvent | Avertit un consommateur lorsqu’un événement d’instance se produit, par exemple la création, la suppression ou la modification de l’instance. Vous pouvez utiliser cette classe dans les requêtes pour récupérer tous les événements de type 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 abandonné en raison d’un échec sur la partie 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 abandonné à la suite d’un dépassement de capacité 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 à des modifications dans le 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 bascule 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 de système d' _ _ événements . Le Registre système et les fournisseurs SNMP définissent des classes d’événements extrinsèques, telles que RegistryKeyChangeEvent, qui avertissent un consommateur lorsqu’une clé de Registre est modifiée. Pour plus d’informations, consultez inscription aux événements de 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 pour le 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 de temps 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 la génération 24 uniquement.
SELECT * FROM SecurityViolationEvent WHERE Building = 24;