OpenVirtualDisk 函数 (virtdisk.h)

(ISO) 打开虚拟硬盘 (VHD) 或 CD 或 DVD 映像文件以供使用。

语法

DWORD OpenVirtualDisk(
  [in]           PVIRTUAL_STORAGE_TYPE         VirtualStorageType,
  [in]           PCWSTR                        Path,
  [in]           VIRTUAL_DISK_ACCESS_MASK      VirtualDiskAccessMask,
  [in]           OPEN_VIRTUAL_DISK_FLAG        Flags,
  [in, optional] POPEN_VIRTUAL_DISK_PARAMETERS Parameters,
  [out]          PHANDLE                       Handle
);

参数

[in] VirtualStorageType

指向有效 VIRTUAL_STORAGE_TYPE 结构的指针。

[in] Path

指向要打开的虚拟磁盘映像的有效路径的指针。

[in] VirtualDiskAccessMask

VIRTUAL_DISK_ACCESS_MASK 枚举的有效值。

[in] Flags

OPEN_VIRTUAL_DISK_FLAG 枚举的值的有效组合。

[in, optional] Parameters

指向有效 OPEN_VIRTUAL_DISK_PARAMETERS 结构的可选指针。 可以为 NULL

[out] Handle

指向表示打开的虚拟磁盘的句柄对象的指针。

返回值

如果函数成功,则返回值为 ERROR_SUCCESS (0) ,并且 Handle 参数包含指向新虚拟磁盘对象的有效指针。

如果函数失败,则返回值为错误代码, 并且 Handle 参数的值未定义。 有关详细信息,请参阅 系统错误代码

注解

为了防止在尝试打开永久附加虚拟磁盘的句柄时打开请求失败,以下要求适用:

  • VirtualDiskAccessMask 参数必须包含 VIRTUAL_DISK_ACCESS_DETACH (0x00040000) 标志。
  • 如果创建永久附加虚拟磁盘的原始打开操作仅请求读取访问权限,则不得请求对文件的写入访问权限。
如果 OpenVirtualDisk 函数失败,错误代码值为 ERROR_INVALID_PARAMETER ( 87) ,则原因可能是以下任一情况造成的:
  • VirtualStorageType 参数为 NULL
  • Path 参数为 NULL
  • VirtualDiskAccessMask 参数设置为 值(VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL)
  • Flags 参数设置为 的值(Flags & ~(OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS | OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE))
  • Parameters 参数的 Version 成员未设置为 OPEN_VIRTUAL_DISK_VERSION_1OPEN_VIRTUAL_DISK_VERSION_2
包含虚拟磁盘映像文件的主机卷无法压缩或对 EFS 进行加密。 如果主机卷已压缩,此函数将失败并出现错误ERROR_UNSUPPORTED_COMPRESSION (618) ;如果主机卷在初始虚拟磁盘创建后已进行 EFS 加密,则此函数将失败ERROR_FILE_ENCRYPTED) (6002 错误。

Path 参数指向的路径不能位于通过环回) 的网络共享 (本地网络共享上。 如果路径 位于 本地网络共享上,此函数将失败并出现错误ERROR_FILE_SYSTEM_LIMITATION (665) 。 如果打开 ISO 虚拟磁盘且文件大小不是 2 KB (2,048 字节) 的偶数倍数,) 至少为 34 KB (34,816 字节,或者卷结构描述符不包含已知的 CDFS 或 UDFS 卷标识符,则此函数将失败并出现 ERROR_FILE_CORRUPT 错误 (1392) 。

当应用程序使用 Handle 参数中 返回的对象句柄完成时,请使用 CloseHandle 函数关闭句柄。

在Windows 8和Windows Server 2012之前,不支持 (ISO) 的 CD 和 DVD 映像文件。

要求

要求
最低受支持的客户端 Windows 7
最低受支持的服务器 Windows Server 2008 R2
目标平台 Windows
标头 virtdisk.h
Library VirtDisk.lib
DLL VirtDisk.dll

另请参阅

关于 VHD

CreateVirtualDisk

VHD 参考