CreateVirtualDisk 函数 (virtdisk.h)
使用默认参数或使用现有虚拟磁盘或物理磁盘 (VHD) 映像文件创建虚拟硬盘。
语法
DWORD CreateVirtualDisk(
[in] PVIRTUAL_STORAGE_TYPE VirtualStorageType,
[in] PCWSTR Path,
[in] VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask,
[in, optional] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] CREATE_VIRTUAL_DISK_FLAG Flags,
[in] ULONG ProviderSpecificFlags,
[in] PCREATE_VIRTUAL_DISK_PARAMETERS Parameters,
[in, optional] LPOVERLAPPED Overlapped,
[out] PHANDLE Handle
);
参数
[in] VirtualStorageType
指向包含所需磁盘类型和供应商信息的 VIRTUAL_STORAGE_TYPE 结构的指针。
[in] Path
指向表示新虚拟磁盘映像文件路径的有效字符串的指针。
[in] VirtualDiskAccessMask
打开新创建的虚拟磁盘文件时要使用的 VIRTUAL_DISK_ACCESS_MASK 值。 如果将 Parameters 参数的 Version 成员设置为 CREATE_VIRTUAL_DISK_VERSION_2则只能指定 VIRTUAL_DISK_ACCESS_NONE (0) 值。
[in, optional] SecurityDescriptor
指向要应用于虚拟磁盘映像文件的 SECURITY_DESCRIPTOR 的可选指针。 如果此参数为 NULL,则将使用父目录的安全描述符。
[in] Flags
创建标志,必须是 CREATE_VIRTUAL_DISK_FLAG 枚举的有效组合。
[in] ProviderSpecificFlags
特定于要创建的虚拟磁盘类型的标志。 如果不需要,可以为零。
[in] Parameters
指向包含创建参数数据的有效 CREATE_VIRTUAL_DISK_PARAMETERS 结构的指针。
[in, optional] Overlapped
如果需要异步操作,则为指向有效 OVERLAPPED 结构的可选指针。
[out] Handle
指向表示新创建的虚拟磁盘的句柄对象的指针。
返回值
如果函数成功,则返回值为 ERROR_SUCCESS,Handle 参数包含指向新虚拟磁盘对象的有效指针。
如果函数失败,则返回值为错误代码, 并且 Handle 参数的值未定义。 有关详细信息,请参阅 系统错误代码。
注解
如果 CreateVirtualDisk 函数失败,错误代码值为 ERROR_INVALID_PARAMETER,原因可能是以下任一情况造成的:
- VirtualStorageType 参数为 NULL。
- Parameters 参数为 NULL。
- Parameters 参数的 Version 成员未设置为 CREATE_VIRTUAL_DISK_VERSION_1 或 CREATE_VIRTUAL_DISK_VERSION_2。
- Parameters 参数的 Version 成员设置为 CREATE_VIRTUAL_DISK_VERSION_2但 VirtualDiskAccessMask 参数未设置为 VIRTUAL_DISK_ACCESS_NONE。
- Parameters 参数的 BlockSizeInBytes 成员未设置为 CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE ( 0) 、0x80000 (512 KB) 或0x200000 (2 MB) 。
- Parameters 参数的 MaximumSize 成员小于 3 MB。
- Parameters 参数的 MaximumSize 成员与 SectorSizeInBytes 成员的值不一致。
- VirtualDiskAccessMask 参数设置为 值
(VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL)
。 - Flags 参数大于 CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION。
创建各种类型的虚拟磁盘时,建议使用以下创建参数组合:
- 应指定 CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION 标志。
- 不应指定 ParentPath。
- 如果需要,可以指定 SourcePath。
- 不应指定 CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION 标志。
- 不应指定 ParentPath。
- 如果需要,可以指定 SourcePath。
- 不应指定 CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION 标志。
- 应指定 ParentPath。
- 不应指定 SourcePath。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 |
最低受支持的服务器 | Windows Server 2008 R2 |
目标平台 | Windows |
标头 | virtdisk.h |
Library | VirtDisk.lib |
DLL | VirtDisk.dll |