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で導入) |