Função CreateVirtualDisk (virtdisk.h)

Cria um arquivo de imagem VHD (disco rígido virtual), usando parâmetros padrão ou usando um disco virtual ou disco físico existente.

Sintaxe

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

Parâmetros

[in] VirtualStorageType

Um ponteiro para uma estrutura VIRTUAL_STORAGE_TYPE que contém o tipo de disco desejado e as informações do fornecedor.

[in] Path

Um ponteiro para uma cadeia de caracteres válida que representa o caminho para o novo arquivo de imagem de disco virtual.

[in] VirtualDiskAccessMask

O valor VIRTUAL_DISK_ACCESS_MASK a ser usado ao abrir o arquivo de disco virtual recém-criado. Se o membro Version do parâmetro Parameters estiver definido como CREATE_VIRTUAL_DISK_VERSION_2 , somente o valor de VIRTUAL_DISK_ACCESS_NONE (0) poderá ser especificado.

[in, optional] SecurityDescriptor

Um ponteiro opcional para um SECURITY_DESCRIPTOR a ser aplicado ao arquivo de imagem de disco virtual. Se esse parâmetro for NULL, o descritor de segurança do diretório pai será usado.

[in] Flags

Sinalizadores de criação, que devem ser uma combinação válida da enumeração CREATE_VIRTUAL_DISK_FLAG .

[in] ProviderSpecificFlags

Sinalizadores específicos para o tipo de disco virtual que está sendo criado. Pode ser zero se nenhum for necessário.

[in] Parameters

Um ponteiro para uma estrutura de CREATE_VIRTUAL_DISK_PARAMETERS válida que contém dados de parâmetro de criação.

[in, optional] Overlapped

Um ponteiro opcional para uma estrutura OVERLAPPED válida se a operação assíncrona for desejada.

[out] Handle

Um ponteiro para o objeto handle que representa o disco virtual recém-criado.

Retornar valor

Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS 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

Se a função CreateVirtualDisk falhar com um valor de código de erro de ERROR_INVALID_PARAMETER, a causa poderá ser devido a qualquer uma das seguintes condições:

  • O parâmetro VirtualStorageType é NULL.
  • O parâmetro Parameters é NULL.
  • O membro Version do parâmetro Parameters não está definido como CREATE_VIRTUAL_DISK_VERSION_1 ou CREATE_VIRTUAL_DISK_VERSION_2.
  • O membro Version do parâmetro Parameters é definido como CREATE_VIRTUAL_DISK_VERSION_2 mas o parâmetro VirtualDiskAccessMask não está definido como VIRTUAL_DISK_ACCESS_NONE.
  • O membro BlockSizeInBytes do parâmetro Parameters não está definido como CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE (0), 0x80000 (512 KB) ou 0x200000 (2 MB).
  • O membro MaximumSize do parâmetro Parameters é menor que 3 MB.
  • O membro MaximumSize do parâmetro Parameters não está alinhado com o valor do membro SectorSizeInBytes .
  • O parâmetro VirtualDiskAccessMask é definido como um valor de (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • O parâmetro Flags é maior que CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION.
O volume do host que contém o novo arquivo de imagem de disco virtual não pode ser compactado ou criptografado por EFS.

Ao criar os vários tipos de discos virtuais, as seguintes combinações de parâmetros de criação são recomendadas:

  • O sinalizador CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION deve ser especificado.
  • ParentPath não deve ser especificado.
  • SourcePath pode ser especificado, se desejado.
  • O sinalizador CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION não deve ser especificado.
  • ParentPath não deve ser especificado.
  • SourcePath pode ser especificado, se desejado.
  • O sinalizador CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION não deve ser especificado.
  • ParentPath deve ser especificado.
  • SourcePath não deve ser especificado.
A função CreateVirtualDisk também pode ser usada como um mecanismo para converter um tipo de disco virtual em outro ou um disco físico em um disco virtual. Isso é feito por meio do uso do membro SourcePath da estrutura CREATE_VIRTUAL_DISK_PARAMETERS para preencher previamente o novo disco virtual com dados de bloco do disco de origem.

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

OpenVirtualDisk

Referência do VHD