备份组件文档内容
备份组件文档由 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::SetRestoreState 设置
有关支持文件的信息
- 特定组件在部分文件操作中使用的范围文件的位置
由请求者使用 IVssBackupComponents::SetRangesFilePath 设置
由编写器 (或请求者使用 IVssComponent::GetPartialFile) 检索
信息状态
- 指示某个给定编写器的组件是否已成功备份
由请求者使用 IVssBackupComponents::SetBackupSucceeded 设置
由编写者和请求者使用 IVssComponent::GetBackupSucceeded 检索
-
由编写者和请求者使用 IVssComponent::GetFileRestoreStatus 检索
Writer-Settable信息
- 给定编写器组件之一的其他备份规范
由编写器使用 IVssComponent::SetBackupMetadata 设置
由编写者和请求者使用 IVssComponent::GetBackupMetadata 检索
-
由编写者和请求者使用 IVssComponent::GetRestoreMetadata 检索
-
由编写者和请求者使用 IVssComponent::GetBackupStamp 检索
-
由请求者使用 IVssBackupComponents::SetPreviousBackupStamp 为特定组件存储和设置
-
由编写者和请求者使用 IVssComponent::GetPreviousBackupStamp 检索
-
由编写器使用 IVssComponent::SetPreRestoreFailureMsg 或 IVssComponent::SetPostRestoreFailureMsg 设置
-
由编写者和请求者使用 IVssComponent::GetPreRestoreFailureMsg 或 IVssComponent::GetPostRestoreFailureMsg 检索