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.
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 |