復元のクリーンアップと終了の概要
復元後、ライターは操作の状態をチェックして、復元されたデータを利用してエラーを処理できるようにします。 要求者は、このアクティビティの完了を待機する必要があります。 詳細については、「 VSS での復元処理の概要」を参照してください。
次の表は、復元操作が行われた後に必要なアクションとイベントのシーケンスを示しています。
Requester アクション | イベント | ライター アクション |
---|---|---|
リクエスターは復元の終了を示します ( 「IVssBackupComponents::P ostRestore」を参照)。 | PostRestore | ライターは復元後のクリーンアップを実行し、非標準の場所に復元された復元エラーとファイルを処理します ( 「CVssWriter::OnPostRestore、 IVssComponent」を参照)。 |
リクエスターはライターを待機して、IVssAsync を使用して PostRestore イベントを処理します。 ライターの状態も確認する必要があります ( IVssBackupComponents::GatherWriterStatus、 IVssBackupComponents::GetWriterStatus を参照)。 | なし | なし |
リクエスターは 、IVssBackupComponents インターフェイスを 解放します。 | なし | なし |
クリーンアップと終了中のリクエスター アクション
この時点で、要求者は、IVssBackupComponents::P ostRestore を呼び出して PostRestore イベントを生成することで、ファイルの復元アクティビティの終了を示します。
リクエスターのアクションはライターの待機に制限されます。これは、最終的なクリーンアップを実行して復元エラーを処理する必要がある場合があり、すべてのライターが PostRestore イベントの処理から戻った後に IVssBackupComponents インターフェイスを解放する必要があります。
クリーンアップと終了中のライター アクション
PostRestore イベントは、仮想メソッド CVssWriter::OnPostRestore によって処理されます。 既定の実装では、アクションを実行せずに 単に true を 返します。 ライターが復元後の状況をより詳細に制御する必要がある場合は、このメソッドをオーバーライドできます。
ライターが CSVsWriter::OnPostRestore で実行できる通常のクリーンアップ (一時ファイルの削除など) に加えて、復元操作の成功または失敗を処理できます。
復元エラー、別の場所に復元されたファイル、および将来の復元の必要性を処理する方法は、ライターの裁量で完全に行われます。 一般的なアクションには、別の場所または新しい場所にあるファイルと現在使用中のファイルの比較、複数のファイルからのデータのマージ、新しいデータ ファイルに接続された新しいセッションの開始などがあります。 VSS には、コンポーネントごとにこれをサポートするための次のメカニズムが用意されています。
- コンポーネントの復元の成功または失敗は、 IVssComponent::GetFileRestoreStatus で確認できます。
- ファイルの復元での代替の場所マッピングの使用は、 IVssComponent::GetAlternateLocationMapping によって示されます。
- 復元が増分であり、さらに復元が必要かどうかを判断するには、 IVssComponent::GetAdditionalRestores を呼び出します。 データの完全な復元を必要とするライターは、このメソッドが false を返すまで再起動しないでください。
- ライターは、IVssComponent::GetNewTargetCount と IVssComponent::GetNewTarget を使用して、要求元が以前に指定されていない場所にファイルを復元する必要があるかどうかを判断できます。
(既定以外の場所へのファイルの復元の詳細については、「 既定以外のバックアップと復元の場所」を参照してください)。
IVssComponent メソッドと同様に、特定のインスタンスによって返される情報は、バックアップ用に明示的に含まれるコンポーネントと、バックアップ サブコンポーネントに暗黙的に含まれるコンポーネントに適用されます。これには、IVssBackupComponents::AddRestoreSubcomponent を使用してリクエスターによって明示的に復元するために含まれるサブコンポーネントも含まれます (詳細については、「Selectability For Restore および Subcomponents の操作」を参照してください)。
ライターはバックアップ コンポーネント ドキュメントにアクセスする必要があるため、ライターの処理が完了するまで、要求元が IVssBackupComponents インターフェイスを解放しないことが重要です。