次の方法で共有


ダイレクト ターゲットの操作

ダイレクト ターゲット メカニズムを使用すると、ライターは復元時にファイルを再マップできます。 これにより、ライターは次の操作を実行できます。

  • 新しいターゲットの場所を指定します (要求者の IVssBackupComponents::AddNewTarget に似ています)。
  • 特に部分ファイル メカニズムを使用してファイルがバックアップされた場合に、ファイルの必要な部分のみをディスクに復元することで 、ディスク 領域を再利用します。
  • 現在のニーズに合わせてファイル形式を変更します。

ダイレクト ターゲット操作で使用するファイルには、 復元ターゲット がVSS_RT_DIRECTED必要です。

リクエスターがダイレクト ターゲット操作をサポートできることを確立すると、ライター (PreRestore イベントの処理中) は、ファイルを管理するコンポーネント (またはファイルを含むコンポーネント セットを定義するコンポーネント) に対応する IVssComponent::AddDirectedTarget のインスタンスに対して IVssComponent::AddDirectedTarget を使用して、復元時にファイルを再適用する方法を定義します。

IVssComponent::AddDirectedTarget を使用する場合、ライターは、ファイルのバックアップに使用されるファイル名とパス、復元先のファイル名とパス (これらの値は元のファイル名とパスと同じにすることができます)、およびソースと宛先のファイル範囲を指定します。

部分的なファイル操作と同様に、範囲リストは、バックアップするファイルへのオフセットのペア (バイト単位)、復元するセクションの長さ (バイト単位)、コロンで区切られたオフセットと長さ、およびコンマで区切られた各ペアです: Offset1**:Length1,** Offset2**:**Length2。 各値は、16 進数形式または 10 進数形式の 64 ビット整数です。

ライターがダイレクト ターゲット メカニズムを使用してリクエスターがファイルを新しい場所に復元する必要がある場合は、元のファイル名とパスと新しいファイル名とパスを使用して IVssComponent::AddDirectedTarget を呼び出し、オフセットがゼロでファイル サイズ全体と等しい長さのソース宛先範囲を指定します。

たとえば、ライターが 200K ファイルである C:\WriterData\Index.dat を C:\WriterData\OldIndex.dat として復元する必要がある場合、ソースとコピー先の範囲の文字列は "0:204880" になります。

部分的にバックアップされた大きなファイルを再マップするには、リクエスターはファイルのバックアップに使用されるソース範囲と、ファイル サイズを小さくする宛先範囲を使用します。 ソース範囲の情報は、ファイルを管理するコンポーネント (またはファイルを含むコンポーネント セットを定義するコンポーネント) に対応する IVssComponent のインスタンスに対して IVssComponent::GetPartialFile を使用して取得できます。

部分的にバックアップされたファイルが最初に大きなファイルで、ヘッダー (バイト 64 から 512) にレコード数とその他の頻繁に更新される情報が含まれ、ファイルの最後の 65536 バイト (0x1239E7577Aに0x1239E8577Aバイト) の最新のデータが含まれている場合、ライターはソース範囲リストを文字列 "64:448,0x1239E8577A:65536" として指定できます。

ライターが復元されたファイルを再マップしてヘッダーと最新のデータのみを含める場合、範囲リストには文字列 "0:488,488:65536" を指定できます。

復元操作を実際に実行する前に、リクエスターはチェックして、ダイレクト ターゲットサポートが必要なファイルがあるかどうかを確認する必要があります。

これを行うには、リクエスターはまず、IVssBackupComponents::GetWriterComponentsCount と IVssBackupComponents::GetWriterComponents を使用して、バックアップ コンポーネント ドキュメントに格納されているコンポーネントを含むライターを反復処理します。

IVssBackupComponents::GetWriterComponents インターフェイスは、IVssWriterComponentsExt::GetComponents および IVssWriterComponentsExt::GetComponentCount メソッドを提供する IVssWriterComponentsExt::GetComponentCount メソッドを提供する IVssWriterComponentsExt インターフェイスのインスタンスを返すために使用されます。

これにより、要求者は、ファイルを管理するコンポーネント (またはファイルを含むコンポーネント セットを定義するコンポーネント) に対応する IVssComponent のインスタンスに対して、IVssComponent::GetDirectedTargetIVssComponent::GetDirectedTarget を使用して、ダイレクトターゲット候補を取得できます。