IVssComponent::GetDifferencedFile 方法 (vswriter.h)

GetDifferencedFile 方法返回有关文件集的信息, (指定文件或文件) 参与增量备份或差异备份,或者作为差异文件进行还原 -- 也就是说,要实现与之关联的备份和还原,就像将整个文件复制到备份介质 (中,而不是使用部分文件) 。

在备份或还原操作期间,请求者或编写器可以调用此方法。

语法

HRESULT GetDifferencedFile(
  [in]  UINT     iDifferencedFile,
  [out] BSTR     *pbstrPath,
  [out] BSTR     *pbstrFilespec,
  [out] BOOL     *pbRecursive,
  [out] BSTR     *pbstrLsnString,
  [out] FILETIME *pftLastModifyTime
);

参数

[in] iDifferencedFile

要检查的差异文件的索引号。 此参数的值是一个介于 0 到 n–1(含 1)之间的整数,其中 n 是与给定组件 (及其子组件关联的差异文件的总数(如果它定义组件集) )。 n 的值由 IVssComponent::GetDifferencedFilesCount 返回。

[out] pbstrPath

调用方分配的变量的地址,该变量接收包含差异文件路径的字符串。

此方法的用户需要检查,以确定此路径是否以反斜杠 (\) 结尾。

[out] pbstrFilespec

调用方分配的变量的地址,该变量接收包含差异文件的文件规范的字符串。

[out] pbRecursive

调用方分配的变量的地址,该变量接收一个布尔值,指定是否应递归解释差异文件的文件规范。 如果 为 TRUE,则需要在整个目录层次结构中搜索与文件规范 pbstrFilespec 匹配的文件,以查找在增量备份或差异备份期间要作为差异文件处理的文件。 如果 为 FALSE,则只需搜索根目录。

[out] pbstrLsnString

保留供将来使用。

[out] pftLastModifyTime

调用方分配的变量的地址,该变量接收差异文件的上次修改时间的编写器规范,表示为 FILETIME 结构。

返回值

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

含义
S_OK
已成功返回属性值。
E_INVALIDARG
其中一个参数值无效。
E_OUTOFMEMORY
调用方内存不足或其他系统资源。
VSS_E_OBJECT_NOT_FOUND
找不到与提供的索引对应的差异文件。
VSS_E_INVALID_XML_DOCUMENT
XML 文档无效。 有关详细信息,请查看事件日志。 有关详细信息,请参阅 VSS 下的事件和错误处理

注解

请求者或编写器可以在备份或还原操作期间调用 GetDifferencedFile

如果对 GetDifferencedFile 的调用成功,则调用方负责通过调用 SysFreeString 函数释放 pbstrPathpbstrFilespec 参数中返回的字符串。

由于编写器可以在实际备份文件之前随时通过调用 IVssComponent::AddDifferencedFilesByLastModifyTime 来指示存在差异的文件, 通常在处理 PostSnapshot 事件 (CVssWriter::OnPostSnapshot) 时,在备份期间,在返回 IVssBackupComponents::D oSnapshotSet 之前,不会调用 GetDifferencedFile

GetDifferencedFile 返回的时间戳适用于与 pbstrPath) 和文件规范 (pbstrFilespec) 返回的路径 (匹配的所有文件。

如果 GetDifferencedFile (pftLastModifyTime) 返回的时间戳值非零值,则请求者必须尊重此值,而不考虑其自己的记录和文件系统信息,并使用它来确定差异文件应包含在差异备份还是增量备份中。

如果 GetDifferencedFile 返回的时间戳为零,则请求者可以使用文件系统信息和其自己的记录来确定差异文件是应包含在差异备份还是增量备份中。

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

当引用已是组件一部分的文件集时,当调用 GetDifferencedFile 时,路径、文件规范和递归标志 (wszPathwszFileSpecbRecursive 的组合) 应与组件中已有的文件集匹配,或者如果组件) 定义组件集,则其子组件 (。

GetDifferencedFile 返回差异的新文件时,该文件的路径 (pbstrPath) 应匹配或位于组件中已有的路径下,或者如果组件定义组件集) ,则其子组件 (之一。

此外, GetDifferencedFile 返回的文件不应已由组件或编写器管理。

如果违反这些标准中的任何一项,则它们构成编写者的错误,应进行报告。

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

要求

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

另请参阅

IVssComponent

IVssComponent::AddDifferencedFilesByLastModifyTime

IVssComponent::GetDifferencedFilesCount

增量备份和差异备份