OleDoAutoConvert 関数 (ole2.h)
そのオブジェクト クラスの自動変換がレジストリで設定されている場合は、オブジェクトを自動的に新しいクラスに変換します。
構文
HRESULT OleDoAutoConvert(
[in] LPSTORAGE pStg,
[out] LPCLSID pClsidNew
);
パラメーター
[in] pStg
変換するストレージ オブジェクトの IStorage インターフェイスへのポインター。
[out] pClsidNew
変換されるオブジェクトの新しい CLSID へのポインター。 自動変換がなかった場合、これは元のクラスと同じである可能性があります。
戻り値
この関数は、標準の戻り値E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
変換は必要ありません。または、変換が正常に完了しました。 |
|
関数はレジストリからキーを読み取ることができません。 |
この関数は、 OleGetAutoConvert 関数によって返されるエラー値を返すこともできます。 ストレージ オブジェクトとストリーム オブジェクトにアクセスする場合は、考えられるエラーについては 、IStorage::OpenStorage メソッドと IStorage::OpenStream メソッドを参照してください。 既存の CLSID を特定できない場合、またはストレージ オブジェクトを新しい情報で更新できない場合は、その他のエラー戻り値については 、IStream インターフェイスを参照してください。
注釈
OleSetAutoConvert 関数によってレジストリで自動変換が以前に指定されている場合、 OleDoAutoConvert はオブジェクトを自動的に変換します。 オブジェクト変換は、オブジェクトが新しい CLSID に永続的に関連付けられていることを意味します。 自動変換は、通常、古いバージョンで作成されたオブジェクトを自動的に更新できるように、新しいバージョンのオブジェクト アプリケーションのセットアップ プログラムによって指定されます。
OleDoAutoConvert が呼び出されると、ストレージ オブジェクトはアンロードされた状態である必要があります。
オブジェクト変換をサポートするコンテナー アプリケーションでは、オブジェクトを読み込むたびに OleDoAutoConvert を呼び出す必要があります。 コンテナーが OleLoad ヘルパー関数を使用する場合、 OleDoAutoConvert を明示的に呼び出す必要はありません。 これは、OleLoad によって内部的に呼び出されるためです。
OleDoAutoConvert は、最初に OleGetAutoConvert 関数を呼び出すことによって変換が必要かどうかを判断します。変換が必要ない場合は、S_OKを返します。 オブジェクトに変換が必要な場合、 OleDoAutoConvert は新しいオブジェクト アプリケーションをアクティブ化することによってストレージ オブジェクトを変更および変換します。 新しいオブジェクト アプリケーションは既存のデータ形式を読み取りますが、オブジェクト アプリケーションの新しいネイティブ形式でオブジェクトを保存します。
自動的に変換されるオブジェクトが OLE 1 オブジェクトの場合、ItemName 文字列は "\1Ole10ItemName" というストリームに格納されます。このストリームが存在しない場合、オブジェクトの項目名は NULL です。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ole2.h |
Library | Ole32.lib |
[DLL] | Ole32.dll |