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)
  • インプレース アクティブ化
OleInitialize、CoInitializeEx を内部的に呼び出して、現在のアパートメントの 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