IVdsPack::MigrateDisks 方法 (vds.h)
[从Windows 8和Windows Server 2012开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]
将一组磁盘从一个包迁移到另一个包。
语法
HRESULT MigrateDisks(
[in] VDS_OBJECT_ID *pDiskArray,
[in] LONG lNumberOfDisks,
[in] VDS_OBJECT_ID TargetPack,
[in] BOOL bForce,
[in] BOOL bQueryOnly,
[out] HRESULT *pResults,
[out] BOOL *pbRebootNeeded
);
参数
[in] pDiskArray
指向 GUID 数组的指针;每个磁盘一个。
[in] lNumberOfDisks
要迁移的磁盘数。
[in] TargetPack
pack 对象的 GUID。
[in] bForce
如果此参数设置为 TRUE,则 VDS 将忽略此方法中的所有错误,并尝试无条件地迁移磁盘。 如果设置为 FALSE,则操作不会继续。 在某些情况下,强制迁移可能会导致数据丢失。
[in] bQueryOnly
如果此参数设置为 TRUE,则不会进行迁移。 如果设置为 FALSE,则继续操作。
[out] pResults
调用方分配的 HRESULT 值的数组的地址。 数组中的元素数为 lNumberOfDisks。
如果磁盘可以迁移或已成功迁移,则相应的数组元素会收到 S_OK;否则,它会收到提供程序返回的警告代码或错误代码。 有关其他结果代码的列表,请参阅返回值。
[out] pbRebootNeeded
如果此参数设置为 TRUE,则必须重新启动计算机才能完成操作。 如果设置为 FALSE,则操作无需重启即可完成。
返回值
此方法可以返回标准 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 特定于 VDS 的返回值。 它还可以使用 HRESULT_FROM_WIN32 宏返回转换的系统错误代码。 错误可能源自 VDS 本身或正在使用的基础 VDS 提供程序 。 可能的返回值包括以下内容。
返回代码/值 | 说明 |
---|---|
|
迁移已成功完成。 |
|
至少一个磁盘无法转换,或者可以通过警告进行转换。 |
|
其中一个磁盘不可用。 |
|
尝试导入外部包中的磁盘子集。 |
可以通过 pResults 返回以下警告和错误:
返回代码/值 | 说明 |
---|---|
|
由于迁移操作,启动分区的分区号发生了更改。 |
|
所选磁盘没有足够的可用空间来完成操作。 |
|
在所选磁盘上检测到活动分区,它不是用于启动活动操作系统的活动分区。 |
|
无法读取分区信息。 |
|
在所选磁盘上检测到类型未知的分区。 |
|
所选 GPT 磁盘包含一个非基本数据分区,该分区前面是一个或多个基本数据分区,后跟一个或多个基本数据分区。 |
|
无法打开所选磁盘上的卷。 |
备注
VDS 实现此方法。
单个包只能有一个基本磁盘。 因此,在基本包和动态包之间一次只能迁移一个磁盘。
在将基本磁盘转换为动态磁盘格式且磁盘末尾缺少足够的 LDM 数据库空间时,应强制执行此操作。 将 bForce 参数设置为 true ,并强制操作,尽管存在空间限制。 同样,如果 OEM 分区位于 MBR 磁盘的中间,则其中任一端有可用空间或数据卷。
将动态磁盘迁移到动态包后,应使用 IVdsPack::GetProperties 方法确定源包还是目标包现在是联机包。
有关使用 MigrateDisks 方法将外部磁盘添加到包的信息,请参阅 将外部磁盘添加到 Pack。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | vds.h |
Library | Uuid.lib |