IVdsOpenVDisk::Merge 方法 (vds.h)

[从 Windows 8 和 Windows Server 2012 开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]

将子虚拟磁盘与其差异链中的父级合并。

语法

HRESULT Merge(
  [in]  MERGE_VIRTUAL_DISK_FLAG Flags,
  [in]  ULONG                   MergeDepth,
  [out] IVdsAsync               **ppAsync
);

参数

[in] Flags

一个MERGE_VIRTUAL_DISK_FLAG枚举值,该值指定如何合并虚拟磁盘。 必须设置为 MERGE_VIRTUAL_DISK_FLAG_NONE。

[in] MergeDepth

差异链中要合并在一起的父磁盘数。 磁盘必须已打开,且 ReadWriteDepth 至少等于此值。

[out] ppAsync

指向 IVdsAsync 接口的指针,成功完成后,该接口接收 IVdsAsync 接口以监视和控制此操作。 调用方必须在使用完接口后释放收到的接口。 如果在接口上调用 IVdsAsync::Wait 方法并返回成功的 HRESULT 值,则必须通过在每个接口指针上调用 IUnknown::Release 方法释放VDS_ASYNC_OUTPUT结构中返回的接口。 但是,如果 Wait 返回失败的 HRESULT 值,或者如果 WaitpHrResult 参数收到失败的 HRESULT 值,则VDS_ASYNC_OUTPUT结构中的接口指针为 NULL,不需要释放。 可以使用 Winerror.h 中定义的 SUCCEEDEDFAILED 宏测试成功或失败 HRESULT 值。

返回值

此方法可以返回标准 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 特定于 VDS 的返回值。 它还可以使用 HRESULT_FROM_WIN32 宏返回转换的系统错误代码。 错误可能源自 VDS 本身或正在使用的基础 VDS 提供程序 。 可能的返回值包括以下内容。

返回代码 说明
S_OK
该方法已成功完成。

备注

仅当虚拟磁盘已分离时,才能将其合并。

此方法将子磁盘中的所有数据块移动到父磁盘。 但是,它不会在操作结束时删除失效的子磁盘。

必须已使用读/写访问权限打开虚拟磁盘。

要求

要求
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 vds.h
Library Uuid.lib

另请参阅

IVdsOpenVDisk