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 提供程序 。 可能的返回值包括以下内容。

返回代码/值 说明
S_OK
迁移已成功完成。
S_FALSE
至少一个磁盘无法转换,或者可以通过警告进行转换。
VDS_E_DISK_NOT_ONLINE
0x8004244BL
其中一个磁盘不可用。
VDS_E_IMPORT_SET_INCOMPLETE
0x80042451L
尝试导入外部包中的磁盘子集。
 

可以通过 pResults 返回以下警告和错误:

返回代码/值 说明
VDS_S_BOOT_PARTITION_NUMBER_CHANGE
0x00042436L
由于迁移操作,启动分区的分区号发生了更改。
VDS_E_NO_FREE_SPACE
0x80042437L
所选磁盘没有足够的可用空间来完成操作。
VDS_E_ACTIVE_PARTITION
0x80042438L
在所选磁盘上检测到活动分区,它不是用于启动活动操作系统的活动分区。
VDS_E_PARTITION_OF_UNKNOWN_TYPE
0x80042439L
无法读取分区信息。
VDS_E_LEGACY_VOLUME_FORMAT
0x8004243AL
在所选磁盘上检测到类型未知的分区。
VDS_E_NON_CONTIGUOUS_DATA_PARTITIONS
0x8004243BL
所选 GPT 磁盘包含一个非基本数据分区,该分区前面是一个或多个基本数据分区,后跟一个或多个基本数据分区。
VDS_E_MIGRATE_OPEN_VOLUME
0x8004243CL
无法打开所选磁盘上的卷。

备注

VDS 实现此方法。

单个包只能有一个基本磁盘。 因此,在基本包和动态包之间一次只能迁移一个磁盘。

在将基本磁盘转换为动态磁盘格式且磁盘末尾缺少足够的 LDM 数据库空间时,应强制执行此操作。 将 bForce 参数设置为 true ,并强制操作,尽管存在空间限制。 同样,如果 OEM 分区位于 MBR 磁盘的中间,则其中任一端有可用空间或数据卷。

将动态磁盘迁移到动态包后,应使用 IVdsPack::GetProperties 方法确定源包还是目标包现在是联机包。

有关使用 MigrateDisks 方法将外部磁盘添加到包的信息,请参阅 将外部磁盘添加到 Pack

要求

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

另请参阅

IVdsPack

IVdsPack::GetProperties