IPersistStorage::SaveCompleted メソッド (objidl.h)

ストレージ オブジェクトに書き込むことができることをオブジェクトに通知します。 これを行うには、NoScribble モード (ストレージ オブジェクトに書き込む必要がない) から Normal モード (可能な場合) に戻すことができることをオブジェクトに通知します。 オブジェクトは、 IPersistStorage::Save 呼び出しを受信すると NoScribble モードになります。

構文

HRESULT SaveCompleted(
  [in] IStorage *pStgNew
);

パラメーター

[in] pStgNew

保存前のストレージ オブジェクトと異なる場合は、新しいストレージ オブジェクトへの IStorage ポインター。 現在のストレージ オブジェクトが保存操作中に変更されない場合、このポインターは NULL にすることができます。 オブジェクトが HandsOff モードの場合、このパラメーターは NULL 以外である必要があります。

戻り値

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

リターン コード 説明
S_OK
メソッドは正常に完了しました。
E_OUTOFMEMORY
メモリ不足のため、オブジェクトは HandsOff モードまたは NoScribble モードのままでした。 通常、このエラーは、オブジェクトが pStgNew で必要なストリームとストレージ オブジェクトを開けなかった場合に発生します。
E_INVALIDARG
pStgNew パラメーターが無効です。 通常、このエラーは、オブジェクトが HandsOff モードのときに pStgNewNULL の 場合に発生します。
E_UNEXPECTED
オブジェクトは標準モードで、 IPersistStorage::Save または IPersistStorage::HandsOffStorage の以前の呼び出しはありませんでした。

注釈

このメソッドは、通常モードに戻ることができ、そのストレージ オブジェクトにもう一度書き込むことができることをオブジェクトに通知します。 オブジェクトは NoScribble モードまたは HandsOff モードを終了します。

オブジェクトが HandsOff モードから戻る場合、pStgNew パラメーターは NULL 以外である必要があります。 HandsOffFromNormal モードでは、このパラメーターは 、IPersistStorage::HandsOffStorage メソッドによって取り消されたものを置き換える新しいストレージ オブジェクトです。 ストレージ オブジェクト内のデータは、取り消されたストレージ オブジェクトからのデータのコピーです。 HandsOffAfterSave モードでは、データは最後に保存されたデータと同じです。 これは、取り消されたストレージ オブジェクト内のデータと同じではありません。

オブジェクトが NoScribble モードから戻る場合、 pStgNew パラメーターは NULL または NULL 以外にすることができます。 NULL の場合、オブジェクトはもう一度そのストレージ オブジェクトにアクセスできます。 NULL でない場合、コンポーネント オブジェクトは HandsOffStorage メソッドの呼び出しの受信をシミュレートする必要があります。 コンポーネント オブジェクトがこの呼び出しをシミュレートできない場合は、 実際に HandsOffStorage メソッドを呼び出すようにコンテナーを準備する必要があります。

このメソッドは、読み込まれるか実行されている入れ子になったオブジェクトを再帰的に呼び出す必要があります。

このメソッドがエラー コードを返す場合、オブジェクトは標準モードに戻りません。 したがって、コンテナー オブジェクトは異なる保存方法を試みることができます。

要件

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

こちらもご覧ください

IPersistStorage