IVdsServiceUninstallDisk::UninstallDisks 方法 (vds.h)

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

卸载一组磁盘。

语法

HRESULT UninstallDisks(
  [in]  VDS_OBJECT_ID *pDiskIdArray,
  [in]  ULONG         ulCount,
  [in]  BOOLEAN       bForce,
  [out] BOOLEAN       *pbReboot,
  [out] HRESULT       *pResults
);

参数

[in] pDiskIdArray

包含 VDS 对象 ID 数组的缓冲区的地址,每个要卸载的磁盘对应一个。 数组中的每个 ID 必须是唯一的。

[in] ulCount

pDiskIdArray 参数指向的缓冲区中的 VDS 对象 ID 数。

[in] bForce

如果 为 TRUE,则即使无法锁定或卸载卷,VDS 也会卸载磁盘。

[out] pbReboot

如果用户必须重新启动计算机才能完成卸载过程,则接收 TRUEBOOLEAN 变量的地址。

[out] pResults

调用方分配的 HRESULT 值的数组的地址。 数组中的元素数由 pDiskIdArray 参数指向。 此数组的第一个元素对应于 pDiskIdArray 中的第一个元素,依此类图。 如果任何磁盘未能正确初始化,则会在此数组的相应元素中返回故障的特定错误代码。

返回值

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

返回代码/值 说明
S_OK
0
已成功卸载磁盘。
S_FALSE
1
此方法返回一个或多个磁盘的警告或错误代码。
VDS_S_UNABLE_TO_GET_GPT_ATTRIBUTES
0x0004245BL
已成功卸载磁盘,但无法检索一个或多个磁盘 (GPT) 属性的 GUID 分区表。
VDS_E_INTERNAL_ERROR
0x80042448L
VDS 遇到内部错误。 有关详细信息,请检查事件日志。
VDS_E_MISSING_DISK
0x80042454L
缺少一个或多个磁盘。
VDS_E_NO_DISK_PATHNAME
0x8004270FL
无法检索一个或多个磁盘的路径。
VDS_E_NO_VOLUME_PATHNAME
0x80042711L
无法检索一个或多个卷的路径。
VDS_E_OBJECT_DELETED
0x8004240BL
一个或多个指定的 VDS 对象 ID 对应于不再存在的磁盘。
VDS_E_OBJECT_NOT_FOUND
0x80042405L
一个或多个指定的 VDS 对象 ID 对应于不存在的磁盘。
VDS_E_PROVIDER_CACHE_OUTOFSYNC
0x80042712L
提供程序的缓存与驱动程序缓存不同步。

注解

VDS 实现此方法。

此方法是同步的,首先卸载指定磁盘上的卷,然后卸载磁盘。 卸载磁盘后,可以将相应的 LUN 屏蔽 (隐藏) 或删除。

此方法清理分配给磁盘上的卷的驱动器号。 此外,它还会将卷设置为脱机状态,以防止在卸载句柄关闭后但在实际删除磁盘之前重新装载卷。

删除跨多个磁盘的动态卷时,必须调用此方法,而不是使用设备管理器函数。

有关如何在不支持 UninstallDisks 方法的 Windows Server 2003 版本中卸载磁盘的说明,请参阅 IVdsLun::SetMask 方法的“备注”部分。

要求

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

另请参阅

IVdsServiceUninstallDisk