CoDisableCallCancellation 函数 (combaseapi.h)
撤消对 CoEnableCallCancellation 的调用的操作。 当对 CoEnableCallCancellation 的所有调用都通过对 CoDisableCallCancellation 的调用进行均衡时,禁用取消调用线程上的同步 调用。
语法
HRESULT CoDisableCallCancellation(
[in, optional] LPVOID pReserved
);
参数
[in, optional] pReserved
此参数是保留的,必须为 NULL。
返回值
此函数可以返回标准返回值E_FAIL、E_INVALIDARG、E_OUTOFMEMORY和E_UNEXPECTED,以及以下值。
返回代码 | 说明 |
---|---|
|
线程上已成功禁用调用取消。 |
|
线程上对 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 |