バックアップ コンポーネント ドキュメントのライフ サイクル
要求者は、バックアップ コンポーネント ドキュメントのライフ サイクルに対して主な責任を負います。
このコントロールは、 CreateVssBackupComponents によって返される IVssBackupComponents インターフェイス オブジェクトのインスタンスによって実行 されます。
要求元は、 IVssBackupComponents::InitializeForBackup または IVssBackupComponents::InitializeForRestore を呼び出して、バックアップまたは復元の前にバックアップ コンポーネント ドキュメントを初期化する必要があります。 要求者は、ドキュメントを空として初期化するか、以前に保存したドキュメントのコピーを読み込むことができます。
バックアップ操作の場合、バックアップ コンポーネント ドキュメントは通常、空として初期化されます。 そのデータは、バックアップの処理中にシステムのライターからの協力を得て入力されます。
復元操作の場合、バックアップ コンポーネント ドキュメントは通常、初期バックアップ中に生成された保存されたドキュメントから初期化されます。 これにより、復元 (格納されているライター メタデータ ドキュメントの検査と組み合わせて) を使用して、最初にバックアップされたデータとその復元方法を決定できます。
トランスポート可能なシャドウ コピーのバックアップは、この規則の例外です。 この場合、シャドウ コピーは、共有ストレージ デバイスの論理ユニットを再割り当てすることによって、あるシステム (最初のバックアップ コンポーネント ドキュメントと共に作成された) から別のシステムに移動された可能性があります。 このような状況でバックアップを行うために、リクエスターは格納されているバックアップ状態を読み込み、最初のシステムが中断した場所から続行します。 (詳細については、「 Importing Transportable Shadow Copied Volumes」を参照してください)。
バックアップを処理する過程で、リクエスターは、バックアップに 選択可能としてマークされているコンポーネント、コンポーネントの 論理パス、および独自の内部ロジックに基づいて、実際にコピーするコンポーネントを決定します。
一部のコンポーネントは、バックアップ操作 に明示的に含まれます 。コンポーネントに関する情報は、バックアップ コンポーネント ドキュメントに追加されます。 他のユーザーは 、バックアップに暗黙的に含まれます 。追加されたコンポーネントに関する情報は、バックアップ コンポーネント ドキュメントには追加されません。
論理パスに選択可能な先祖がないバックアップ コンポーネントと、リクエスターが選択したバックアップ コンポーネントに対して選択可能なライターはすべて、明示的に追加されます。
バックアップ コンポーネントが論理パスに選択可能な先祖 (明示的にバックアップに含まれている) がある場合は、選択できないコンポーネントと選択可能なバックアップ コンポーネントの両方を暗黙的に追加できます。 これらのコンポーネント (サブコンポーネント) は、選択可能な先祖によって定義された コンポーネント セット のメンバーです。
復元操作を処理する場合、リクエスターは、復元するファイルを決定する論理パス情報と独自の内部ロジックと組み合わせてバックアップを選択する代わりに、復元の 選択性 を使用します。
バックアップに暗黙的に追加されたコンポーネントが復元に明示的に追加されるようになった場合、リクエスターはそのコンポーネントの情報を使用してバックアップ コンポーネント ドキュメントを更新します。
格納されているコンポーネントに関する情報は、 IVssComponent インターフェイスのインスタンスを介して要求者とライターの両方で使用できます。
ライターがクエリを実行できる IVssComponent インターフェイスを使用し、( PostSnapshot イベントと PostRestore イベントが終了するまで) バックアップ コンポーネント ドキュメントの情報を変更できます。
CVssWriter::OnPrepareBackup、CVssWriter::OnPreRestore、CVssWriter::OnPostSnapshot、CVssWriter::OnBackupComplete、または CVssWriter::OnPostRestore イベント ハンドラーが呼び出されると、ライターは IVssWriterComponents インターフェイスのインスタンスを受け取ります。
BackupComplete イベントが生成されると、バックアップ コンポーネント ドキュメントは読み取り専用になります。そのため、CSVsWriter::OnBackupComplete では IVssComponent インターフェイスを使用して変更することはできません。
IVSSWriterComponents インターフェイスから、ライターは IVssComponent インターフェイスのインスタンスを取得できます。これにより、バックアップ コンポーネント ドキュメントに明示的に追加されたすべてのコンポーネントにアクセスし、その状態を変更できます。 詳細については、「VSS でのバックアップの処理の概要」および「VSS での復元の処理の概要」を参照してください。
バックアップ コンポーネント ドキュメントは、 IVssBackupComponents インターフェイスが解放されるとメモリから削除され、 IVssBackupComponents::SaveAsXML を使用して保存する必要があります。または、それらの情報がすべて失われます。
さらに、 IVssBackupComponents ドキュメントが正しくリリースされると、 BackupShutdown イベントが生成され、自動リリースシャドウ コピー が削除されます。