復元の初期化の概要
VSS 復元操作を初期化する場合、リクエスターはバックアップ コンポーネント ドキュメントと、バックアップ操作中に作成および保存された関連する各ライター メタデータ ドキュメントを取得する必要があります。 ライターは、リクエスターが生成する Identify イベント の処理でクエリを実行する現在の状態になります。 詳細については、「 VSS での復元処理の概要」を参照してください。
次の表は、復元操作を初期化するために必要なアクションとイベントのシーケンスを示しています。
Requester アクション | イベント | ライター アクション |
---|---|---|
IVssBackupComponents インターフェイスを作成し、それを初期化して復元を管理し、格納されたリクエスター メタデータを読み込みます (「CreateVssBackupComponents、IVssBackupComponents::InitializeForRestore」を参照)。 | なし | なし |
CreateVssExamineWriterMetadata を呼び出して IVssExamineWriterMetadata インターフェイスを作成し、格納されているライター メタデータを使用して読み込みます。 | なし | なし |
ライターとの非同期連絡先を開始する ( 「IVssBackupComponents::GatherWriterMetadata」を参照)。 | 識別 | ライターは、復元をサポートしてイベント処理を開始します。 ライター メタデータ ドキュメントを作成します (「 ライター メタデータ ドキュメントの操作」、 CVssWriter::OnIdentify、 IVssCreateWriterMetadata を参照)。 |
リクエスターは、 ライターが IVssAsync を呼び出して初期化するのを待機します。 | なし | なし |
復元の初期化中のリクエスター アクション
復元の初期化フェーズ中に、リクエスターは、格納されているバックアップ コンポーネント ドキュメントとすべてのライター メタデータ ドキュメントにアクセスできる必要があります。
実装によっては、リクエスターがバックアップ メディアをマウントして読み取り可能にする必要があるか、格納されているメタデータにアクセスするための他のメカニズムが使用可能であることを意味します。
リクエスターは、バックアップを実行したリクエスターのバックアップ コンポーネント ドキュメントを含む格納された XML ドキュメントを使用して、 IVssBackupComponents::InitializeForRestore が情報にアクセスできるバックアップ コンポーネント ドキュメントを初期化します。
バックアップ中の場合と同様に、バックアップ コンポーネント ドキュメントには復元をサポートするための十分な情報がありません。そのため、リクエスターは、バックアップ中に格納されているライター メタデータ ドキュメントにアクセスする必要があります (「 リクエスターによるコンポーネントの使用」を参照)。
リクエスターは、データがバックアップされ、現在復元されるライターごとに CreateVssExamineWriterMetadata を呼び出して、格納されているライター メタデータを取得します。 この関数は、ライターごとに IVssExamineWriterMetadata オブジェクトを作成し、ライターのライター メタデータ ドキュメントを オブジェクトに読み込みます。
バックアップ中と同様に、それ自体とシステムのライターの間の連携を開始するには、要求元が IVssBackupComponents::GatherWriterMetadata を呼び出して Identify イベントを生成する必要があります。 GatherWriterMetadata の完了後に IVssBackupComponents::GatherWriterStatus を呼び出す必要はありません。 Identify イベントの処理に失敗したライターは、IVssBackupComponents::GetWriterMetadataCount および IVssBackupComponents::GetWriterMetadata によって返されるメタデータを提供するライターの一覧には含まれません (ライターの状態の決定に関するページを参照)。
バックアップ操作と同様に、リクエスターは、バックアップ コンポーネント ドキュメントの情報を照会して解析し、それをライター メタデータ ドキュメントのデータと比較して、バックアップされたコンポーネントを決定し、復元するコンポーネントを選択する必要があります (「 復元の準備の概要」を参照してください)。 さらに、リクエスターは、復元用に選択されたバックアップ メディア上のファイルに関する情報と、復元する方法と場所を含む詳細なリストを生成する必要があります。 (「 復元セットの生成」を参照してください)。
そのため、一部のバックアップ アプリケーションでは、ファイルとそれに関連付けられているライター、コンポーネント、復元手順、および場所情報の独自のリスト (独自に最適化された形式で) をバックアップ メディアに格納すると便利な場合があります。 この一覧を使用すると、ライター メタデータ ドキュメントと、復元をサポートするために必要なバックアップ コンポーネント ドキュメントの解析と比較の量を最小限に抑えることができます。
復元の初期化中のライター アクション
復元操作中と同様に、Identify イベントに応答して、VSS は各ライターの仮想ハンドラー メソッド CVssWriter::OnIdentify を呼び出します。
現在のリクエスター以外のアプリケーション (たとえば、システム アプリケーション) は、ライターによって処理される必要がある Identify イベントを生成できることに注意してください。 さらに、ライターが、Identify イベントを生成したアプリケーション を CSVsWriter::OnIdentify 内から決定する方法はありません。
ライターが復元操作の処理中に複数の Identify イベントを受け取る可能性があるため、ライターは CVssWriter::OnIdentify ハンドラーに状態情報を設定しないでください。 代わりに、バックアップ操作中に行われたのと同じアルゴリズムを使用してライター メタデータ ドキュメントを作成する必要があります (詳細については、「 バックアップ初期化中のライター アクション 」を参照してください)。