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


Функция OpenVirtualDisk (virtdisk.h)

Открывает файл виртуального жесткого диска (VHD) или CD или DVD-образа (ISO) для использования.

Синтаксис

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)).
  • Элемент Version параметра Parameters не имеет значения OPEN_VIRTUAL_DISK_VERSION_1 или OPEN_VIRTUAL_DISK_VERSION_2.
Том узла, содержащий файл образа виртуального диска, не может быть сжат или зашифрован EFS. Эта функция завершится сбоем с ошибкой ERROR_UNSUPPORTED_COMPRESSION (618), если том узла был сжат, или с ошибкой ERROR_FILE_ENCRYPTED (6002), если том узла был зашифрован EFS после первоначального создания виртуального диска.

Путь, на который указывает параметр Path, не может находиться в локальной сетевой папке (то есть сетевой общей папке с помощью замыкания на себя). Эта функция завершится ошибкой ERROR_FILE_SYSTEM_LIMITATION (665), если путь находится в общей локальной сети. Эта функция завершится сбоем с ошибкой ERROR_FILE_CORRUPT (1392), если открывается виртуальный диск ISO и размер файла даже не кратен 2 КБ (2048 байт), не менее 34 КБ (34 816 байт) или дескриптор структуры тома не содержит известный идентификатор тома CDFS или UDFS.

После завершения приложения с помощью дескриптора объекта, возвращаемого в параметре Handle , используйте функцию CloseHandle , чтобы закрыть дескриптор.

Файлы образов КОМПАКТ-дисков и DVD-дисков (ISO) не поддерживаются до Windows 8 и Windows Server 2012.

Требования

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

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

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

CreateVirtualDisk

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