OleSave 関数 (ole2.h)

トランザクション モードで開かれたオブジェクトを、指定したストレージ オブジェクトに保存します。

構文

HRESULT OleSave(
  [in] LPPERSISTSTORAGE pPS,
  [in] LPSTORAGE        pStg,
  [in] BOOL             fSameAsLoad
);

パラメーター

[in] pPS

保存するオブジェクトの IPersistStorage インターフェイスへのポインター。

[in] pStg

pPS で示されたオブジェクトを保存する宛先ストレージ オブジェクト上の IStorage インターフェイスへのポインター。

[in] fSameAsLoad

TRUE はpStg がオブジェクトの読み込み元または作成元のストレージ オブジェクトと同じであることを示します。 FALSE はpStg が読み込まれたか、別のストレージ オブジェクトから作成されたことを示します。

戻り値

この関数は、成功したS_OKを返します。 その他の可能な値は次のとおりです。

リターン コード 説明
STGMEDIUM_E_FULL
ディスク領域がないため、オブジェクトを保存できませんでした。

この関数は、 IPersistStorage::Save メソッドによって返されるエラー値を返すこともできます。

注釈

OleSave ヘルパー関数は、オブジェクトがトランザクション モードで開き、OLE 提供の複合ファイルの実装を使用する指定されたストレージ オブジェクトに保存される一般的な状況を処理します。 トランザクション モードは、IStorage::Commit または IStorage::Revert のいずれかが呼び出されるまで、オブジェクトへの変更がバッファーに格納されることを意味します。 呼び出し元は、 IPersistStorage インターフェイスと IStorage インターフェイスを直接呼び出すことで、他の状況を処理できます。

OleSave は次の処理を行います。

  • IPersist::GetClassID メソッドを呼び出して、オブジェクトの CLSID を取得します。
  • WriteClassStg 関数を使用して、ストレージ オブジェクトに CLSID を書き込 みます。
  • IPersistStorage::Save メソッドを呼び出してオブジェクトを保存します。
  • 保存にエラーが発生しなかった場合。 は IStorage::Commit メソッドを呼び出して変更をコミットします。
メモ 静的オブジェクトは CONTENTS というストリームに保存されます。 静的メタファイル オブジェクトは "配置可能なメタファイル形式" で保存され、静的 DIB データは "DIB ファイル形式" で保存されます。 これらの形式は、メタファイルと DIB の OLE 標準として定義されています。 IStream インターフェイスまたはファイル (つまり、IDataObject::GetDataHere を介して) を使用して転送されるすべてのデータは、これらの形式である必要があります。 また、既定のファイル形式がメタファイルまたは DIB であるすべてのオブジェクトは、これらの標準形式を使用して CONTENTS ストリームにデータを書き込む必要があります。
 

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ole2.h
Library Ole32.lib
[DLL] Ole32.dll
API セット ext-ms-win-com-ole32-l1-1-3 (Windows 10 バージョン 10.0.10240 で導入)

こちらもご覧ください

IPersistStorage

IStorage