リクエスターによるコンポーネントの使用

バックアップまたは復元の実行、シャドウ コピーの監視に加えて、リクエスターは、操作するライターのコンポーネントに関する情報を管理する必要があります。 コンポーネントの選択性と論理パスを使用して、バックアップにデータを含めたり除外したり、バックアップ コンポーネント ドキュメントに含めるコンポーネント情報を決定したりできます。

バックアップ中のリクエスター コンポーネントの選択

バックアップ操作中、リクエスターは IVssBackupComponents::GatherWriterMetadata メソッドと IVssBackupComponents::GetWriterMetadata メソッドを使用してライター メタデータ コンポーネント データをインポートします (詳細については、「 バックアップ初期化の概要 」を参照してください)。

IVssExamineWriterMetadata インターフェイスを使用してライター情報を調べた後、リクエスターは、バックアップするライターを決定し、限られた範囲で、特定のライターのコンポーネントのうちバックアップするライターのコンポーネントを決定します。

ライターをバックアップする場合、リクエスターは次の手順を実行します。

  • IVssBackupComponents::AddComponent を使用してコンポーネントをバックアップ コンポーネント ドキュメントに追加するには、バックアップ先祖に対して選択できない、バックアップ コンポーネントに対してライターのすべての非選択を明示的に含める必要があります
  • IVssBackupComponents::AddComponent を使用して、バックアップ コンポーネントに対して選択可能なライターのいずれかを明示的に含めることができます。
  • バックアップ コンポーネントの選択可能なが コンポーネント セットを定義する場合、明示的な包含には、バックアップに対して選択可能かどうかに関係なく、すべてのコンポーネント セットのメンバーが 暗黙的に含まれます 。 これらのコンポーネントは、バックアップ コンポーネント ドキュメントには追加されません。

バックアップ コンポーネント用に選択可能な を追加する場合、またはバックアップの先祖を選択できないバックアップ コンポーネントの場合は選択できないをバックアップ コンポーネント ドキュメントに追加する場合、リクエスターは次を指定します。

  • コンポーネントを管理するライターのインスタンス
  • ライターのクラス識別子
  • コンポーネントの 論理パス ( NULL である可能性があります)
  • コンポーネントの名前

コンポーネントが仕様と一致しない場合は、エラーが返されます。

このようなコンポーネントが存在する場合、VSS はバックアップ コンポーネント ドキュメント内のコンポーネントの IVssComponent インターフェイスを作成します。 この情報は、ライターとリクエスターによってアクセスおよび変更可能になります。 コンポーネント セットを定義する選択可能なコンポーネントの場合、コンポーネントのプロパティだけでなく、コンポーネントに含まれるすべてのサブコンポーネントも記述されます。

暗黙的に追加されたコンポーネントに関する情報は、バックアップ コンポーネントドキュメントでは使用できません。 また、バックアップ コンポーネント ドキュメントにはファイル情報がありません。 この情報を取得するには、リクエスターは、バックアップ コンポーネント ドキュメントで選択した格納されているコンポーネントのコンテキストで、ライター メタデータ ドキュメント (既に読み取られた) を調べる必要があります。

復元中のリクエスター コンポーネントの選択

復元操作中、要求元は、 IVssBackupComponents::GatherWriterMetadata を介してシステム上で現在アクティブなライターからコンポーネント情報をインポートしないでください。これは、現在実行中のプロセスの状態が、バックアップが作成されたときのプロセスの状態を必ずしも反映するとは限らないためです。

Identify イベント を作成し、現在システム上にあるライターとその状態を判断するために、 IVssBackupComponents::GatherWriterMetadata を介して Identify イベント を生成する必要があります。

リクエスターは、初期化中に格納されたバックアップ コンポーネント ドキュメントと、格納されているライター メタデータ ドキュメントを取得します (詳細については、「 復元初期化の概要 」を参照してください)。

バックアップ中にコンポーネントを含めることは、復元の場合とほとんど同じですが、論理パスと共に復元を選択可能と見なす必要がある点を除き、バックアップには選択できません

ただし、いくつかの違いがあります。

  • バックアップ中にコンポーネントが既にバックアップ コンポーネント ドキュメント に明示的に含まれている 場合、復元用 (明示的または暗黙的) に含まれている場合、 IVssBackupComponents::SetSelectedForRestore を使用して、復元用のバックアップ コンポーネント ドキュメントに明示的に追加します。
  • コンポーネントが バックアップに暗黙的に含まれていて 、復元の先祖を選択できない復元では選択できない場合(バックアップの場合は明示的な包含の必要性を意味します)、コンポーネントは明示的に含まれません (つまり、 IVssBackupComponents::SetSelectedForRestore を使用してバックアップ コンポーネント ドキュメントに追加されません)。 このようなコンポーネントは、復元のために暗黙的に選択されていると見なす必要があります。
  • バックアップ用に暗黙的に選択されたコンポーネントのうち (そのコンポーネントがバックアップに選択可能であったかどうかにかかわらず)、 IVssBackupComponents::AddRestoreSubcomponent を使用してバックアップ コンポーネント ドキュメントに追加できるのは、復元に選択可能なコンポーネントのみです。
  • [復元コンポーネントに選択可能] では、バックアップ コンポーネントと同じように、復元用の コンポーネント セット を定義できます。 この選択可能な復元コンポーネントは、復元操作用にこのコンポーネント セットを定義します。

PreRestore イベントの生成前に復元用に明示的に選択されたコンポーネントがないライターは、VSS イベントを受信しません。

要求者とライターは、 IVssComponent インターフェイスを使用して、格納されているコンポーネント情報にアクセスできます。 ライターは、 IVssComponent インターフェイスを使用して、バックアップ コンポーネント ドキュメントに明示的に含まれるコンポーネントの設定の一部を変更して、復元 ( 復元ターゲットなど) をサポートできます。 コンポーネント セットを定義する場合、明示的に含まれるコンポーネントのライターの変更は 、そのサブコンポーネントに反映されます。 さらに、 インターフェイスは、ライターとリクエスターの間で復元の成功と失敗に関する情報を渡すためのメカニズムを提供します。

バックアップ中と同様に、バックアップ コンポーネント ドキュメント自体に復元を実装するための十分な情報がありません。 ここでも、復元するファイルの実際のパスに関する情報を提供し、選択可能なコンポーネント コンポーネント セットの一部である選択できないコンポーネントを検出するため、復元する必要があるライター メタデータ ドキュメントが必要になります。

選択可能性の種類とその使用方法については、「選択可能性と論理パスの操作」を参照してください。

リクエスターによるライター コンポーネント ドキュメント情報の使用

各コンポーネントは、親 ライターのライター クラス ID 、その名前、および 論理パスによって一意に識別されます。

リクエスターは、IVssBackupComponents::GetWriterComponents メソッドによって返される IVssWriterComponentsExt インターフェイスを使用して、格納されている各コンポーネントに関する情報を取得できます。

コンポーネントの名前と論理パス (他の項目の中でも) は、IVssWriterComponentsExt::GetComponent によって返される IVssComponent インターフェイスを介して見つけることができます。

Note

復元フェーズでは、ライターがバックアップ コンポーネント ドキュメントを更新する時間を可能にするために、IVssBackupComponents::P reRestore への呼び出しが返された後にのみ、要求元は IVssWriterComponentsExt::GetComponentsExt::GetComponentCount を呼び出す必要があります。 このような更新の 1 つの例は、復元先を変更することです。

 

格納されている選択可能な各コンポーネントの親ライターに関する情報は、 IVssWriterComponentsExt::GetWriterInfo を使用して確認できます。

この情報を使用すると、ライター メタデータ ドキュメントに対してクエリを実行し、一致するドキュメントを識別できます。 次に、 論理パスを使用して、リクエスターは選択可能なコンポーネントごとに依存する非選択コンポーネントを識別できます。つまり、選択可能なコンポーネントの コンポーネント セットのすべてのメンバーを識別できます。

IVssExamineWriterMetadata インターフェイスを使用すると、リクエスターは、バックアップまたは復元が必要な選択可能なコンポーネントと選択できないコンポーネントの両方について、パスの指定 (IVssWMComponent インターフェイスからの) を含む完全なコンポーネント情報を取得できるようになりました。

これは、リクエスターが独自のバックアップ コンポーネント ドキュメントの状態と、バックアップするライターのライター メタデータ ドキュメントの両方を保存することが重要な理由の 1 つです。

詳細については、「 選択可能性と論理パスの操作 」を参照してください。