请求者使用组件

除了执行备份或还原以及监督卷影副本外,请求者还必须管理与它交互的编写器组件的相关信息。 组件可选择性和逻辑路径用于在备份中包含或排除数据,以及确定备份组件文档中包含哪些组件信息。

备份期间请求者组件选择

在备份操作期间,请求者使用 IVssBackupComponents::GatherWriterMetadataIVssBackupComponents::GetWriterMetadata 方法导入编写器元数据组件数据 (有关) 的详细信息,请参阅 备份初始化概述

使用 IVssExamineWriterMetadata 接口检查编写器信息后,请求者决定将备份哪些编写器,并在有限范围内决定将备份哪个给定编写器组件。

备份编写器时,请求者:

在向备份组件文档添加备份组件的可选选项或为备份组件添加不可选择的备份组件(不可用于备份上级)时,请求者指定以下各项:

  • 管理组件的编写器实例
  • 编写器的类标识符
  • 组件 (的 逻辑路径 ,可为 NULL)
  • 组件的名称

如果组件与规范不匹配,将返回错误。

如果存在此类组件,VSS 将在备份组件文档中为该组件创建 IVssComponent 接口。 编写者和请求者可以访问和修改此信息。 对于定义组件集的可选 组件,它不仅描述组件的属性,还描述它包含的所有子组件。

有关隐式添加的组件的信息在备份组件文档中不可用。 此外,备份组件文档中没有文件信息。 若要获取该信息,请求者必须检查编写器元数据文档 (该文档已在备份组件文档中所选存储组件的上下文中) 读取。

还原期间请求者组件选择

在还原操作期间,请求者不应通过 IVssBackupComponents::GatherWriterMetadata 从系统上当前处于活动状态的编写器导入组件信息,因为当前正在执行的进程的状态不一定反映备份时的进程的状态。

它仍应通过 IVssBackupComponents::GatherWriterMetadata 生成 Identify 事件,以创建 Identify 事件并确定系统上当前有哪些编写器及其状态。

请求者在初始化期间检索存储的备份组件文档以及存储的编写器元数据文档 (有关) 的详细信息,请参阅 还原初始化概述

备份期间包含的组件与用于还原的组件大致相同,只不过,必须考虑 可以选择还原 以及 逻辑路径,不能 选择用于备份

但是,存在一些差异:

  • 如果在备份期间已将组件 显式包含在 备份组件文档中,则如果包含该组件用于还原 (显式或隐式) ,则使用 IVssBackupComponents::SetSelectedForRestore 将其显式添加到备份组件文档进行还原。
  • 如果某个组件 已隐式包含在 备份中,并且不可选择用于还原,并且无法选择还原祖先(在备份情况下,这意味着需要显式包含),则不会显式包含该组件 (,则不会使用 IVssBackupComponents::SetSelectedForRestore) 将其添加到备份组件文档中。 此类组件应被视为隐式选择进行还原。
  • 对于隐式选择用于备份的组件 (该组件是否可选择进行备份) ,只能使用 IVssBackupComponents::AddRestoreSubcomponent 将可选择还原的组件添加到备份组件文档中。
  • 对于还原组件,可以选择可以定义用于还原的 组件集 ,就像备份组件的可选组件一样。 然后,为还原组件选择此组件集,然后为还原操作定义此组件集。

在生成 PreRestore 事件之前,没有显式选择用于还原的组件的编写器不会收到任何 VSS 事件。

请求者和编写者可以使用 IVssComponent 接口访问存储的组件信息。 通过 IVssComponent 接口,编写器可以修改备份组件文档中显式包含的组件的某些设置,以支持还原 (,例如 还原目标) 。 如果它定义了组件集,则显式包含组件的编写器修改将传播到其 子组件。 此外, 接口提供了一种机制,用于在编写者和请求者之间传递有关还原成功和失败的信息。

与备份期间一样,备份组件文档中的信息不足,无法实现还原。 同样,需要编写器元数据文档来提供有关要还原的文件的实际路径的信息,并发现哪些不可选择的组件是可选组件集的一部分,因此需要还原。

有关 可选择性 类型及其用法的信息,请参阅使用选择性和逻辑路径。

请求者使用编写器组件文档信息

每个组件由其父 编写器的编写器类 ID 、其名称和 逻辑路径唯一标识。

请求者可以使用 IVssBackupComponents::GetWriterComponents 方法返回的 IVssWriterComponentsExt 接口来获取有关每个存储组件的信息。

可以通过 IVssWriterComponentsExt::GetComponent 返回的 IVssComponent 接口找到组件的名称和逻辑 (路径) 的其他项。

注意

在还原阶段,请求者应仅在调用 IVssBackupComponents::P reReRestore 之后调用 IVssWriterComponentsExt::GetComponent 或 IVssWriterComponentsExt::GetComponentCount,以便编写器有时间更新备份组件文档。 此类更新的一个示例是更改还原目标。

 

可以使用 IVssWriterComponentsExt::GetWriterInfo 找到有关每个存储的可选组件的父编写器的信息。

使用此信息,可以查询编写器元数据文档,并识别匹配的文档。 然后,通过使用 逻辑路径,请求者可以标识每个可选组件的依赖不可选择组件,即标识可选组件的 组件集的所有成员。

使用 IVssExamineWriterMetadata 接口时,请求者现在具有完整的组件信息(包括 IVssWMComponent 接口) 的路径规范 (),了解备份或还原所需的可选组件和非可选组件。

这就是为什么请求者必须保存其自己的备份组件文档的状态以及要备份的编写器的编写器元数据文档的原因之一。

有关更多详细信息 ,请参阅使用选择性和逻辑路径