CoInitializeEx 関数 (combaseapi.h)
呼び出し元のスレッドが使用する COM ライブラリを初期化し、スレッドのコンカレンシー モデルを設定し、必要に応じてスレッドの新しいアパートメントを作成します。
Windows ランタイム API を使用する場合、または COM コンポーネントと Windows ランタイム コンポーネントの両方を使用する場合は、CoInitializeEx ではなく、Windows::Foundation::Initialize を呼び出してスレッドを初期化する必要があります。 Windows::Foundation::Initialize は COM コンポーネントに使用するのに十分です。
構文
HRESULT CoInitializeEx(
[in, optional] LPVOID pvReserved,
[in] DWORD dwCoInit
);
パラメーター
[in, optional] pvReserved
このパラメーターは予約されており、NULL
[in] dwCoInit
スレッドのコンカレンシー モデルと初期化オプション。 このパラメーターの値は、COINIT 列挙型から取得されます。 COINIT の値を組み合わせて使用できますが、COINIT_APARTMENTTHREADEDフラグとCOINIT_MULTITHREADEDフラグの両方を設定することはできません。 既定値は COINIT_MULTITHREADED です。
戻り値
この関数は、E_INVALIDARG、E_OUTOFMEMORY、およびE_UNEXPECTEDの標準戻り値と、次の値を返すことができます。
リターン コード | 形容 |
---|---|
|
COM ライブラリは、このスレッドで正常に初期化されました。 |
|
COM ライブラリは、このスレッドで既に初期化されています。 |
|
以前の CoInitializeEx 呼び出、このスレッドに互換性のないコンカレンシー モデルを指定しました。 これは、ニュートラルスレッドのアパートメントからシングルスレッドアパートメントへの変更が発生したことを示している可能性もあります。 |
備考
CoInitializeEx は少なくとも 1 回呼び出す必要があり、通常は COM ライブラリを使用するスレッドごとに 1 回だけ呼び出されます。 同じスレッド CoInitializeEx に対する複数の呼び出しは、同じコンカレンシー フラグを渡す限り許可されますが、後続の有効な呼び出しではS_FALSEが返されます。
コンカレンシー フラグが一致しない場合、呼び出しは失敗し、RPC_E_CHANGED_MODEを返します。
(この規則の目的上、CoInitialize を
標準アロケーターへのポインターとメモリ割り当て関数を取得するには、CoGetMalloc
シングル スレッド アパートメント (STA) で作成されたオブジェクトは、アパートメントのスレッドからのみメソッド呼び出しを受け取るので、呼び出しはシリアル化され、メッセージ キューの境界にのみ到達します (PeekMessage または SendMessage 関数が呼び出されたとき)。
マルチスレッド アパートメント (MTA) 内の COM スレッドで作成されたオブジェクトは、いつでも他のスレッドからメソッド呼び出しを受信できる必要があります。 通常、オブジェクトのデータの保護に役立つ重要なセクション、セマフォ、ミューテックスなどの同期プリミティブを使用して、マルチスレッド オブジェクトのコードに何らかの形式のコンカレンシー制御を実装します。
ニュートラル スレッド アパートメント (NTA) で実行するように構成されたオブジェクトが STA または MTA のいずれかのスレッドによって呼び出されると、そのスレッドは NTA に転送されます。 その後、このスレッドが CoInitializeEx
OLE テクノロジはスレッド セーフではないため、OleInitialize 関数は、COINIT_APARTMENTTHREADED フラグ CoInitializeEx を呼び出します。 その結果、マルチスレッド オブジェクトコンカレンシー用に初期化されたアパートメントでは、OleInitializeで有効な機能
インプロセス サーバーの読み込みまたはアンロードの順序を制御する方法がないため、
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | combaseapi.h (Objbase.h を含む) |
ライブラリ | Ole32.lib |
DLL | Ole32.dll |