Поделиться через


Функция 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 , используемое при открытии только что созданного файла виртуального диска. Если элемент Version параметра Parameters имеет значение 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.
  • Для элемента Version параметра Parameters не задано значение CREATE_VIRTUAL_DISK_VERSION_1 или CREATE_VIRTUAL_DISK_VERSION_2.
  • Элемент Version параметра Parameters имеет значение CREATE_VIRTUAL_DISK_VERSION_2 но для параметра VirtualDiskAccessMask не задано значение VIRTUAL_DISK_ACCESS_NONE.
  • Для элемента BlockSizeInBytes параметра Parameters не задано значение CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE (0), 0x80000 (512 КБ) или 0x200000 (2 МБ).
  • Размер элемента MaximumSize параметра Parameters меньше 3 МБ.
  • Член MaximumSize параметра Parameters не соответствует значению члена SectorSizeInBytes .
  • Параметру VirtualDiskAccessMask присваивается значение (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • Параметр Flags больше CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION.
Том узла, содержащий новый файл образа виртуального диска, невозможно сжать или зашифровать EFS.

При создании различных типов виртуальных дисков рекомендуется использовать следующие сочетания параметров создания.

  • Необходимо указать флаг 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.
Функцию CreateVirtualDisk также можно использовать в качестве механизма преобразования одного типа виртуального диска в другой или физического диска в виртуальный диск. Это достигается за счет использования элемента SourcePathструктуры CREATE_VIRTUAL_DISK_PARAMETERS для предварительного заполнения нового виртуального диска блочных данных с исходного диска.

Требования

Требование Значение
Минимальная версия клиента Windows 7
Минимальная версия сервера Windows Server 2008 R2
Целевая платформа Windows
Header virtdisk.h
Библиотека VirtDisk.lib
DLL VirtDisk.dll

См. также раздел

Сведения о виртуальном жестком диске

OpenVirtualDisk

Справочник по VHD