IVssBackupComponents::AddToSnapshotSet 方法 (vsbackup.h)

AddToSnapshotSet 方法将原始卷或原始远程文件共享添加到卷影副本集。

语法

HRESULT AddToSnapshotSet(
  [in]  VSS_PWSZ pwszVolumeName,
  [in]  VSS_ID   ProviderId,
  [out] VSS_ID   *pidSnapshot
);

参数

[in] pwszVolumeName

以 Null 结尾的宽字符串,包含卷的名称或要卷影复制的远程文件共享的 UNC 路径。 名称或 UNC 路径必须使用以下格式之一,并且必须包含尾随反斜杠 (\) :

  • 装载文件夹的路径,例如 Y:\MountX\
  • 驱动器号,例如 D:\
  • 格式为 \\?\Volume{GUID}\ (的卷 GUID 路径,其中 GUID 标识卷)
  • 指定远程文件共享的 UNC 路径,例如 \\Clusterx\Share1\

[in] ProviderId

要使用的提供程序。 可以使用GUID_NULL,在这种情况下将使用默认提供程序。

[out] pidSnapshot

已添加卷影副本的返回标识符。

返回值

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

含义
S_OK
0x00000000L
已成功将卷或远程文件共享添加到卷影副本集。
E_ACCESSDENIED
0x80070005L
调用方没有足够的备份权限或不是管理员。
E_INVALIDARG
0x80070057L
其中一个参数值无效。
E_OUTOFMEMORY
0x8007000EL
调用方内存不足或其他系统资源。
VSS_E_BAD_STATE
0x80042301L
备份组件对象未初始化,在还原操作期间调用了此方法,或者尚未在正确的顺序中调用此方法。
VSS_E_MAXIMUM_NUMBER_OF_VOLUMES_REACHED
0x80042312L
卷或远程文件共享已添加到卷影复制集的最大数目。 指定的卷或远程文件共享未添加到卷影副本集。
VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED
0x80042317L
卷或远程文件共享已添加到卷影复制集的最大数量。 指定的卷或远程文件共享未添加到卷影副本集。
VSS_E_NESTED_VOLUME_LIMIT
0x8004232CL
指定的卷嵌套太深,无法参与 VSS 操作。 此错误的可能原因包括:
  • 尝试创建卷的卷影副本,该卷驻留在另一个 VHD 中包含的 VHD 上。
  • 当包含 VHD 的卷也在同一卷影副本集中时,尝试创建 VHD 卷的卷影副本。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此返回代码。
VSS_E_OBJECT_NOT_FOUND
0x80042308L
pwszVolumeName 不对应于现有卷或远程文件共享。
VSS_E_PROVIDER_NOT_REGISTERED
0x80042304L
ProviderId 不对应于已注册的提供程序。
VSS_E_PROVIDER_VETO
0x80042306L
预期的提供程序错误。 提供程序在事件日志中记录了错误。 有关详细信息,请参阅 VSS 下的事件和错误处理
VSS_E_SNAPSHOT_SET_IN_PROGRESS
0x80042316L
另一个卷影副本创建已在进行中。 将 CSV 卷同时从多个节点添加到集快照,或者同时从多个 SMB 客户端节点将横向扩展共享添加到快照时发生。
VSS_E_VOLUME_NOT_SUPPORTED
0x8004230CL
ProviderId 参数的值GUID_NULL,并且没有 VSS 提供程序指示它支持指定的卷或远程文件共享。
VSS_E_VOLUME_NOT_SUPPORTED_BY_PROVIDER
0x8004230EL
指定的提供程序不支持卷或远程文件共享。
VSS_E_UNEXPECTED
意外错误。 错误代码记录在错误日志文件中。 有关详细信息,请参阅 VSS 下的事件和错误处理

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

VSS_E_UNEXPECTED_PROVIDER_ERROR
0x8004230FL
提供程序返回了意外的错误代码。 此错误代码仅通过 ppAsync 参数中返回的 IVssAsync 接口上的 QueryStatus 方法返回。

注解

Windows 7、Windows Server 2008 R2、Windows Vista、Windows Server 2008、Windows XP 和 Windows Server 2003: 在Windows 8和Windows Server 2012之前,不支持远程文件共享。

如果 pwszVolumeName 是 UNC 共享路径,则服务器名称部分必须采用主机名或完全限定的域名格式。 必须通过调用 IVssBackupComponentsEx4::GetRootAndLogicalPrefixPaths 方法规范化具有 IP 地址的 UNC 共享名称,然后才能将其传递给 AddToSnapshotSet

单个卷影副本集中卷影复制的卷的最大数目为 64。

如果 providerId 为GUID_NULL,则根据以下算法选择默认提供程序:

  1. 如果任何硬件提供程序支持给定卷或远程文件共享,则选择该提供程序。
  2. 如果没有可用的硬件提供程序,如果任何软件提供程序支持给定的卷,则会选择它。
  3. 如果没有可用的硬件提供程序或软件提供程序,则会选择系统提供程序。 (只有一个预安装的系统提供程序,它必须支持所有不可移动的本地卷。)
无法为嵌套在另一 VHD 中的虚拟硬盘 (VHD) 调用此方法。

Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持 VHD。

pidSnapshot 参数中返回的卷影复制标识符存储在备份组件文档中。 但是,没有用于查询此信息的方法,调用方可能需要存储此信息,以便在还原期间使用它。

要求

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

另请参阅

IVssBackupComponents

IVssBackupComponentsEx4::GetRootAndLogicalPrefixPaths

_VSS_VOLUME_SNAPSHOT_ATTRIBUTES