OleInitialize 関数 (ole2.h)
現在のアパートメントの COM ライブラリを初期化し、コンカレンシー モデルをシングル スレッド アパートメント (STA) として識別し、後述の「解説」セクションで説明する追加機能を有効にします。 アプリケーションは、 CoGetMalloc およびメモリ割り当て関数以外の COM ライブラリ関数を呼び出す前に、COM ライブラリを初期化する必要があります。
構文
HRESULT OleInitialize(
[in] LPVOID pvReserved
);
パラメーター
[in] pvReserved
このパラメーターは予約済みであり、 NULL である必要があります。
戻り値
この関数は、成功したS_OKを返します。 その他の使用可能な値は次のとおりです。
リターン コード | 説明 |
---|---|
|
COM ライブラリはこのアパートメントで既に初期化されています。 |
|
コンピューター上のCOMPOBJ.DLLとOLE2.DLLのバージョンは、相互に互換性がありません。 |
|
以前の CoInitializeEx の呼び出しでは、このアパートメントのコンカレンシー モデルがマルチスレッド アパートメント (MTA) として指定されました。 これは、ニュートラルスレッドアパートメントからシングルスレッドアパートへの変更が発生したことを意味する可能性もあります。 |
注釈
次の機能を使用するアプリケーションでは、COM ライブラリ内の他の関数を呼び出す前に OleInitialize を呼び出す必要があります。
- クリップボード
- ドラッグ アンド ドロップ
- オブジェクトのリンクと埋め込み (OLE)
- インプレース アクティブ化
アパートメントのコンカレンシー モデルを設定した後は、変更できません。 以前にマルチスレッドとして初期化されたアパートメントで 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で導入) |