Partager via


Méthode IWbemServices ::CancelAsyncCall (wbemcli.h)

La méthode IWbemServices ::CancelAsyncCall annule tous les appels asynchrones en attente basés sur le pointeur IWbemObjectSink , qui a été passé à l’origine à la méthode asynchrone. Le pointeur IWbemObjectSink en attente peut être libéré avant l’appel ou après le retour de l’appel. La méthode CancelAsyncCall n’est pas opérationnelle à partir d’un récepteur et n’est pas prise en charge par les fournisseurs de méthodes. Cela signifie que seule la fin de l’appel du client est annulée. Le fournisseur d’implémentation n’est pas informé que l’appel a été annulé et s’exécute jusqu’à son terme. Vous devez tenir compte de cela avant d’annuler les méthodes qui prennent beaucoup de temps, telles que les méthodes Defrag et Format dans la classe Win32_Volume .

Syntaxe

HRESULT CancelAsyncCall(
  [in] IWbemObjectSink *pSink
);

Paramètres

[in] pSink

Pointeur vers l’implémentation IWbemObjectSink fournie par le client vers l’une des méthodes asynchrones d’IWbemServices.

Valeur retournée

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

En cas d’échec, vous pouvez obtenir les informations disponibles à partir de la fonction COM GetErrorInfo.

Les codes d’erreur spécifiques à COM peuvent également être retournés si des problèmes réseau vous font perdre la connexion à distance à Windows Management.

Note Si SetStatus n’a pas été appelé sur le récepteur de l’application au moment où WMI traite CancelAsyncCall, WMI appelle SetStatus sur ce récepteur avec WBEM_E_CALL_CANCELLED comme valeur pour le paramètre hResult .
 
Le minutage et la nature d’une opération asynchrone peuvent affecter si WMI est en mesure d’annuler l’opération. Seules les requêtes longues sont susceptibles d’être annulées avant leur exécution. Les opérations plus rapides, telles que les suppressions asynchrones ou les modifications, se terminent généralement avant que WMI puisse traiter un appel CancelAsyncCall . Ainsi, alors que CancelAsyncCall tente d’annuler l’opération en cours, il suffit parfois de libérer le pointeur IWbemObjectSink .
Note Il est possible d’effectuer de nombreux appels asynchrones à l’aide du même récepteur d’objets. Dans ce cas, la méthode CancelAsyncCall annule tous les appels asynchrones qui partagent ce récepteur d’objets. Il est fortement recommandé de créer un instance d’un récepteur d’objets pour chaque appel asynchrone en attente.
 

Remarques

Étant donné que le rappel au récepteur peut ne pas être retourné au même niveau d’authentification que celui requis par le client, il est recommandé d’utiliser une communication semi-synchrone plutôt qu’une communication asynchrone. Pour plus d’informations, consultez Appel d’une méthode. L’appel de CancelAsyncCall à partir d’une implémentation de IWbemObjectSink ::Indicate ou IWbemObjectSink ::SetStatus peut interférer avec l’état WMI et n’est pas recommandé.

Dans le cas d’un appel de méthode tel que ExecMethodAsync, seule la fin du client de l’appel est annulée. Le fournisseur d’implémentation n’est pas informé que l’appel a été annulé et s’exécute jusqu’à son terme.

Pour plus d’informations sur l’utilisation des appels asynchrones, consultez Effectuer un appel asynchrone avec C++ et Recevoir des notifications d’événements asynchrones

Exemples

Pour obtenir un exemple complet qui utilise CancelAsyncCall, consultez Exemple : Réception de notifications d’événements via WMI

L’exemple C++ suivant, extrait de l’exemple \\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\wmi\vc\decoupled\instance_provider sample, illustre une implémentation de CancelAsyncCall.
HRESULT CProvider_IWbemServices :: CancelAsyncCall ( 
  
 IWbemObjectSink *a_Sink
)
{
 HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
 return t_Result ;
}

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)
Bibliothèque Wbemuuid.lib
DLL Fastprox.dll ; Esscli.dll ; FrameDyn.dll ; FrameDynOS.dll ; Ntevt.dll ; Stdprov.dll ; Viewprov.dll ; Wbemcomn.dll ; Wbemcore.dll ; Wbemess.dll ; Wbemsvc.dll ; Wmipicmp.dll ; Wmidcprv.dll ; Wmipjobj.dll ; Wmiprvsd.dll

Voir aussi

IWbemObjectSink

IWbemServices