Compartilhar via


Método IVdsVolume::Shrink (vds.h)

[Começando com Windows 8 e Windows Server 2012, a interface COM do Serviço de Disco Virtual é substituída pela API de Gerenciamento de Armazenamento do Windows.]

Reduz o tamanho do volume e de todos os plexes e retorna as extensões liberadas para o espaço livre.

Sintaxe

HRESULT Shrink(
  [in]  ULONGLONG ullNumberOfBytesToRemove,
  [out] IVdsAsync **ppAsync
);

Parâmetros

[in] ullNumberOfBytesToRemove

O tamanho da redução de bytes.

[out] ppAsync

O endereço de um ponteiro de interface IVdsAsync . O VDS inicializa a interface no retorno. Os chamadores devem liberar a interface. Use essa interface para cancelar, aguardar ou consultar o status da operação. Se IVdsAsync::Wait for chamado e um valor HRESULT de êxito for retornado, as interfaces retornadas na estrutura VDS_ASYNC_OUTPUT deverão ser lançadas chamando o método IUnknown::Release em cada ponteiro de interface. No entanto, se Wait retornar um valor HRESULT de falha ou se o parâmetro pHrResult de Wait receber um valor HRESULT de falha, os ponteiros de interface na estrutura VDS_ASYNC_OUTPUT serão NULL e não precisarão ser liberados. Você pode testar valores HRESULT com êxito ou falha usando as macros SUCCEEDED e FAILED definidas em Winerror.h.

Retornar valor

Esse método pode retornar valores HRESULT padrão, como E_INVALIDARG ou E_OUTOFMEMORY, e valores retornados específicos do VDS. Ele também pode retornar códigos de erro do sistema convertidos usando a macro HRESULT_FROM_WIN32 . Os erros podem se originar do próprio VDS ou do provedor de VDS subjacente que está sendo usado. Os possíveis valores retornados incluem o seguinte.

Valor/código retornado Descrição
S_OK
O método foi concluído com sucesso.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
O cache do provedor está corrompido. Isso indica um problema de software ou comunicação dentro de um provedor que armazena em cache informações sobre os dispositivos anexados. O chamador pode usar o método IVdsHwProvider::Reenumerate seguido pelo método IVdsHwProvider::Refresh para restaurar o cache.
VDS_E_CANNOT_SHRINK
0x8004251EL
O volume não pode ser reduzido porque o sistema de arquivos não dá suporte a ele.
VDS_E_DISK_REMOVEABLE
0x8004255AL
Não há suporte para a operação em mídia removível.
VDS_E_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
O tamanho de redução especificado é menor do que o tamanho mínimo de redução permitido.
VDS_E_SHRINK_SIZE_TOO_BIG
0x80042574L
O tamanho de redução especificado é muito grande e fará com que o volume seja menor que o tamanho mínimo do volume.

Comentários

Esse método é um wrapper para o método IVdsVolumeShrink::Shrink . Se você chamar IVdsVolume::Shrink, o valor do parâmetro uNumberOfBytesToRemove será usado para os parâmetros ullDesiredNumberOfReclaimableBytes e ullMinNumberOfReclaimableBytes de IVdsVolumeShrink::Shrink.

Operações de redução e extensão têm suporte apenas em volumes NTFS e RAW.

Use esse método para reduzir o sistema de arquivos e o volume. Se o VDS não reduzir o volume, ele interromperá a operação sem reduzir o sistema de arquivos.

Somente uma operação de redução ou desfragmentação pode ser executada por vez em cada volume. Windows Server 2008 e Windows Vista: Somente uma operação de redução ou desfragmentação pode ser executada por vez em um computador.

Se uNumberOfBytesToRemove for zero, o método falhará. Caso contrário, o VDS arredonda uNumberOfBytesToRemove para um múltiplo do tamanho do cluster do sistema de arquivos.

Os implementadores devem retornar um ponteiro para a interface IVdsAsync para esse método, mesmo que a chamada não inicie uma operação assíncrona.

Você pode usar o método IVdsVolumeShrink::QueryMaxReclaimableBytes para estimar o número de bytes a serem recuperados pela operação de redução. No entanto, QueryMaxReclaimableBytes pode retornar mais bytes do que estão realmente disponíveis.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho vds.h
Biblioteca Uuid.lib

Confira também

IVdsAsync

IVdsVolume

IVdsVolume::Extend