Metodo IWbemServices::CancelAsyncCall (wbemcli.h)
Il metodo IWbemServices::CancelAsyncCall annulla tutte le chiamate asincrone attualmente in sospeso in base al puntatore IWbemObjectSink , che è stato originariamente passato al metodo asincrono. Il puntatore IWbemObjectSink in sospeso può essere rilasciato prima della chiamata o dopo la restituzione della chiamata. Il metodo CancelAsyncCall non è operativo dall'interno di un sink e non è supportato dai provider di metodi. Ciò significa che solo la fine client della chiamata viene annullata. Il provider di implementazione non riceve una notifica che indica che la chiamata è stata annullata e viene eseguita fino al completamento. È consigliabile prendere in considerazione questa operazione prima di annullare i metodi che richiedono molto tempo, ad esempio i metodi Defrag e Format nella classe Win32_Volume .
Sintassi
HRESULT CancelAsyncCall(
[in] IWbemObjectSink *pSink
);
Parametri
[in] pSink
Puntatore all'implementazione IWbemObjectSink fornita dal client a uno dei metodi asincroni di IWbemServices.
Valore restituito
Questo metodo restituisce un valore HRESULT che indica lo stato della chiamata al metodo. L'elenco seguente elenca il valore contenuto in hrESULT.
In caso di errore, è possibile ottenere informazioni disponibili dalla funzione COM GetErrorInfo.
I codici di errore specifici di COM possono essere restituiti anche se i problemi di rete causano la perdita della connessione remota a Gestione Windows.
Commenti
Poiché il callback al sink potrebbe non essere restituito allo stesso livello di autenticazione richiesto dal client, è consigliabile usare la comunicazione semiincrona anziché la comunicazione asincrona. Per altre informazioni, vedere Chiamata di un metodo. La chiamata a CancelAsyncCall dall'interno di un'implementazione di IWbemObjectSink::Indicate o IWbemObjectSink::SetStatus può interferire con lo stato WMI e non è consigliata.
Nel caso di una chiamata al metodo, ad esempio ExecMethodAsync, viene annullata solo la fine client della chiamata. Il provider di implementazione non riceve una notifica che indica che la chiamata è stata annullata e viene eseguita fino al completamento.
Per altre informazioni su come usare le chiamate asincrone, vedere Esecuzione di una chiamata asincrona con C++ e ricezione di notifiche di eventi asincrone
Esempio
Per un esempio completo che usa CancelAsyncCall, vedere Esempio: Ricezione di notifiche degli eventi tramite WMI
L'esempio C++ seguente, tratto dall'esempio \\Programmi\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\wmi\vc\decoupled\instance_provider, illustra un'implementazione di CancelAsyncCall.HRESULT CProvider_IWbemServices :: CancelAsyncCall (
IWbemObjectSink *a_Sink
)
{
HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
return t_Result ;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Piattaforma di destinazione | Windows |
Intestazione | wbemcli.h (include Wbemidl.h) |
Libreria | 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 |