AttachVirtualDisk 函数 (virtdisk.h)

通过查找相应的 VHD 提供程序来完成附件, (ISO) 附加虚拟硬盘 (VHD) 或 CD 或 DVD 映像文件。

语法

DWORD AttachVirtualDisk(
  [in]           HANDLE                          VirtualDiskHandle,
  [in, optional] PSECURITY_DESCRIPTOR            SecurityDescriptor,
  [in]           ATTACH_VIRTUAL_DISK_FLAG        Flags,
  [in]           ULONG                           ProviderSpecificFlags,
  [in, optional] PATTACH_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                    Overlapped
);

参数

[in] VirtualDiskHandle

打开的虚拟磁盘的句柄。 有关如何打开虚拟磁盘的信息,请参阅 OpenVirtualDisk 函数。

[in, optional] SecurityDescriptor

指向要应用于附加虚拟磁盘 的SECURITY_DESCRIPTOR 的可选指针。 如果此参数为 NULL,则使用虚拟磁盘映像文件的安全描述符。

确保 AttachVirtualDisk 应用于附加虚拟磁盘的安全描述符授予用户的写入属性权限,或者如果为此参数指定 NULL,请确保虚拟磁盘映像文件的安全描述符向用户授予写入属性权限。 如果安全描述符未向用户授予写入属性权限,则当用户访问附加的虚拟磁盘时,Shell 会显示以下错误: 回收站已损坏。是否要清空此驱动器的回收站?

[in] Flags

ATTACH_VIRTUAL_DISK_FLAG枚举的值的有效组合。

[in] ProviderSpecificFlags

特定于要附加的虚拟磁盘类型的标志。 如果不需要,可以为零。

[in, optional] Parameters

指向包含附件参数数据的有效 ATTACH_VIRTUAL_DISK_PARAMETERS 结构的指针。

[in, optional] Overlapped

如果需要异步操作,则为指向有效 OVERLAPPED 结构的可选指针。

返回值

请求的状态。

如果函数成功,则返回值 ERROR_SUCCESS

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

注解

在本机 (模式下插入 SD 控制器的 VHD 或 SD (SD) 媒体上托管的 VHD 或 ISO 不支持 AttachVirtualDisk 功能,sffdisk.sys、sffp_sd.sys 和 sdbus.sys 驱动程序将) 加载,并且会失败并 出现错误ERROR_FILE_NOT_FOUND。 支持在连接到 USB 阅读器的 SD 媒体上托管的 VHD 和 ISO。

如果 AttachVirtualDisk 函数失败,错误代码值为 ERROR_INVALID_PARAMETER,原因可能是以下任一情况造成的:

  • VirtualDiskHandle 参数不是 OpenVirtualDisk 函数创建的有效句柄。
  • Flags 参数设置为大于 0x020的值。
  • Parameters 参数的 Version 成员未设置为 ATTACH_VIRTUAL_DISK_VERSION_1
包含虚拟磁盘映像文件的主机卷无法压缩或对 EFS 进行加密。

如果找不到提供程序、VHD 或 ISO 映像文件无效、VHD 映像已附加,或者调用方没有 SE_MANAGE_VOLUME_PRIVILEGE 访问权限,则此函数将失败。 有关文件安全性的详细信息,请参阅 文件安全性和访问权限

打开虚拟磁盘句柄时,必须考虑虚拟磁盘的预期访问模式。 例如,如果附加虚拟磁盘以便进行读/写访问,则必须使用 VIRTUAL_DISK_ACCESS_ATTACH_RW 访问标志打开 VirtualDiskHandle 参数。 有关详细信息,请参阅 VIRTUAL_DISK_ACCESS_MASKOpenVirtualDisk

在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 参考