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) 以外的值。
包含虚拟磁盘映像文件的主机卷无法压缩或对 EFS 进行加密。

必须先关闭虚拟磁盘的所有其他打开句柄, 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

另请参阅

关于 VHD

VHD 参考