OleInitialize 関数 (ole2.h)

現在のアパートメントで COM ライブラリを初期化し、コンカレンシー モデルをシングルスレッド アパートメント (STA) として識別し、以下の「備考」セクションで説明する追加機能を有効にします。 アプリケーションは、 CoGetMalloc 関数とメモリ割り当て関数以外の COM ライブラリ関数を呼び出す前に、COM ライブラリを初期化する必要があります。

構文

HRESULT OleInitialize(
  [in] LPVOID pvReserved
);

パラメーター

[in] pvReserved

このパラメーターは予約されており、 NULL である必要があります。

戻り値

この関数は、成功したS_OKを返します。 その他の可能な値は次のとおりです。

リターン コード 説明
S_FALSE
COM ライブラリは、このアパートメントで既に初期化されています。
OLE_E_WRONGCOMPOBJ
コンピューター上の COMPOBJ.DLL と OLE2.DLL のバージョンは相互に互換性がありません。
RPC_E_CHANGED_MODE
以前の CoInitializeEx の呼び出しでは、このアパートメントのコンカレンシー モデルがマルチスレッド アパートメント (MTA) として指定されました。 これは、ニュートラル スレッド アパートメントからシングル スレッド アパートメントへの変更が発生した可能性もあります。

注釈

次の機能を使用するアプリケーションでは、COM ライブラリ内の他の関数を呼び出す前に OleInitialize を呼び出す必要があります。

  • クリップボードのトピック
  • ドラッグ アンド ドロップ
  • オブジェクトのリンクと埋め込み (OLE)
  • インプレース アクティブ化
OleInitializeCoInitializeEx を内部的に呼び出して、現在のアパートメントの COM ライブラリを初期化します。 OLE 操作はスレッド セーフではないので、 OleInitialize はコンカレンシー モデルをシングル スレッド アパートメントとして指定します。

アパートメントのコンカレンシー モデルが設定されると、それを変更することはできません。 以前にマルチスレッドとして初期化されたアパートメントでの OleInitialize の呼び出しは失敗し、RPC_E_CHANGED_MODE返されます。

標準アロケーターとメモリ割り当て関数へのポインターを取得するには、 CoGetMalloc を除くライブラリ関数のいずれかを呼び出す前に、アパートメントで COM ライブラリを初期化する必要があります。

通常、COM ライブラリはアパートメントで 1 回だけ初期化されます。 アパートメントのコンカレンシー モデルを変更しようとせず、S_FALSEを返す限り、後続の呼び出しは成功します。 COM ライブラリを正常に閉じるには、 oleInitialize の呼び出しが成功するたびに、S_FALSEを返すものも含めて、 対応する OleUninitialize の呼び出しとバランスを取る必要があります。

インプロセス サーバーの読み込みまたはアンロードの順序を制御する方法がないため、DllMain 関数から OleInitialize または OleUninitialize を呼び出さないでください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ole2.h
Library Ole32.lib
[DLL] Ole32.dll
API セット ext-ms-win-com-ole32-l1-1-0 (Windows 8で導入)

こちらもご覧ください

CoInitializeEx

OleInitialize

OleUninitialize