Méthode IWbemObjectSink ::SetStatus (wbemcli.h)

La méthode IWbemObjectSink ::SetStatus est appelée par les sources pour indiquer la fin d’une séquence de notification ou pour envoyer d’autres codes status au récepteur. La méthode IWbemObjectSink ::Indicate n’a peut-être pas été appelée avant l’appel à SetStatus.

En règle générale, un client implémente l’interface IWbemObjectSink et exécute des méthodes IWbemServices qui retournent leurs résultats à l’aide de l’interface IWbemObjectSink . Au cours de cette opération, les appels WMI indiquent autant de fois que nécessaire, suivis d’un appel final à SetStatus et, dans de nombreux cas, à Release.

Syntaxe

HRESULT SetStatus(
  [in] long             lFlags,
  [in] HRESULT          hResult,
  [in] BSTR             strParam,
  [in] IWbemClassObject *pObjParam
);

Paramètres

[in] lFlags

Masque de bits des informations status. Le status de l’opération peut être obtenu en examinant le paramètre hResult.

WBEM_STATUS_COMPLETE

L’opération est terminée.

WBEM_STATUS_PROGRESS

L'opération est encore en cours.

WBEM_STATUS_REQUIREMENTS

Utilisé dans l’activation du post-filtrage.

[in] hResult

Ce paramètre a la valeur HRESULT de l’opération asynchrone ou de la notification. Il s’agit d’un code d’erreur, si une erreur s’est produite, ou de la progression qui a été effectuée sur un appel asynchrone.

[in] strParam

Reçoit un pointeur vers un BSTR en lecture seule si l’opération asynchrone d’origine retourne une chaîne. Par exemple, lors de l’utilisation de PutInstanceAsync, SetStatus est appelé avec ce paramètre défini sur le chemin d’objet du instance nouvellement créé.

[in] pObjParam

Dans les cas où une erreur complexe ou un objet status est retourné, celui-ci contient un pointeur vers l’objet d’erreur. Si l’objet est requis après le retour de SetStatus , l’objet appelé doit utiliser la méthode AddRef sur le pointeur avant que l’objet appelé ne retourne.

Valeur retournée

Cette méthode retourne une valeur HRESULT qui indique le statut de l'appel de méthode. La liste suivante répertorie la valeur contenue dans un HRESULT.

Remarques

Lorsque vous implémentez un récepteur d’abonnement aux événements (IWbemObjectSink ou IWbemEventSink), n’appelez pas WMI à partir de la méthode SetStatus sur l’objet récepteur. Par exemple, l’appel d’IWbemServices ::CancelAsyncCall à partir d’une implémentation de SetStatus 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. 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.

Pour recevoir des mises à jour status intermédiaires via l’implémentation de SetStatus par le client, vous devez spécifier WBEM_FLAG_SENT_STATUS dans votre appel à une méthode fournisseur/service. La status exacte peut être déterminée en examinant séparément les valeurs HIWORD et LOWORD de hResult. La valeur LOWORD (hResult) contient la quantité de progrès qui a été effectuée jusqu’à présent et la valeur HIWORD (hResult) contient le total.

Si vous ne spécifiez pas WBEM_FLAG_SEND_STATUS lors de l’appel de votre fournisseur ou de votre méthode de service, vous êtes assuré de recevoir un seul appel à SetStatus.

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 (inclure Wbemidl.h)
Bibliothèque Wbemuuid.lib
DLL Fastprox.dll

Voir aussi

IWbemObjectSink

IWbemObjectSink ::Indique

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync

WBEM_STATUS_TYPE