CoDisableCallCancellation 函数 (combaseapi.h)

撤消对 CoEnableCallCancellation 的调用的操作。 当对 CoEnableCallCancellation 的所有调用都通过对 CoDisableCallCancellation 的调用进行均衡时,禁用取消调用线程上的同步 调用

语法

HRESULT CoDisableCallCancellation(
  [in, optional] LPVOID pReserved
);

参数

[in, optional] pReserved

此参数是保留的,必须为 NULL

返回值

此函数可以返回标准返回值E_FAIL、E_INVALIDARG、E_OUTOFMEMORY和E_UNEXPECTED,以及以下值。

返回代码 说明
S_OK
线程上已成功禁用调用取消。
CO_E_CANCEL_DISABLED
线程上对 CoEnableCallCancellation 的成功 调用比对 CoDisableCallCancellation 的调用成功次数更多。 线程上仍启用取消。

注解

在线程上启用呼叫取消后,从该线程封送同步调用到同一计算机上的对象可能会严重降低性能。 默认情况下,即使取消对象可用,同步调用也无法取消。 若要启用呼叫取消,必须先调用 CoEnableCallCancellation

禁用呼叫取消后,尝试获取指向调用对象的指针将失败。 如果调用线程已具有指向调用对象的指针,则对该对象的调用将失败。

除非希望随时在线程上启用呼叫取消,否则应将对 CoEnableCallCancellation 的 调用与对 CoDisableCallCancellation 的调用配对。 仅当每次成功调用 CoEnableCallCancellation 均通过成功调用 CoDisableCallCancellation 来平衡时,才会禁用 呼叫取消。

调用可取消或不取消,具体取决于调用时线程的状态。 随后启用或禁用调用取消不会对线程上挂起的任何调用产生影响。

如果线程未初始化,然后通过调用 CoUninitialize 和 CoInitialize 重新 初始化线程,则会在线程上禁用调用取消,即使它在线程未初始化时已启用也是如此。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 combaseapi.h (包括 Objbase.h)
Library Ole32.lib
DLL Ole32.dll

另请参阅

CoEnableCallCancellation

ICancelMethodCalls