DetachVirtualDisk 函数 (virtdisk.h)
通过查找适当的虚拟磁盘提供程序来完成操作, (VHD) 或 CD 或 DVD 映像文件 (ISO) 分离虚拟硬盘。
语法
DWORD DetachVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] DETACH_VIRTUAL_DISK_FLAG Flags,
[in] ULONG ProviderSpecificFlags
);
参数
[in] VirtualDiskHandle
打开的虚拟磁盘的句柄,该句柄必须已使用 OpenVirtualDisk 函数的 VirtualDiskAccessMask 参数中设置的 VIRTUAL_DISK_ACCESS_DETACH 标志打开。 有关如何打开虚拟磁盘的信息,请参阅 OpenVirtualDisk 函数。
[in] Flags
DETACH_VIRTUAL_DISK_FLAG枚举的值的有效组合。
[in] ProviderSpecificFlags
特定于要分离的虚拟磁盘类型的标志。 如果不需要,可以为零。
返回值
请求的状态。
如果函数成功,则返回值 ERROR_SUCCESS。
如果函数失败,则返回值为错误代码。 有关详细信息,请参阅 系统错误代码。
注解
如果 DetachVirtualDisk 函数失败,错误代码值为 ERROR_INVALID_PARAMETER,原因可能是以下任一情况造成的:
- VirtualDiskHandle 参数不是 OpenVirtualDisk 函数创建的有效句柄。
- Flags 参数设置为 DETACH_VIRTUAL_DISK_FLAG_NONE ( 0) 以外的值。
必须先关闭虚拟磁盘的所有其他打开句柄, DetachVirtualDisk 函数才能成功。
如果已附加虚拟磁盘,并且已关闭用于附加它的另一个句柄,这是因为指定了 ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME 标志。 在这种情况下, DetachVirtualDisk 函数可以成功,但 VHD 将保持附加状态。 如果未指定 ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME ,则将在关闭最后一个打开的句柄时自动分离虚拟磁盘。
如果找不到提供程序、映像文件无效、未附加映像或调用方在 Windows Server 操作系统上没有 SE_MANAGE_VOLUME_PRIVILEGE 访问权限,则此函数将失败。 有关文件安全性的详细信息,请参阅 文件安全性和访问权限。
在Windows 8和Windows Server 2012之前,不支持 (ISO) 的 CD 和 DVD 映像文件。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 |
最低受支持的服务器 | Windows Server 2008 R2 |
目标平台 | Windows |
标头 | virtdisk.h |
Library | VirtDisk.lib |
DLL | VirtDisk.dll |