IWbemServices::CancelAsyncCall 方法 (wbemcli.h)
IWbemServices::CancelAsyncCall 方法根据最初传递给异步方法的 IWbemObjectSink 指针取消任何当前挂起的异步调用。 未完成的 IWbemObjectSink 指针可以在调用之前或调用返回后释放。 CancelAsyncCall 方法不能从接收器中操作,并且不受方法提供程序的支持。 这意味着仅取消调用的客户端。 实现提供程序不会收到已取消调用并运行到完成的通知。 在取消需要很长时间才能完成的方法(如 Win32_Volume 类中的 Defrag 和 Format 方法)之前,应考虑这 一 点。
语法
HRESULT CancelAsyncCall(
[in] IWbemObjectSink *pSink
);
参数
[in] pSink
指向客户端提供的 IWbemObjectSink 实现的指针,指向 IWbemServices 的任何异步方法。
返回值
此方法返回指示方法调用状态的 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) |
Library | 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 |