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

另请参阅

CoDecrementMTAUsage