IWbemServices::CancelAsyncCall 方法 (wbemcli.h)
IWbemServices::CancelAsyncCall 方法會根據原本傳遞至異步方法的 IWbemObjectSink 指標,取消任何目前擱置中的異步呼叫。 未處理的 IWbemObjectSink 指標可以在呼叫之前或呼叫傳回之後釋出。 CancelAsyncCall 方法無法從接收內運作,而且方法提供者不支援此方法。 這表示只會取消呼叫的用戶端端。 實作提供者不會收到呼叫已取消並執行至完成的通知。 您應該在取消需要很長時間才能完成的方法,例如Win32_Volume 類別中的Defrag和 Format 方法。
語法
HRESULT CancelAsyncCall(
[in] IWbemObjectSink *pSink
);
參數
[in] pSink
用戶端提供給 IWbemServices 的任何異步方法的 IWbemObjectSink 實作指標。
傳回值
這個方法會傳回 HRESULT ,指出方法呼叫的狀態。 下列清單列出 HRESULT 中包含的值。
失敗時,您可以從 COM 函式 GetErrorInfo 取得可用的資訊。
如果網路問題造成您遺失與 Windows 管理的遠端連線,也可以傳回 COM 特定的錯誤碼。
備註
由於對接收的回呼可能不會在用戶端所需的相同驗證層級傳回,因此建議您使用半同步而非異步通訊。 如需詳細資訊,請參閱 呼叫方法。 從 IWbemObjectSink::Indicate 或 IWbemObjectSink::SetStatus 的實作內呼叫 CancelAsyncCall 可能會干擾 WMI 狀態,不建議這麼做。
在 ExecMethodAsync 之類的方法呼叫案例中,只會取消呼叫的用戶端。 實作提供者不會收到呼叫已取消並執行至完成的通知。
如需如何使用異步呼叫的詳細資訊,請參閱 使用 C++ 進行異步呼叫 和 接收異步事件通知
範例
如需使用 CancelAsyncCall 的完整範例,請參閱 範例:透過 WMI 接收事件通知
下列 C++ 範例取自 \\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\wmi\vc\decoupled\instance_provider 範例,示範 CancelAsyncCall 的實作。HRESULT CProvider_IWbemServices :: CancelAsyncCall (
IWbemObjectSink *a_Sink
)
{
HRESULT t_Result = WBEM_E_NOT_AVAILABLE ;
return t_Result ;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista |
最低支援的伺服器 | Windows Server 2008 |
目標平台 | Windows |
標頭 | wbemcli.h (包含 Wbemidl.h) |
程式庫 | 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 |