使用導向目標

導向的目標機制可讓寫入器在還原時重新對應檔案。 這可讓寫入器執行下列動作:

  • 指定新的目標位置 (類似于要求者的 IVssBackupComponents::AddNewTarget) 。
  • 藉由只將檔案的部分還原至磁片來回收磁碟空間,特別是使用 部分檔案 機制備份檔案時。
  • 變更檔案格式以符合目前的需求。

任何要搭配導向目標作業使用的檔案都必須具有 還原目標 VSS_RT_DIRECTED。

建立要求者可以支援導向目標作業之後,處理PreRestore 事件) 處理 PreRestore事件時 (會針對對應至管理檔案 (的元件,使用IVssComponent::AddDirectedTarget作為對應至管理檔案 (或定義元件集的元件) 集,以定義檔案在還原時重新對應的方式。

在使用 IVssComponent::AddDirectedTarget時,寫入器會指定用來備份檔案的檔案名和路徑、其還原目的地的檔案名和路徑 (這些值可以與原始檔案名稱和路徑) 相同,以及來源和目的地檔案範圍。

與部分檔案作業一樣,範圍清單是檔案中的位移配對,以位元組為單位 (備份) ,以及要 (以位元組為單位還原的區段長度) 、以冒號分隔的位移和長度,以及以逗號分隔的每個配對:Offset1**:Length1,** Offset2**:**Length2 每個值都是十六進位或十進位格式的 64 位整數。

如果寫入器需要使用導向目的機制讓要求者將檔案還原到新位置,它就會呼叫 IVssComponent::AddDirectedTarget ,其原始檔案名和路徑以及新的檔案名和路徑,並指定來源目的地範圍,其位移為零,長度等於整個檔案大小的長度。

例如,如果寫入器需要有 200K 檔案,C:\WriterData\Index.dat 會還原為 C:\WriterData\OldIndex.dat,來源和目的地範圍字串會是 「0:204880」。

若要重新對應大型、部份備份的檔案,要求者會使用用來備份檔案的來源範圍,以及將減少檔案大小的目的地範圍。 您可以使用 IVssComponent::GetPartialFile 取得來源範圍資訊,該實例的 IVssComponent 實例對應至管理檔案 (的元件,或定義包含檔案之元件集的元件集) 。

如果部份備份的檔案最初是一個大型檔案,其標頭為 64-512,包含記錄計數和其他經常更新的資訊,而且在檔案的最後 65536 個位元組中找到其最新的資料—位元組0x1239E8577A至0x1239E7577A,寫入器可以將來源範圍清單指定為字串 「64:448,0x1239E8577A:65536」。

如果寫入器想要重新對應還原的檔案,只包含標頭和最新的資料,範圍清單可能是字串 「0:488,488:65536」。

在實際執行還原作業之前,要求者應該先檢查是否有任何檔案需要導向目標支援。

若要這樣做,要求者會先使用IVssBackupComponents::GetWriterComponentsCount 和 IVssBackupComponents::GetWriterComponents::GetWriterComponents,逐一查看其備份元件檔中的寫入器。

接著會使用IVssBackupComponents::GetWriterComponents介面傳回IVssWriterComponentsExt介面的實例,其提供IVssWriterComponentsExt::GetComponentsExt::GetComponentsExt::GetComponentCount方法,讓要求者取得IVssComponent實例。

這可讓要求者使用IVssComponent::GetDirectedTargetCountIVssComponent::GetDirectedTarget,取得對應至管理檔案 (的元件,或定義包含檔案之元件集的元件集) 的元件。