Freigeben über


IWbemServices::CancelAsyncCall-Methode (wbemcli.h)

Die IWbemServices::CancelAsyncCall-Methode bricht alle derzeit ausstehenden asynchronen Aufrufe basierend auf dem IWbemObjectSink-Zeiger ab, der ursprünglich an die asynchrone Methode übergeben wurde. Der ausstehende IWbemObjectSink-Zeiger kann vor dem Aufruf oder nach der Rückgabe des Aufrufs freigegeben werden. Die CancelAsyncCall-Methode ist innerhalb einer Senke nicht betriebsbereit und wird von Methodenanbietern nicht unterstützt. Dies bedeutet, dass nur das Clientende des Aufrufs abgebrochen wird. Der implementierende Anbieter wird nicht benachrichtigt, dass der Aufruf abgebrochen wurde und bis zum Abschluss ausgeführt wird. Sie sollten dies berücksichtigen, bevor Sie Methoden abbrechen, die lange dauern, bis sie abgeschlossen sind, z. B. die Methoden Defrag und Format in der klasse Win32_Volume .

Syntax

HRESULT CancelAsyncCall(
  [in] IWbemObjectSink *pSink
);

Parameter

[in] pSink

Zeiger auf die vom Client bereitgestellte IWbemObjectSink-Implementierung auf eine der asynchronen Methoden von IWbemServices.

Rückgabewert

Diese Methode gibt ein HRESULT zurück, das den Status des Methodenaufrufs angibt. Die folgende Liste listet den Wert auf, der in einem HRESULT enthalten ist.

Bei einem Fehler können Sie verfügbare Informationen aus der COM-Funktion GetErrorInfo abrufen.

COM-spezifische Fehlercodes können auch zurückgegeben werden, wenn Netzwerkprobleme dazu führen, dass die Remoteverbindung mit der Windows-Verwaltung verloren geht.

Hinweis Wenn SetStatus nicht auf der Senke der Anwendung aufgerufen wurde, wenn WMI CancelAsyncCall verarbeitet, ruft WMI SetStatus für diese Senke mit WBEM_E_CALL_CANCELLED als Wert für den hResult-Parameter auf.
 
Die Zeitplanung und die Art eines asynchronen Vorgangs können sich darauf auswirken, ob WMI den Vorgang abbrechen kann. Nur lange Abfragen werden wahrscheinlich erfolgreich abgebrochen, bevor sie abgeschlossen sind. Schnellere Vorgänge, z. B. asynchrone Löschungen oder Änderungen, werden in der Regel abgeschlossen, bevor WMI einen CancelAsyncCall-Aufruf verarbeiten kann. Während CancelAsyncCall also versucht, den aktuellen Vorgang abzubrechen, kann manchmal nur der IWbemObjectSink-Zeiger freigegeben werden.
Hinweis Es ist möglich, zahlreiche asynchrone Aufrufe mit der gleichen Objektsenke durchzuführen. In diesem Fall bricht die CancelAsyncCall-Methode alle asynchronen Aufrufe ab, die diese Objektsenke gemeinsam nutzen. Es wird dringend empfohlen, für jeden ausstehenden asynchronen Aufruf eine instance einer Objektsenke zu erstellen.
 

Hinweise

Da der Rückruf an die Senke möglicherweise nicht auf der Authentifizierungsebene zurückgegeben wird, die der Client benötigt, empfiehlt es sich, anstelle der asynchronen Kommunikation eine halbsynchrone Kommunikation zu verwenden. Weitere Informationen finden Sie unter Aufrufen einer Methode. Das Aufrufen von CancelAsyncCall aus einer Implementierung von IWbemObjectSink::Indicate oder IWbemObjectSink::SetStatus kann den WMI-Zustand beeinträchtigen und wird nicht empfohlen.

Bei einem Methodenaufruf wie ExecMethodAsync wird nur das Clientende des Aufrufs abgebrochen. Der implementierende Anbieter wird nicht benachrichtigt, dass der Aufruf abgebrochen wurde und bis zum Abschluss ausgeführt wird.

Weitere Informationen zur Verwendung asynchroner Aufrufe finden Sie unter Durchführen eines asynchronen Anrufs mit C++ und Empfangen asynchroner Ereignisbenachrichtigungen.

Beispiele

Ein vollständiges Beispiel, das CancelAsyncCall verwendet, finden Sie unter Beispiel: Empfangen von Ereignisbenachrichtigungen über WMI

Das folgende C++-Beispiel aus dem Beispiel \\Programme\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\wmi\vc\decoupled\instance_provider veranschaulicht eine Implementierung von CancelAsyncCall.
HRESULT CProvider_IWbemServices :: CancelAsyncCall ( 
  
 IWbemObjectSink *a_Sink
)
{
 HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
 return t_Result ;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile wbemcli.h (include Wbemidl.h)
Bibliothek 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

Weitere Informationen

IWbemObjectSink

IWbemServices