请求者对备份组件文档的生命周期负有主要责任。
此控件由 CreateVssBackupComponents返回的 IVssBackupComponents 接口对象的实例执行。
请求者必须在备份或还原之前通过调用 IVssBackupComponents::InitializeForBackup 或 IVssBackupComponents::InitializeForRestore来初始化备份组件文档。 请求者可以将文档初始化为空,也可以加载以前存储的文档副本。
对于备份作,备份组件文档通常初始化为空。 其数据将在处理备份的过程中由系统的编写者合作填充。
对于还原作,备份组件文档通常从初始备份过程中生成的存储文档进行初始化。 这允许还原(结合检查存储的编写器元数据文档)来确定最初备份的数据及其还原方式。
备份可传输卷影副本是此规则的例外。 在这种情况下,可以通过重新分配共享存储设备的逻辑单元,将卷影副本从一个系统(其中创建它与初始备份组件文档一起创建)移动到另一个系统。 若要在这些情况下进行备份,请求者加载存储的备份状态,并从初始系统离开的位置继续。 (有关详细信息,请参阅 导入可传输卷影复制卷。)
在处理备份的过程中,请求者会根据哪些组件被标记为 可选择备份、组件的 逻辑路径及其自己的内部逻辑来确定实际复制哪些组件。
某些组件将在备份作中显式包含;有关该组件的信息将添加到备份组件文档。 其他 将隐式包含在备份 中;有关添加的组件的信息不会添加到备份组件文档中。
将显式添加写入器对于备份组件的所有不可选择的备份组件,其逻辑路径中没有可选择的上级,并且对于请求者选择的备份组件,将显式添加这些组件。
如果备份组件在逻辑路径中具有可选择的上级,则可以隐式添加备份组件的不可选择和可选择的,这在备份中显式包含。 这些组件(子组件)是 组件集的成员, 由其可选择的祖先定义。
处理还原作时,请求者使用 可选择性来还原,而不是将备份与逻辑路径信息和自己的内部逻辑结合使用来决定要还原的文件。
如果已隐式添加到备份的组件现在要显式添加到还原中,则请求者将使用该组件的信息更新备份组件文档。
通过 IVssComponent 接口的实例,请求者和编写器都可以获取有关存储组件的信息。
它通过 IVssComponent 接口,编写器可以查询和(直到 PostSnapshot 末尾和 PostRestore 事件)修改备份组件文档中的信息。
当 CVssWriter::OnPrepareBackup、CVssWriter::OnPreRestore、CVssWriter::OnPostSnapshot、CV 调用了sWriter::OnBackupComplete或 CVssWriter::OnPostRestore 事件处理程序,编写器接收 IVssWriterComponents 接口的实例。
请注意,在生成 BackupComplete 事件时,备份组件文档是只读的,因此 CVssWriter::OnBackupComplete 无法使用 IVssComponent 接口对其进行修改。
从 IVSSWriterComponents 接口中,编写器可以检索 IVssComponent 接口的实例,该接口允许它访问显式添加到备份组件文档的所有组件并更改其状态。 有关详细信息,请参阅 VSS 下处理备份的概述,以及 在 VSS下处理还原的概述。
IVssBackupComponents 接口发布时,备份组件文档将从内存中删除,并且必须使用 IVssBackupComponents::SaveAsXML存储,否则其所有信息都将丢失。
此外,当正确发布 IVssBackupComponents 文档时,将生成 BackupShutdown 事件,并删除自动释放卷影副本。