Método IVdsVolumeShrink::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 volume e todos os plexes e retorna as extensões liberadas.
Sintaxe
HRESULT Shrink(
[in] ULONGLONG ullDesiredNumberOfReclaimableBytes,
[in] ULONGLONG ullMinNumberOfReclaimableBytes,
[out] IVdsAsync **ppAsync
);
Parâmetros
[in] ullDesiredNumberOfReclaimableBytes
Número máximo de bytes pelos quais reduzir o tamanho do volume. O valor desse parâmetro deve ser maior ou igual ao valor do parâmetro ullMinNumberOfReclaimableBytes . Se o número de bytes especificados não for um múltiplo do tamanho do cluster do sistema de arquivos, o método Shrink arredondará esse valor para o próximo múltiplo do tamanho do cluster do sistema de arquivos.
[in] ullMinNumberOfReclaimableBytes
Número mínimo de bytes pelos quais reduzir o tamanho do volume. Se o tamanho do volume não puder ser reduzido pelo menos esse número de bytes, o método Shrink falhará. Se o número de bytes especificados não for um múltiplo do tamanho do cluster do sistema de arquivos, o método Shrink arredondará esse valor para o próximo múltiplo do tamanho do cluster do sistema de arquivos. Especifique zero para indicar que nenhum número mínimo de bytes recuperáveis é necessário para que o método Shrink tenha êxito.
[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 |
---|---|
|
O método foi concluído com sucesso. |
|
O volume não pode ser reduzido porque o sistema de arquivos não dá suporte a ele. |
|
Não há suporte para a operação em mídia removível. |
|
Ocorreu um erro interno. Verifique o log de eventos para obter mais detalhes. |
|
Nenhuma notificação de chegada do volume foi recebida. Talvez seja necessário chamar IVdsService::Refresh. |
|
O tamanho de redução especificado é muito grande e fará com que o volume seja menor que o tamanho mínimo do volume. |
|
O tamanho de redução especificado é menor do que o tamanho mínimo de redução permitido. |
|
O volume não está íntegro. |
|
A operação só tem suporte em volumes simples ou estendidos. |
Comentários
O método Shrink move os arquivos para que eles estejam o mais próximo possível do início do volume, a fim de consolidar o espaço livre no final do volume. (A quantidade de espaço livre que pode ser consolidada no final do volume determina quanto o volume pode ser reduzido.) Em seguida, ele trunca o volume do sistema de arquivos, reduzindo seu tamanho e, em seguida, trunca a partição ou o volume dinâmico.
Em quase todos os casos, haverá alguns arquivos que são imóveis (ou seja, arquivos que não podem ser movidos). Por exemplo, os arquivos de metadados do sistema de arquivos e do driver de armazenamento provavelmente serão imóveis. Por esse motivo, a quantidade pela qual um volume pode ser reduzido geralmente é menor do que a quantidade total de espaço livre no volume.
O número e o posicionamento de arquivos imóveis podem variar de um computador para o outro, mesmo que ambos os computadores sejam configurados de forma idêntica.
É possível que um arquivo seja temporariamente imóvel. Por esse motivo, um aplicativo poderá recuperar espaço adicional se chamar esse método uma segunda vez com os mesmos parâmetros.
Se os parâmetros ullDesiredNumberOfReclaimableBytes e ullMinNumberOfReclaimableBytes forem zero, o método Shrink reduzirá o volume o máximo possível.
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.
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.
Esse método é idêntico ao método IVdsVolume::Shrink .
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 |