coIncrementMTAUsage 函数 (combaseapi.h)
在没有 MTA 线程运行时,使 MTA 支持保持活动状态。
语法
HRESULT CoIncrementMTAUsage(
[out] CO_MTA_USAGE_COOKIE *pCookie
);
参数
[out] pCookie
接收 CoDecrementMTAUsage 函数 Cookie 的 PVOID 变量的地址;如果调用失败,则为 NULL。
返回值
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
CoIncrementMTAUsage 函数使客户端能够创建 MTA 辅助角色,并在退出进程之前等待其完成。
CoIncrementMTAUsage 函数可确保系统不会释放与 MTA 支持相关的资源,即使 MTA 线程计数为 0 也是如此。
成功后,仅调用 CoDecrementMTAUsage 一次。 失败时,不要调用 CoDecrementMTAUsage 函数。
请勿在进程关闭期间或在 dllmain 中调用 CoIncrementMTAUsage 。 可以在调用之前调用 CoIncrementMTAUsage 以启动关闭过程。
可以从一个线程调用 CoIncrementMTAUsage,从另一个线程调用 CoDecrementMTAUsage,前提是将 CoIncrementMTAUsage 先前返回的 Cookie 传递给 CoDecrementMTAUsage。
如果 MTA 尚不存在,CoIncrementMTAUsage 将创建 MTA。 CoIncrementMTAUsage 将当前线程放入 MTA(如果当前线程尚未位于单元中)
可以在以下情况下使用 CoIncrementMTAUsage :
- 即使所有工作线程都处于空闲状态,你也希望服务器使 MTA 保持活动状态。
- API 实现需要初始化 COM,但没有有关当前线程是否已在单元中的信息,并且不需要当前线程进入特定单元。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | combaseapi.h |
Library | Ole32.lib |
DLL | Ole32.dll |