Compartilhar via


Função CompactVirtualDisk (virtdisk.h)

Reduz o tamanho de um arquivo de repositório de backup de disco rígido virtual (VHD).

Sintaxe

DWORD CompactVirtualDisk(
  [in]           HANDLE                           VirtualDiskHandle,
  [in]           COMPACT_VIRTUAL_DISK_FLAG        Flags,
  [in, optional] PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                     Overlapped
);

Parâmetros

[in] VirtualDiskHandle

Um identificador para o disco virtual aberto, que deve ter sido aberto usando o sinalizador VIRTUAL_DISK_ACCESS_METAOPS no parâmetro VirtualDiskAccessMask passado para OpenVirtualDisk. Para obter informações sobre como abrir um disco virtual, consulte a função OpenVirtualDisk .

[in] Flags

Deve ser o valor de COMPACT_VIRTUAL_DISK_FLAG_NONE (0) da enumeração COMPACT_VIRTUAL_DISK_FLAG .

[in, optional] Parameters

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

[in, optional] Overlapped

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

Retornar valor

Status da solicitação.

Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS.

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

Comentários

A compactação só pode ser executada em um disco virtual que seja expansível dinamicamente ou diferente.

Há dois tipos diferentes de compactação.

  • O primeiro tipo, compactação com reconhecimento do sistema de arquivos, usa o sistema de arquivos NTFS para determinar o espaço livre. Isso é feito anexando o VHD como um dispositivo somente leitura, incluindo os sinalizadores VIRTUAL_DISK_ACCESS_METAOPS e VIRTUAL_DISK_ACCESS_ATTACH_RO no parâmetro VirtualDiskAccessMask passado para OpenVirtualDisk, anexando o VHD chamando AttachVirtualDisk e enquanto o VHD está anexado chamando CompactVirtualDisk. Desanexar o VHD antes que a compactação seja feita pode fazer com que a compactação retorne uma falha antes de ser feita (semelhante ao cancelamento da compactação).
  • O segundo tipo, compactação independente do sistema de arquivos, não envolve o sistema de arquivos, mas procura apenas blocos VHD preenchidos inteiramente com zeros (0). Isso é feito incluindo o sinalizador VIRTUAL_DISK_ACCESS_METAOPS no parâmetro VirtualDiskAccessMask passado para OpenVirtualDisk e chamando CompactVirtualDisk.
A compactação com reconhecimento do sistema de arquivos é o tipo de compactação mais eficiente, mas usar primeiro a compactação com reconhecimento de sistema de arquivos seguida pela compactação independente do sistema de arquivos produzirá o menor VHD.

Uma operação de compactação em um disco virtual pode ser interrompida com segurança e executada novamente mais tarde. A reabrindo um arquivo de disco virtual que foi interrompido pode resultar na redução do tamanho de um arquivo de disco virtual no momento da abertura.

A compactação pode ser intensiva em CPU e/ou uso intensivo de E/S, dependendo do tamanho do disco virtual e de quantos blocos exigem movimento.

A função CompactVirtualDisk é executada no disco virtual no mesmo contexto de segurança que o chamador.

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

Referência de VHD