VSS_RESTOREMETHOD_ENUM 枚举 (vswriter.h)
编写器在备份时使用 VSS_RESTOREMETHOD_ENUM 枚举,以通过其编写器元数据文档指定默认文件还原方法,以用于其管理的所有组件中的所有文件。
还原方法是编写器范围的,也称为原始还原目标,由 VSS_RT_ORIGINAL VSS_RESTORE_TARGET 值指示。
语法
typedef enum VSS_RESTOREMETHOD_ENUM {
VSS_RME_UNDEFINED = 0,
VSS_RME_RESTORE_IF_NOT_THERE,
VSS_RME_RESTORE_IF_CAN_REPLACE,
VSS_RME_STOP_RESTORE_START,
VSS_RME_RESTORE_TO_ALTERNATE_LOCATION,
VSS_RME_RESTORE_AT_REBOOT,
VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE,
VSS_RME_CUSTOM,
VSS_RME_RESTORE_STOP_START
} ;
常量
VSS_RME_UNDEFINED 值: 0 未定义还原方法。 这表示编写器部分出错。 快速编写器不支持此值。 |
VSS_RME_RESTORE_IF_NOT_THERE 仅当没有 版本时,请求者才应还原所选组件或组件集的文件 磁盘上当前存在的那些文件。 除非为文件还原定义了备用位置映射,否则如果由 管理的任何文件的版本 所选组件或组件集当前位于磁盘上,没有由所选文件管理 应还原组件或组件集。 如果定义了文件的备用位置映射,并且文件的某个版本位于 的磁盘上 原始位置,仅当文件版本不存在时,才应将文件写入备用位置 备用位置。 |
VSS_RME_RESTORE_IF_CAN_REPLACE 仅当磁盘上的当前文件可以覆盖时,请求者才应还原所选组件或组件集的文件。 除非为文件还原定义了备用位置映射,否则存在任何文件的版本 不能覆盖磁盘上的所选组件或组件集,任何文件均由 应还原组件或组件集。 如果定义了文件的备用位置映射,则应将文件写入备用位置。 |
VSS_RME_STOP_RESTORE_START 请求者应按如下所示执行还原操作:
要停止的服务在调用 IVssCreateWriterMetadata::SetRestoreMethod 方法时预先指定编写器。 请求者可以通过调用 IVssExamineWriterMetadata::GetRestoreMethod 方法获取服务的名称。 请注意,如果编写器托管在正在停止的服务中,该编写器将不会收到 PostRestore 事件,因为当服务停止并重新启动时,编写器实例 ID 会更改。 |
VSS_RME_RESTORE_TO_ALTERNATE_LOCATION 请求者应将所选组件或组件集的文件还原到 指定的位置 编写器组件元数据文件中指定的备用位置映射。 (有关详细信息,请参阅 IVssCreateWriterMetadata::AddAlternateLocationMapping, IVssComponent::GetAlternateLocationMapping, IVssExamineWriterMetadata::GetAlternateLocationMapping, 和 IVssWMFiledesc::GetAlternateLocation.) 快速编写器不支持此值。 |
VSS_RME_RESTORE_AT_REBOOT 计算机重启后,请求者应还原所选组件或组件集的文件。 应将要还原的文件复制到临时位置,并且请求者应使用 MoveFileEx 与 MOVEFILE_DELAY_UNTIL_REBOOT 标志完成这些文件的还原 重启计算机后的正确位置。 |
VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE 如果可能,请求者应将所选组件或组件集的文件还原到正确的 立即位置。 如果磁盘上设置了由所选组件或组件管理的任何文件版本, 无法覆盖,则应还原由所选组件或组件集管理的所有文件 重启计算机后。 在这种情况下,要还原的文件应复制到磁盘上的临时位置,请求者应 将 MoveFileEx 与 结合使用 MOVEFILE_DELAY_UNTIL_REBOOT 标志完成这些文件的还原 重启计算机后的正确位置。 |
VSS_RME_CUSTOM 请求者应使用自定义还原方法来还原由所选文件管理的文件 组件或组件集。 自定义还原可能使用文件检索 API 函数或对给定编写器专用的协议 配置单一登录。 此类还原不需要使用编写器组件元数据文件中的信息。 (有关详细信息,请参阅 更多自定义备份和还原 information.) 快速编写器不支持此值。 |
VSS_RME_RESTORE_STOP_START 请求者应按如下所示执行还原操作:
要停止的服务由编写器在调用 IVssCreateWriterMetadata::SetRestoreMethod 方法时预先指定。 请求者可以通过调用 IVssExamineWriterMetadata::GetRestoreMethod 方法获取服务的名称。 |
注解
编写器通过在备份期间调用 IVssCreateWriterMetadata::SetRestoreMethod 来设置编写器元数据文档中的还原方法,以在其元数据中指定所需的还原方法。
请求者通过调用 IVssExamineWriterMetadata::GetRestoreMethod 检索编写器请求的还原方法,并相应地执行操作。
还原方法适用于给定编写器的所有组件中的所有文件。
如果编写器使用IVssComponent::SetRestoreTarget 设置VSS_RT_ORIGINAL以外的VSS_RESTORE_TARGET值,则还原方法可能会在还原时逐个重写。
未定义备用位置映射 的VSS_RME_RESTORE_TO_ALTERNATE_LOCATION 还原方法将构成编写器错误,请求者应进行报告。
如果还原方法需要检查磁盘上当前 (VSS_RME_RESTORE_IF_NOT_THERE、VSS_RME_RESTORE_IF_CAN_REPLACE或VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE) 的文件的状态,理想情况下,应使用文件 I/O 操作验证是否可以还原整个组件,然后再实际继续还原。
执行此操作的最安全方法是在还原之前使用 CreateFile 以独占方式打开 (无共享) 所有目标文件。
对于 VSS_RME_RESTORE_IF_NOT_THERE,还应设置 CREATE_NEW 的创建处置标志。
如果打开操作成功,还原可以继续,并且应使用 CreateFile 返回的句柄将还原的数据实际写入磁盘。
否则,可能会返回错误(具体取决于方法),或者选中并 (备用位置映射(如果可用) 使用)或在下次重新启动时暂还原的组件文件。
对于非常大的组件来说,这可能是一个问题, (其中一些组件可能) 成千上万个文件,因为系统开销。
在这种情况下,一个不太可靠的可用选项是执行以下操作:
- 复制磁盘上当前要还原到临时缓存的所有文件。
- 尝试将当前位于磁盘上的文件替换为备份文件 (这些文件可能位于第二个临时区域中的磁盘上,或者位于备份介质) 上。
- 如果任何文件无法还原,请终止还原操作,并从其临时位置复制原始文件,并继续执行备用位置映射或在重新启动操作时还原。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | vswriter.h |
另请参阅
IVssBackupComponents::AddAlternativeLocationMapping
IVssComponent::GetAlternateLocationMapping
IVssCreateWriterMetadata::AddAlternateLocationMapping
IVssCreateWriterMetadata::SetRestoreMethod
IVssExamineWriterMetadata::GetAlternateLocationMapping
IVssExamineWriterMetadata::GetRestoreMethod