备份组件文档内容

备份组件文档由 IVssBackupComponents 接口的实例维护。 此接口还包含许多控制备份作、作卷影副本和查询系统状态的方法。 但是,并非所有文档的信息都可通过此接口直接访问。

备份组件文档由多个数据集组成:

  • 有关备份或还原作中显式包含哪些组件的信息
  • 存储的组件和编写器信息的表示形式
  • 有关备份/恢复作的状态信息

虽然组件信息同时可供请求者和编写器使用,但只有编写器有权访问状态信息。

组件包含信息

备份组件文档包含请求者显式包含在备份和还原中的这些组件的列表。 该列表包含以下项:

还原中隐式包含的组件的标识不会存储在备份组件文档中。

VSS 有权访问有关组件包含的信息:在生成 PrepareForBackupPreRestore 事件后,还原或备份中未显式包含任何组件的编写器不会收到 VSS 事件。

编写器无法直接查询此信息。 这不是一个重大限制,因为根据设计,单个 VSS 编写器不应要求有关系统上其他编写器状态的详细信息,如上所述,那些没有包含的组件的编写器将不必参与 VSS作。

请求者可以确定哪些组件已显式包含在作中。

IVssBackupComponents::GetWriterComponentsCount 方法返回包含备份组件文档中存储的组件信息的编写器数(而不是文档中的组件数)。

请求者使用 IVssBackupComponents::GetWriterComponents(返回 IVssWriterComponentsExt 接口的实例)通过存储的编写器信息编制索引。 IVssWriterComponentsExt 接口允许请求者获取参与编写器的 编写器类编写器实例,以及访问有关存储在备份组件文档中的组件的组件的信息。

有关包含组件的信息

备份组件文档的组件数据的表示形式(不包括路径和文件规范信息),可通过 IVssComponent 接口的实例进行访问。

请求者和编写者以不同的方式获取对 IVssComponent 接口实例的访问权限。

请求者通过使用 IVssBackupComponents::GetWriterComponents返回的 IVssWriterComponentsExt 接口实例,按编写器检查组件数据。

除了编写器标识信息之外,IVssWriterComponentsExt 接口还提供 IVssComponent 接口的实例数组,每个所选编写器都包含组件。

备份组件文档生命周期中所述,编写器可以在处理 PrepareForBackup、PrepareForSnapshot、PostSnapshot、BackupComplete、PreRestore 或 PostRestore 事件时通过 IVssWriterComponents 接口访问相同的信息。

IVssComponent 允许编写者和请求者获取以下信息:

与请求者不同,编写器可以通过 IVssComponent 接口更改备份组件文档中的某些信息:

请求者状态信息

请求者使用 IVssBackupComponents 接口将有关备份或还原作状态的信息插入备份组件文档中。 编写器应用程序可以通过 CVssWriter 类查询此信息。

备份组件文档中存储的状态信息包括:

有关备份的常规信息

  • 整体备份类型(增量、差异或完整)

使用 IVssBackupComponents::SetBackupState 设置请求者

由编写器使用 CVssWriter::GetBackupType 检索

- 是否支持组件作

使用 IVssBackupComponents::SetBackupState 设置请求者

使用 CVssWriter::AreComponentsSelected 的编写器检索

- 是否备份可启动系统状态

使用 IVssBackupComponents::SetBackupState 设置请求者

由编写器使用 CVssWriter::IsBootableStateBackedUp 检索

- 是否支持部分文件作

使用 IVssBackupComponents::SetBackupState 设置请求者

由编写器使用 CVssWriter::IsPartialFileSupportEnabled 检索

有关还原的常规信息

  • 整体还原类型(无论是通过复制还是导入还原)

使用 IVssBackupComponents::SetRestoreState 设置请求者

由编写器使用 CVssWriter::GetRestoreType 检索

有关支持文件的信息

  • 特定组件在部分文件作中使用的范围文件的位置

使用 IVssBackupComponents::SetRangesFilePath 设置请求者

由编写器(或请求者)使用 IVssComponent::GetPartialFile 检索

信息状态

  • 指示某个给定编写器的组件是否已成功备份

使用 IVssBackupComponents::SetBackupSucceeded 设置请求者

使用 IVssComponent::GetBackupSucceeded 由编写者和请求者检索

- 指示某个给定编写器的组件是否已成功还原

使用 IVssBackupComponents::SetFileRestoreStatus

使用 IVssComponent::GetFileRestoreStatus 检索编写者和请求者检索

Writer-Settable 信息

  • 给定编写器组件之一的其他备份规范

使用 IVssComponent::SetBackupMetadata

使用 IVssComponent::GetBackupMetadata 由编写者和请求者检索

- 给定编写器组件之一的其他还原规范

使用 IVssComponent::SetRestoreMetadata 设置编写器

使用 IVssComponent::GetRestoreMetadata 的编写者和请求者检索

- 一个备份戳,指示编写器自己的特定格式的当前备份时间(其组件备份之一)

使用 IVssComponent::SetBackupStamp 设置编写器

使用 IVssComponent::GetBackupStamp 由编写者和请求者检索

- 一个备份标记,指示编写器自己的特定格式,使用最初由 IVssComponent::SetBackupStamp 设置的备份标记备份的备份标记的备份标记的最后一次备份时间

使用 IVssBackupComponents::SetPreviousBackupStamp 为特定组件存储并设置请求者

使用 IVssComponent::GetPreviousBackupStamp 由编写者和请求者检索

- 还原作前后失败的错误消息

使用 IVssComponent::SetPreRestoreFailureMsgIVssComponent::SetPostRestoreFailureMsg

使用 IVssComponent::GetPreRestoreFailureMsgIVssComponent::GetPostRestoreFailureMsg 检索编写者和请求者检索