次の方法で共有


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 スレッド数が 0 になった場合でも、MTA サポートに関連するリソースがシステムによって解放されません。

成功したら、 CoDecrementMTAUsage を 1 回だけ呼び出します。 失敗した場合は、 CoDecrementMTAUsage 関数を 呼び出さないでください。

プロセスのシャットダウン中や dllmain 内で CoIncrementMTAUsage を 呼び出さないでください。 呼び出しの前に CoIncrementMTAUsage を呼び出して、シャットダウン プロセスを開始できます。

CoIncrementMTAUsage によって以前に返された Cookie が CoDecrementMTAUsage に渡されている限り、あるスレッドから CoIncrementMTAUsage を呼び出し、別のスレッドから CoDecrementMTAUsage を呼び出すことができます。

MTA がまだ存在しない場合は、CoIncrementMTAUsage によって MTA が作成されます。 CoIncrementMTAUsage は、現在のスレッドがまだアパートメント内にない場合に、現在のスレッドを MTA に配置します

CoIncrementMTAUsage は、次の場合に使用できます。

  • すべてのワーカー スレッドがアイドル状態の場合でも、サーバーで MTA を維持する必要があります。
  • API 実装では COM を初期化する必要がありますが、現在のスレッドが既にアパートメント内にあり、現在のスレッドが特定のアパートメントに入る必要があるかどうかに関する情報はありません。

要件

要件
対象プラットフォーム Windows
ヘッダー combaseapi.h
Library Ole32.lib
[DLL] Ole32.dll

こちらもご覧ください

CoDecrementMTAUsage