IVssComponent::AddDifferencedFilesByLastModifyTime 方法 (vswriter.h)

编写器使用 AddDifferencedFilesByLastModifyTime 方法指示应根据上次修改时间戳评估 (指定文件或文件) 的文件集,以包含在使用整个文件的带时间戳的增量备份或差异备份中,而不是部分文件。

此方法只能在备份操作期间由编写器调用。

语法

HRESULT AddDifferencedFilesByLastModifyTime(
  [in] LPCWSTR  wszPath,
  [in] LPCWSTR  wszFilespec,
  [in] BOOL     bRecursive,
  [in] FILETIME ftLastModifyTime
);

参数

[in] wszPath

以 Null 结尾的宽字符串,其中包含包含要映射的文件的目录或目录层次结构的名称。

路径可以包含环境变量 (例如 %SystemRoot%) ,但不能包含通配符。

不要求路径以反斜杠 (“”) 结尾。 由应用程序来检索此信息以检查。

[in] wszFilespec

以 Null 结尾的宽字符串,其中包含要映射的文件的文件规范。

文件规范不能包含目录规范 (例如,没有反斜杠) 但可以包含 ? 和 * 通配符。

[in] bRecursive

一个布尔值,指定 wszPath 参数指定的路径是仅标识单个目录,还是指示要以递归方式遍历的目录层次结构。 如果将路径视为要以递归方式遍历的目录层次结构,则应将此参数设置为 true ;否则应设置为 false

有关遍历已装载文件夹的信息,请参阅 使用装载的文件夹和重新分析点

[in] ftLastModifyTime

差异文件的上次修改时间的编写器规范,表示为 FILETIME 结构。

上次修改时间始终以格林威治标准时间给出。

返回值

下面是此方法的有效返回代码。

含义
S_OK
已成功添加差异文件。
E_INVALIDARG
其中一个参数值无效。
E_OUTOFMEMORY
调用方内存或其他系统资源不足。
VSS_E_BAD_STATE
编写器未调用此方法,或者,如果由编写器调用,则在备份操作期间未调用此方法,或者在处理 BackupCompleteBackupShutdown 事件时调用此方法。
VSS_E_INVALID_XML_DOCUMENT
XML 文档无效。 有关详细信息,请查看事件日志。 有关详细信息,请参阅 VSS 下的事件和错误处理
VSS_E_UNEXPECTED
意外错误。 错误代码记录在错误日志文件中。 有关详细信息,请参阅 VSS 下的事件和错误处理

Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows Server 2008 R2 和 Windows 7 之前不支持此值。 改用E_UNEXPECTED。

备注

编写器调用此方法以指定仅当组件中的某些文件自特定时间以来已修改时才应备份这些文件。 有关详细信息,请参阅 按上次修改时间备份

此方法只能由支持上次修改的架构 (VSS_BS_LAST_MODIFY) 的编写器调用,并且只能在备份操作期间调用。 使用此方法的编写器不必支持时间戳架构 (VSS_BS_TIMESTAMPED) 。

IVssComponent::AddPartialFile 也不应添加由 AddDifferencedFilesByLastModifyTime 添加的文件。

如果备份类型 (VSS_BACKUP_TYPE) 是增量 (VSS_BT_INCREMENTAL) ,则使用 AddDifferencedFilesByLastModifyTime 的编写器必须支持增量架构 (VSS_BS_INCREMENTAL) 。 如果备份类型是差异备份,则编写器必须支持 VSS_BS_DIFFERENTIAL 架构。

应在实际开始备份操作之前调用 AddDifferencedFilesByLastModifyTime 方法,通常在处理 PostSnapshot 事件时 (请参阅 CVssWriter::OnPostSnapshot) 。

如果 AddDifferencedFilesByLastModifyTime 设置的时间戳值不为零,则请求者在确定差异备份还是增量备份中应包含差异文件时,无论其自己的记录和文件系统信息如何,都必须遵循此值。

如果 AddDifferencedFilesByLastModifyTime (ftLastModifyTime) 设置的时间戳为零,则请求者可以使用文件系统信息和自己的记录来确定差异文件是否应包含在差异备份或增量备份中。

请求者通过调用 IVssComponent::GetDifferencedFile 检索组件管理的差异文件数。

差异文件集可以是以下任一项:

  • 当前组件或 (的成员(如果组件) 其子组件定义组件集)
  • 组件或子组件中以前未包含的新文件。 AddDifferencedFilesByLastModifyTime 方法允许编写器指示自原始备份以来创建的文件应包含在组件中,以支持增量备份或差异备份。
引用已是组件一部分的文件时,路径、文件规范和递归标志的组合 (wszPathwszFileSpecbRecursive 分别) 提供给 AddDifferencedFilesByLastModifyTime 进行映射,必须匹配由 IVssCreateWriterMetadata::AddFilesToFileGroupIVssCreateWriterMetadata::AddDatabaseFiles 添加到组件的文件集之一,或 IVssCreateWriterMetadata::AddDatabaseLogFiles

将新文件添加到组件 AddDifferencedFilesByLastModifyTime 时,编写器不应添加由其他组件或编写器管理的文件。

IVssComponent 接口中没有任何方法允许为 AddDifferencedFilesByLastModifyTime 添加的新文件更改或添加备用位置映射。 如果备用位置映射对应于新文件,则将使用该备用位置。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 vswriter.h (包括 Vss.h、VsWriter.h)
Library VssApi.lib

另请参阅

CVssWriter::OnPostSnapshot

IVssComponent

IVssComponent::GetDifferencedFile

IVssComponent::GetDifferencedFilesCount

增量备份和差异备份

VSS_BACKUP_SCHEMA

VSS_BACKUP_TYPE

VSS_FILE_SPEC_BACKUP_TYPE