IPersistStreamInit::Save メソッド (ocidl.h)

指定したストリームにオブジェクトを保存します。

構文

HRESULT Save(
  [in] LPSTREAM pStm,
  [in] BOOL     fClearDirty
);

パラメーター

[in] pStm

オブジェクトを保存するストリームへの IStream ポインター。

[in] fClearDirty

保存後にダーティ フラグをクリアするかどうかを示します。 TRUE の場合は、フラグをクリアする必要があります。 FALSE の場合、フラグは変更されません。

戻り値

このメソッドは、次の値を返すことができます。

リターン コード 説明
S_OK
メソッドは正常に完了しました。
STG_E_CANTSAVE
オブジェクト自体をストリームに保存できませんでした。 このエラーは、たとえば、ストリームにシリアル化できない別のオブジェクトがオブジェクトに含まれていることや、 ISequentialStream::Write 呼び出しがSTG_E_CANTSAVE返されたことを示している可能性があります。
STG_E_MEDIUMFULL
ストレージ デバイスに空き領域がないため、オブジェクトを保存できませんでした。

解説

IPersistStreamInit::Save は、オブジェクトを指定されたストリームに保存し、オブジェクトがダーティ フラグをリセットする必要があるかどうかを示します。

シーク ポインターは、オブジェクトがデータの書き込みを開始するストリーム内の場所に配置されます。 オブジェクトは 、ISequentialStream::Write メソッドを呼び出してデータを書き込みます。

終了時に、シーク ポインターはオブジェクト データのすぐ後に配置する必要があります。 エラーが返された場合、シーク ポインターの位置は未定義です。

実装者へのメモ

IPersistStreamInit::Save メソッドでは、CLSID はストリームに書き込まれません。 呼び出し元は CLSID を記述する必要があります。

IPersistStreamInit::Save メソッドは、ストリーム内で読み取り、書き込み、シークを行うことができます。ただし、エントリのシーク ポインターの前にストリーム内の場所をシークすることはできません。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ocidl.h

関連項目

IPersistStreamInit