次の方法で共有


OleDoAutoConvert 関数 (ole2.h)

そのオブジェクト クラスの自動変換がレジストリで設定されている場合は、オブジェクトを自動的に新しいクラスに変換します。

構文

HRESULT OleDoAutoConvert(
  [in]  LPSTORAGE pStg,
  [out] LPCLSID   pClsidNew
);

パラメーター

[in] pStg

変換するストレージ オブジェクトの IStorage インターフェイスへのポインター。

[out] pClsidNew

変換されるオブジェクトの新しい CLSID へのポインター。 自動変換がなかった場合、これは元のクラスと同じである可能性があります。

戻り値

この関数は、標準の戻り値E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および次の値を返すことができます。

リターン コード 説明
S_OK
変換は必要ありません。または、変換が正常に完了しました。
REGDB_E_KEYMISSING
関数はレジストリからキーを読み取ることができません。
 

この関数は、 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

こちらもご覧ください

OleGetAutoConvert

OleSetAutoConvert