Interface IWbemObjectSink (wbemcli.h)
L’interface IWbemObjectSink crée une interface réceptrice qui peut recevoir tous les types de notifications dans le modèle de programmation WMI. Les clients doivent implémenter cette interface pour recevoir à la fois les résultats des méthodes asynchrones d’IWbemServices et des types spécifiques de notifications d’événements. Les fournisseurs utilisent, mais n’implémentent pas cette interface pour fournir des événements et des objets à WMI.
En règle générale, les fournisseurs appellent une implémentation qui leur est fournie par WMI. Dans ce cas, appelez Indicate pour fournir des objets au service WMI. Après cela, appelez SetStatus pour indiquer la fin de la séquence de notification. Vous pouvez également appeler SetStatus pour indiquer les erreurs lorsque le récepteur n’a pas d’objets.
Lors de la programmation de clients asynchrones de WMI, l’utilisateur fournit l’implémentation. WMI appelle les méthodes pour remettre des objets et définir le statut du résultat.
Héritage
L’interface IWbemObjectSink hérite de l’interface IUnknown. IWbemObjectSink a également les types de membres suivants :
Méthodes
L’interface IWbemObjectSink possède les méthodes suivantes.
IWbemObjectSink ::Indicate Appelé par une source pour fournir une notification. |
IWbemObjectSink ::SetStatus Appelé par les sources pour indiquer la fin d’une séquence de notification ou pour envoyer d’autres codes de statut au récepteur. |
Notes
Lors de l’implémentation d’un récepteur d’abonnement aux événements (IWbemObjectSink ou IWbemEventSink), n’appelez pas dans WMI à partir des méthodes Indicate ou SetStatus sur l’objet récepteur. Par exemple, l’appel d’IWbemServices::CancelAsyncCall pour annuler le récepteur à partir d’une implémentation d’Indicate peut interférer avec l’état WMI. Pour annuler un abonnement aux événements, définissez un indicateur et appelez IWbemServices::CancelAsyncCall à partir d’un autre thread ou objet. Pour les implémentations qui ne sont pas liées à un récepteur d’événements, telles que les récupérations d’objets, d’énumérations et de requêtes, vous pouvez rappeler WMI.
Les implémentations de récepteur doivent traiter la notification d’événement dans un délai de 100 ms, car le thread WMI qui transmet la notification d’événement ne peut pas effectuer d’autres tâches tant que l’objet récepteur n’a pas terminé le traitement. Si la notification nécessite un traitement important, le récepteur peut utiliser une file d’attente interne pour un autre thread pour gérer le traitement.
Exemples
L’exemple de code suivant est une implémentation simple d’un récepteur d’objets. Cet exemple peut être utilisé avec IWbemServices::ExecQueryAsync ou IWbemServices::CreateInstanceEnumAsync pour recevoir les instances retournées :
C++ |
---|
|
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista |
Serveur minimal pris en charge | Windows Server 2008 |
Plateforme cible | Windows |
En-tête | wbemcli.h (include Wbemidl.h) |
Voir aussi
Réception d’événements pendant la durée de votre application