復元の準備の概要
復元の準備中に、リクエスターは、格納されているライター メタデータ ドキュメントを、取得した独自のバックアップ コンポーネント ドキュメントと組み合わせて使用して、復元する内容とその方法を決定します。 詳細については、「 VSS での復元の処理の概要」を参照してください。
復元候補コンポーネントの選択に続いて、システムで現在実行されているライターは、リクエスターのバックアップ コンポーネント ドキュメントにアクセスします。 ライターは、このアクセスを使用して、復元によるサービスの実行に最小限の困難を引き起こす方法を示します。
これが完了すると、リクエスターは、復元する必要があるファイルと、復元する場所と方法を決定するのに十分な情報を持ちます。 (詳細については、「 復元セットの生成」を参照してください)。
次の表は、復元操作の準備に必要な一連のアクションとイベントを示しています。
復元の準備中のリクエスター アクション
復元の候補となるコンポーネントを特定するには、要求元が次の操作を行う必要があります。
- バックアップの作成に使用する コンポーネントとコンポーネント セット 構造を確立します。
- 復元に対するコンポーネントの 選択性を調べます。
- 含めるコンポーネントを選択するには、選択性ガイドライン (復元とサブコンポーネントの選択性の使用) を使用します。
- コンポーネント ファイル セット 情報を使用して、バックアップ メディア上のどのファイルを復元する必要があるかどうかを判断します。
これを行うには、リクエスターは、格納されているバックアップ コンポーネント ドキュメント に明示的に含まれている コンポーネントを調べる必要があります。 このコンポーネント情報は、ライター情報と IVssComponent インターフェイスのインスタンスの両方を取得できる IVssWriterComponentsExt インターフェイスのインスタンスを返す IVssBackupComponents::GetWriterComponents を使用してライターごとに使用できます。
他の場所で説明したように (リクエスターによるコンポーネントの使用)、バックアップ コンポーネント ドキュメントと IVssComponent インターフェイスには、バックアップをサポートするための十分な情報が含まれていません。 したがって、リクエスターは、 IVssExamineWriterMetadata を使用して、対応する格納されているライター メタデータ ドキュメントを調べる必要があります (ライター 識別情報を参照)。
各ライターが管理するコンポーネントの数は、 IVssExamineWriterMetadata::GetFileCounts によって返されます。 要求者は、 IVssExamineWriterMetadata::GetComponent を使用して、ライターが管理する各コンポーネントの IVssWMComponent インターフェイスを取得できます。
バックアップパスと論理パスに対するコンポーネントの選択可能性を調べることで (「選択性と論理パスの操作」を参照)、リクエスターは、バックアップ時コンポーネント セット (明示的に含まれるコンポーネント) を定義したコンポーネントと、それらのセットのサブコンポーネント メンバー (暗黙的に含まれるコンポーネント) を識別できます。
要求者は、IVssBackupComponents::SetSelectedForRestore または IVssBackupComponents::AddRestoreSubcomponents を使用して、コンポーネントを明示的に復元するかどうかを、バックアップ コンポーネント ドキュメントで示します。 方法の選択は、コンポーネントの最初のバックアップ方法と 復元の選択可能性によって異なります。 復元用に明示的に含まれるこれらのコンポーネントは、暗黙的に含まれる他のコンポーネントを指定します (詳細については、「 復元とサブコンポーネントの選択性の操作 」を参照してください)。
リクエスターは、 IVssBackupComponents::SetSelectedForRestore または IVssBackupComponents::AddRestoreSubcomponents を使用して復元するために現在実行中のライターのコンポーネントを明示的に含めずに使用できます。 この場合、そのライターは復元操作の残りの部分で VSS イベントを受信しません。
IVssBackupComponents::SetSelectedForRestore または IVssBackupComponents::AddRestoreSubcomponent を明示的に使用して、現在実行されていないライターのコンポーネントを選択すると、VSS_E_OBJECT_NOT_FOUND エラーが返されます。 欠落 しているライターのデータを復元 する方法については、「ライター参加なしで復元する」を参照してください。
ライターが動作する完全な情報をライターに提供できるようにするには、ライター固有の復元オプションと増分復元の表示を、要求者が IVssBackupComponents::SetRestoreOptions と IVssBackupComponents::SetAdditionalRestores に呼び出すことで、それぞれライターに送信できます。
この時点で、リクエスターは準備を完了し、IVssBackupComponents::P reRestore を呼び出して PreRestore イベントを生成し、ライターが実際の復元の準備をできるようにします。
復元の準備中のライター アクション
復元操作のライターの準備は、仮想メソッド CVssWriter::OnPreRestore を使用して PreRestore イベントを処理するときに発生します。 既定の実装では、アクションを実行せずに が返されるだけです。 ライターは、既定の実装をオーバーライドして、次の方法でより多くの制御を実行することを選択できます。
イベント ハンドラー CVssWriter::OnPreRestore は IVssWriterComponents のインスタンスを受け取ります。このインスタンスから、バックアップ中にバックアップ コンポーネント ドキュメントに明示的に含まれるコンポーネントの IVssComponent インターフェイスを取得できます。
バックアップ操作に暗黙的に含まれ、バックアップ コンポーネント セットを定義したコンポーネントに対応する IVssComponent のインスタンスを使用して、復元に明示的に含まれるサブコンポーネントに関する情報。
IVssComponent::IsSelectedForRestore メソッドは、バックアップ コンポーネントに明示的に含まれる を復元するかどうかを判断するために使用されます。
バックアップ サブコンポーネントが復元に明示的に含まれているかどうかを判断するために、ライターは IVssComponent::GetRestoreSubcomponent を使用します。
ライターは、各コンポーネントの ファイル セット を調べて、復元をサポートするためにアクションを実行する必要があるかどうかを判断する必要があります。 ライターは、現在のファイルを上書きするかどうか、または新しい場所への復元が必要かどうかを評価する必要があります。 アクションには、次のものが含まれます。
- 復元操作を制御するライターまたはリクエスター固有のオプションの取得と処理 ( IVssComponent::GetRestoreOptions を参照)
- 現在開いているファイルを閉じて書き込み可能にする
- 復元先を更新する (たとえば、別の場所のマッピングへの復元を強制するため)。 「IVssComponent::SetRestoreTarget」を参照してください。
- プライベート メタデータを使用したリクエスターとの通信 ( IVssComponent::SetRestoreMetadata を参照)
- ダイレクト ターゲットの定義を再マップしてファイルを復元する必要があることを示します (IVssComponent::AddDirectedTarget を参照してください)
使用される IVssComponent のインスタンスは、バックアップ中にバックアップ コンポーネント ドキュメントにコンポーネントが明示的に含まれるか、そのコンポーネントがメンバーであったバックアップ コンポーネント セットを定義するコンポーネントによって作成されます (「 復元とサブコンポーネントの選択性の操作」を参照してください)。