Compartilhar via


Função OpenVirtualDisk (virtdisk.h)

Abre um VHD (disco rígido virtual) ou um ISO (arquivo de imagem de CD ou DVD) para uso.

Sintaxe

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
);

Parâmetros

[in] VirtualStorageType

Um ponteiro para uma estrutura de VIRTUAL_STORAGE_TYPE válida.

[in] Path

Um ponteiro para um caminho válido para a imagem de disco virtual a ser aberta.

[in] VirtualDiskAccessMask

Um valor válido da enumeração VIRTUAL_DISK_ACCESS_MASK .

[in] Flags

Uma combinação válida de valores da enumeração OPEN_VIRTUAL_DISK_FLAG .

[in, optional] Parameters

Um ponteiro opcional para uma estrutura de OPEN_VIRTUAL_DISK_PARAMETERS válida. Pode ser NULL.

[out] Handle

Um ponteiro para o objeto handle que representa o disco virtual aberto.

Retornar valor

Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS (0) e o parâmetro Handle conterá um ponteiro válido para o novo objeto de disco virtual.

Se a função falhar, o valor retornado será um código de erro e o valor do parâmetro Handle será indefinido. Para obter mais informações, consulte Códigos de erro do sistema.

Comentários

Para evitar uma falha de solicitação aberta ao tentar abrir um identificador para um disco virtual permanentemente anexado, os seguintes requisitos se aplicam:

  • O parâmetro VirtualDiskAccessMask deve incluir o sinalizador VIRTUAL_DISK_ACCESS_DETACH (0x00040000).
  • O acesso de gravação ao arquivo não deve ser solicitado se a operação aberta original que criou o disco virtual permanentemente anexado solicitou apenas acesso de leitura.
Se a função OpenVirtualDisk falhar com um valor de código de erro de ERROR_INVALID_PARAMETER (87), a causa poderá ser devido a qualquer uma das seguintes condições:
  • O parâmetro VirtualStorageType é NULL.
  • O parâmetro Path é NULL.
  • O parâmetro VirtualDiskAccessMask é definido como um valor de (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • O parâmetro Flags é definido como um valor de (Flags & ~(OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS | OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE)).
  • O membro Version do parâmetro Parameters não está definido como OPEN_VIRTUAL_DISK_VERSION_1 ou OPEN_VIRTUAL_DISK_VERSION_2.
O volume do host que contém o arquivo de imagem de disco virtual não pode ser compactado ou criptografado por EFS. Essa função falhará com o erro ERROR_UNSUPPORTED_COMPRESSION (618) se o volume do host tiver sido compactado ou com erro ERROR_FILE_ENCRYPTED (6002) se o volume do host tiver sido criptografado após a criação inicial do disco virtual.

O caminho apontado pelo parâmetro Path não pode estar em um compartilhamento de rede local (que é um compartilhamento de rede por meio de loopback). Essa função falhará com o erro ERROR_FILE_SYSTEM_LIMITATION (665) se o caminho estiver em um compartilhamento de rede local. Essa função falhará com o erro ERROR_FILE_CORRUPT (1392) se um disco virtual ISO estiver sendo aberto e o tamanho do arquivo não for um múltiplo de 2 KB (2.048 bytes), for pelo menos 34 KB (34.816 bytes) ou o descritor de estrutura de volume não contiver um identificador de volume cdfs ou UDFS conhecido.

Quando um aplicativo terminar de usar o identificador de objeto retornado no parâmetro Handle , use a função CloseHandle para fechar o identificador.

Não há suporte para ISO (arquivos de imagem de CD e DVD) antes de Windows 8 e Windows Server 2012.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7
Servidor mínimo com suporte Windows Server 2008 R2
Plataforma de Destino Windows
Cabeçalho virtdisk.h
Biblioteca VirtDisk.lib
DLL VirtDisk.dll

Confira também

Sobre o VHD

CreateVirtualDisk

Referência de VHD