Implémentation de l’interface principale pour un fournisseur de méthodes
Un fournisseur d’événements doit implémenter l’interface IWbemEventProvider pour générer des notifications d’événements. WMI appelle la méthode IWbemEventProvider::P rovideEvents du fournisseur et passe un pointeur vers l’objet récepteur, qui est une implémentation de l’interface IWbemObjectSink. Lorsque le fournisseur d’événements est prêt à générer une notification, le fournisseur appelle la méthode IWbemObjectSink::Indicate.
Un fournisseur d’événements doit placer les notifications générées via IWbemEventProvider dans les objets d’événement. Vous devez implémenter des objets d’événement sous forme d’entrées dans un tableau d’interfaces IWbemClassObject représentées par le paramètre ppObjArray de la méthode Indicate. Étant donné que les IWbemClassObjects sont des objets COM, le fournisseur doit incrémenter le nombre de références pour le récepteur en appelant la méthode IWbemObjectSink::AddRef. Les fournisseurs d’événements qui doivent fournir de nombreuses notifications (par exemple, 400 événements) doivent créer un objet d’événement unique pour chaque notification en créant une nouvelle instance ou en clonant un objet existant. WMI ne s’accroche jamais à un objet d’événement après l’achèvement de l’appel Indicate et n’a aucune exigence particulière pour AddRef au-delà de la norme COM.
Tenez compte des instructions suivantes lors de l’implémentation d’un fournisseur d’événements :
N’apportez aucune modification de classe lors de la maintenance d’un appel client.
N’émettez pas d’appels liés aux événements, tels qu’un appel qui modifie un filtre d’événements.
Traitez toutes les demandes que le service de gestion Windows émet, telles que CancelQuery, avant de réfuter un événement.
Si vous ne traitez pas la demande, le fait de réfuter l’événement peut empêcher l’acceptation de l’événement.
N’appelez jamais IWbemObjectSink::SetStatus à partir d’un fournisseur.