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。
如果找不到提供程序、VHD 或 ISO 映像文件无效、VHD 映像已附加,或者调用方没有 SE_MANAGE_VOLUME_PRIVILEGE 访问权限,则此函数将失败。 有关文件安全性的详细信息,请参阅 文件安全性和访问权限。
打开虚拟磁盘句柄时,必须考虑虚拟磁盘的预期访问模式。 例如,如果附加虚拟磁盘以便进行读/写访问,则必须使用 VIRTUAL_DISK_ACCESS_ATTACH_RW 访问标志打开 VirtualDiskHandle 参数。 有关详细信息,请参阅 VIRTUAL_DISK_ACCESS_MASK 和 OpenVirtualDisk。
在Windows 8和Windows Server 2012之前,不支持 (ISO) 的 CD 和 DVD 映像文件。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 |
最低受支持的服务器 | Windows Server 2008 R2 |
目标平台 | Windows |
标头 | virtdisk.h |
Library | VirtDisk.lib |
DLL | VirtDisk.dll |