Écriture d’un fournisseur d’événements
Un fournisseur d’événements est un objet COM qui fournit à WMI des notifications d’événements intrinsèques et extrinsèques. Un événement intrinsèque signale une modification des données internes à WMI, tandis qu’un événement extrinsèque signale un événement défini par l’utilisateur qui n’est pas décrit par un événement intrinsèque. Par exemple, un événement répondant à des modifications, à la création ou à la suppression de la classe Win32_LogicalDisk est considéré comme un événement intrinsèque. Un événement généré sur la base d’autres éléments que la modification, la création ou la suppression d’un objet WMI existant est un événement extrinsèque. Quelle que soit la classe prise en charge, vous pouvez installer tous les fournisseurs d’événements de la même manière.
La procédure suivante décrit comment installer un fournisseur d’événements.
Pour installer un fournisseur d’événements
Créez et enregistrez votre fournisseur de classes auprès de WMI.
Les fournisseurs de classes s'enregistrent auprès de WMI en créant une instance __Win32Provider et une instance __EventProviderRegistration. Pour plus d’informations, consultez Enregistrement d’un fournisseur d’événements.
Installez l’interface IWbemProviderInit pour votre fournisseur.
L’interface IWbemProviderInit est une interface courante que WMI utilise pour charger et initialiser tous les fournisseurs. Pour plus d'informations, voir Initialisation d'un fournisseur.
Installez IWbemEventProvider comme interface principale pour votre fournisseur.
L’interface IWbemEventProvider utilise la méthode ProviderEvents pour fournir des événements à WMI. Pour plus d’informations, consultez Installation de l’interface primaire pour un fournisseur de méthodes.
Notes
Les fournisseurs d’événements doivent utiliser le modèle multithread « Both ».
Si vous le souhaitez, vous pouvez également installer l’interface IWbemEventProviderQuerySink pour augmenter les performances de votre fournisseur d’événements.
L’interface IWbemEventProviderQuerySink permet au fournisseur d’optimiser les requêtes avant d’envoyer une réponse à WMI. Elle est particulièrement utile pour un fournisseur créant des événements de plusieurs types et devant effectuer le plus d’optimisations internes possibles. Pour plus d’informations, consultez Optimiser un fournisseur d’événements.
Installez l’interface IWbemEventProviderSecurity pour limiter les consommateurs à certains identificateurs de sécurité (SID), ou IWbemEventSink::SetSinkSecurity pour sécuriser le récepteur lui-même. Le fournisseur peut également définir la propriété SECURITY_DESCRIPTOR dans la classe d’événements pour sécuriser des événements individuels dans le code MOF. Pour plus d’informations, consultez Sécurisation des événements WMI.
Ajoutez tout code supplémentaire nécessaire pour votre fournisseur.
Lors de la conception de votre fournisseur, vous devrez probablement appeler des interfaces WMI. Pour plus d’informations, consultez Appel d’une méthode.
Lorsque vous récupérez des informations pour un client, vous devrez peut-être accéder à ses niveaux de sécurité. Pour plus d’informations, consultez Emprunt d’identité d’un client.
Remplacez le fournisseur préexistant par votre nouveau code.
Cette étape n’est pas nécessaire si vous n’avez pas de fournisseur préexistant à écraser. Pour plus d’informations, consultez Mise à jour d’un fournisseur.
Une application cliente peut demander un événement en s’inscrivant auprès de WMI en tant que consommateur d’événements. Pour plus d’informations, consultez Réception d’un événement WMI.