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.
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 |