次の方法で共有


復元の準備の概要

復元の準備中に、リクエスターは、格納されているライター メタデータ ドキュメントを、取得した独自のバックアップ コンポーネント ドキュメントと組み合わせて使用して、復元する内容とその方法を決定します。 詳細については、「 VSS での復元の処理の概要」を参照してください。

復元候補コンポーネントの選択に続いて、システムで現在実行されているライターは、リクエスターのバックアップ コンポーネント ドキュメントにアクセスします。 ライターは、このアクセスを使用して、復元によるサービスの実行に最小限の困難を引き起こす方法を示します。

これが完了すると、リクエスターは、復元する必要があるファイルと、復元する場所と方法を決定するのに十分な情報を持ちます。 (詳細については、「 復元セットの生成」を参照してください)。

次の表は、復元操作の準備に必要な一連のアクションとイベントを示しています。

リクエスター アクション イベント ライター アクション
バックアップ操作 に明示的に含まれる コンポーネントに関する情報をバックアップ コンポーネント ドキュメントから取得します ( 「IVssBackupComponents::GetWriterComponents」を参照)。 取得したライター メタデータ ドキュメントを調べて、バックアップに明示的に含まれるコンポーネントの詳細と、 暗黙的に含まれる サブコンポーネントの検索について確認します。 (「IVssExamineWriterMetadata,IVssWMComponent」を参照してください)。
なし なし
復元するコンポーネントとコンポーネント セットを選択します ( 「IVssBackupComponents::SetSelectedForRestore 」および 「IVssBackupComponents::AddRestoreSubcomponent」を参照してください)。 なし なし
リクエスターは、ライターがバックアップ コンポーネント ドキュメントを更新することを許可し、必要に応じて、任意の特別な復元オプションをライターに伝える場合があります。 ( 「IVssBackupComponents::SetRestoreOptionsIVssBackupComponents::AddNewTarget、および IVssBackupComponents::P reRestore」を参照してください)。 PreRestore ライターは、復元への参加を決定し、復元するファイルを準備し、必要に応じてバックアップ コンポーネント ドキュメントを変更します。 ( 「CVssWriter::OnPreRestoreIVssComponentIVssComponent::IsSelectedForRestoreIVssComponent::GetRestoreOptionsIVssComponent::SetRestoreTargetIVssComponent::SetRestoreMetadataIVssComponent::AddDirectedTarget」を参照してください)。
リクエスターは、ライターが IVssAsync を使用して PreRestore イベントを処理するのを待機します。 また、ライターの状態も確認する必要があります。 ( 「IVssBackupComponents::GatherWriterStatus,IVssBackupComponents ::GetWriterStatus」を参照してください)。 なし なし

 

復元の準備中のリクエスター アクション

復元の候補となるコンポーネントを特定するには、要求元が次の操作を行う必要があります。

これを行うには、リクエスターは、格納されているバックアップ コンポーネント ドキュメント に明示的に含まれている コンポーネントを調べる必要があります。 このコンポーネント情報は、ライター情報と 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::SetRestoreOptionsIVssBackupComponents::SetAdditionalRestores に呼び出すことで、それぞれライターに送信できます。

この時点で、リクエスターは準備を完了し、IVssBackupComponents::P reRestore を呼び出して PreRestore イベントを生成し、ライターが実際の復元の準備をできるようにします。

復元の準備中のライター アクション

復元操作のライターの準備は、仮想メソッド CVssWriter::OnPreRestore を使用して PreRestore イベントを処理するときに発生します。 既定の実装では、アクションを実行せずに が返されるだけです。 ライターは、既定の実装をオーバーライドして、次の方法でより多くの制御を実行することを選択できます。

イベント ハンドラー CVssWriter::OnPreRestoreIVssWriterComponents のインスタンスを受け取ります。このインスタンスから、バックアップ中にバックアップ コンポーネント ドキュメントに明示的に含まれるコンポーネントの IVssComponent インターフェイスを取得できます。

バックアップ操作に暗黙的に含まれ、バックアップ コンポーネント セットを定義したコンポーネントに対応する IVssComponent のインスタンスを使用して、復元に明示的に含まれるサブコンポーネントに関する情報。

IVssComponent::IsSelectedForRestore メソッドは、バックアップ コンポーネントに明示的に含まれる を復元するかどうかを判断するために使用されます。

バックアップ サブコンポーネントが復元に明示的に含まれているかどうかを判断するために、ライターは IVssComponent::GetRestoreSubcomponent を使用します。

ライターは、各コンポーネントの ファイル セット を調べて、復元をサポートするためにアクションを実行する必要があるかどうかを判断する必要があります。 ライターは、現在のファイルを上書きするかどうか、または新しい場所への復元が必要かどうかを評価する必要があります。 アクションには、次のものが含まれます。

使用される IVssComponent のインスタンスは、バックアップ中にバックアップ コンポーネント ドキュメントにコンポーネントが明示的に含まれるか、そのコンポーネントがメンバーであったバックアップ コンポーネント セットを定義するコンポーネントによって作成されます (「 復元とサブコンポーネントの選択性の操作」を参照してください)。