备份组件文档由 IVssBackupComponents 接口的实例维护。 此接口还包含许多控制备份作、作卷影副本和查询系统状态的方法。 但是,并非所有文档的信息都可通过此接口直接访问。
备份组件文档由多个数据集组成:
- 有关备份或还原作中显式包含哪些组件的信息
- 存储的组件和编写器信息的表示形式
- 有关备份/恢复作的状态信息
虽然组件信息同时可供请求者和编写器使用,但只有编写器有权访问状态信息。
组件包含信息
备份组件文档包含请求者显式包含在备份和还原中的这些组件的列表。 该列表包含以下项:
显式包含 可选组件。
备份作中包含这些文件由 IVssBackupComponents::AddComponent,以及 IVssBackupComponents::SetSelectedForRestore在还原作中表示。
对于备份子组件,不可选择,但无法选择备份组件上级组件。
如果要将编写器的任何组件包含在作中,则必须包含所有这些组件。 备份作中包含这些文件由 IVssBackupComponents::AddComponent,以及 IVssBackupComponents::SetSelectedForRestore在还原作中表示。
将组件隐式添加到备份(子组件),这些组件 可用于还原,并显式添加到还原中。
这些组件可以是可选择的,也可以是不可选择的,但有一个可选择的上级,用于隐式选择它们进行备份。 它们通过 IVssBackupComponents::AddRestoreSubcomponent添加到备份组件文档。
还原中隐式包含的组件的标识不会存储在备份组件文档中。
VSS 有权访问有关组件包含的信息:在生成 PrepareForBackup 或 PreRestore 事件后,还原或备份中未显式包含任何组件的编写器不会收到 VSS 事件。
编写器无法直接查询此信息。 这不是一个重大限制,因为根据设计,单个 VSS 编写器不应要求有关系统上其他编写器状态的详细信息,如上所述,那些没有包含的组件的编写器将不必参与 VSS作。
请求者可以确定哪些组件已显式包含在作中。
IVssBackupComponents::GetWriterComponentsCount 方法返回包含备份组件文档中存储的组件信息的编写器数(而不是文档中的组件数)。
请求者使用 IVssBackupComponents::GetWriterComponents(返回 IVssWriterComponentsExt 接口的实例)通过存储的编写器信息编制索引。 IVssWriterComponentsExt 接口允许请求者获取参与编写器的 编写器类 和 编写器实例,以及访问有关存储在备份组件文档中的组件的组件的信息。
有关包含组件的信息
备份组件文档的组件数据的表示形式(不包括路径和文件规范信息),可通过 IVssComponent 接口的实例进行访问。
请求者和编写者以不同的方式获取对 IVssComponent 接口实例的访问权限。
请求者通过使用 IVssBackupComponents::GetWriterComponents返回的 IVssWriterComponentsExt 接口实例,按编写器检查组件数据。
除了编写器标识信息之外,IVssWriterComponentsExt 接口还提供 IVssComponent 接口的实例数组,每个所选编写器都包含组件。
如 备份组件文档生命周期中所述,编写器可以在处理 PrepareForBackup、PrepareForSnapshot、PostSnapshot、BackupComplete、PreRestore 或 PostRestore 事件时通过 IVssWriterComponents 接口访问相同的信息。
IVssComponent 允许编写者和请求者获取以下信息:
- 组件的名称、类型和 逻辑路径(GetComponentName、GetComponentType、GetLogicalPath)
- 还原目标 指示如何还原组件(IVssComponent::GetRestoreTarget)
- 如果在还原文件时使用了备用位置(GetAlternateLocationMapping,GetAlternateLocationMappingCount)
- 新的目标信息(如果有)(GetNewTarget,GetNewTargetCount)
- 还原前和还原后错误消息(GetPreRestoreFailureMsg、GetPostRestoreFailureMsg)
- 如果已为还原选择用于定义组件集的备份组件选择(IsSelectedForRestore)
- 备份或还原是否成功(GetBackupSucceeded,GetFileRestoreStatus)
- IVssBackupComponents::SetBackupOptions 或 IVssBackupComponents::SetRestoreOptions 设置的任何特定于编写器的备份或还原选项(GetBackupOptions、GetRestoreOptions)
- 任何特定于编写器的元数据备份或还原元数据(GetBackupMetadata),GetRestoreMetadata)
- 时间戳信息(GetBackupStamp,GetPreviousBackupStamp)
- 有关还原中显式包含的备份子组件的信息(GetRestoreSubcomponent,GetRestoreSubcomponentCount)
与请求者不同,编写器可以通过 IVssComponent 接口更改备份组件文档中的某些信息:
- 还原目标指示如何还原组件(IVssComponent::SetRestoreTarget)
- 编写器特定的备份和还原元数据(IVssComponent::SetBackupMetadata,IVssComponent::SetRestoreMetadata)
- 时间戳信息(SetBackupStamp)
- 还原前和还原后错误消息(SetPreRestoreFailureMsg,SetPostRestoreFailureMsg)
请求者状态信息
请求者使用 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 由编写者和请求者检索
Writer-Settable 信息
- 给定编写器组件之一的其他备份规范
使用 IVssComponent::SetBackupMetadata
使用 IVssComponent::GetBackupMetadata 由编写者和请求者检索
-
使用 IVssComponent::SetRestoreMetadata 设置编写器
-
使用 IVssComponent::GetRestoreMetadata 的编写者和请求者检索
-
使用 IVssComponent::SetBackupStamp 设置编写器
-
使用 IVssComponent::GetBackupStamp 由编写者和请求者检索
-
使用 IVssBackupComponents::SetPreviousBackupStamp 为特定组件存储并设置请求者
-
使用 IVssComponent::GetPreviousBackupStamp 由编写者和请求者检索
-
使用 IVssComponent::SetPreRestoreFailureMsg 或 IVssComponent::SetPostRestoreFailureMsg
-
使用 IVssComponent::GetPreRestoreFailureMsg 或 IVssComponent::GetPostRestoreFailureMsg 检索编写者和请求者检索