Compartilhar via


Método IVdsVolume::Extend (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.]

Expande o tamanho do volume atual adicionando extensões de disco a cada membro de cada plex.

Sintaxe

HRESULT Extend(
  [in]  VDS_INPUT_DISK *pInputDiskArray,
  [in]  LONG           lNumberOfDisks,
  [out] IVdsAsync      **ppAsync
);

Parâmetros

[in] pInputDiskArray

Ponteiro para uma matriz de estruturas de VDS_INPUT_DISK ; uma estrutura para cada disco.

Nota Os chamadores não devem usar um índice de membro padrão em conjunto com o método Extend , a menos que o volume tenha apenas um plex com apenas um membro.
 

[in] lNumberOfDisks

O número total de discos no volume. Os chamadores podem passar zero quando os plexes de volume contêm espaço suficiente para estender o volume; pInputDiskArray deve ser NULL.

[out] ppAsync

O endereço de um ponteiro de interface IVdsAsync , que o VDS inicializa no retorno. Os chamadores devem liberar a interface. Use esse ponteiro para cancelar, aguardar ou consultar o status da operação. Se você chamar o método IVdsAsync::Wait nessa interface e um valor HRESULT bem-sucedido for retornado, você deverá liberar as interfaces retornadas na estrutura VDS_ASYNC_OUTPUT 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.

Retornar código/valor Descrição
S_OK
O método competiu com êxito.
VDS_E_CANNOT_EXTEND
0x8004240EL
O volume não pode ser estendido porque o sistema de arquivos no volume não dá suporte à operação.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Não há espaço suficiente para estender o volume.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
O volume não está íntegro.

Comentários

Esse método estende um volume simples no mesmo disco ou cria um volume estendido estendendo o volume para vários discos. Os chamadores podem estender um volume em um disco básico, no entanto, a extensão do disco deve ser contígua com o volume.

O VDS estende automaticamente o sistema de arquivos para se ajustar ao tamanho estendido do volume. O sistema de arquivos deve dar suporte a essa operação. O VDS estende o sistema de arquivos, mas não o volume, se um chamador não especificar as extensões a serem usadas.

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

O VDS aplica as seguintes regras ao estender um volume:

  • Para tipos de plex simples e estendidos, o VDS estende o único membro do plex com qualquer extensão de disco que ainda não esteja contribuindo para outro plexe, independentemente da extensão estar no mesmo disco ou não. O VDS usa extensões de disco na ordem fornecida pelo chamador, ignorando o índice de membro da extensão. A menos que em um disco básico, o VDS pode estender o único membro de um plex com qualquer extensão de disco no mesmo disco ou em um disco diferente.
  • Para tipos de plex distribuídos e distribuídos com paridade, o VDS atribui uma extensão ao membro do plex da seguinte maneira:
    • A extensão vai para o índice de membro especificado pelo chamador.
    • A extensão vai para o índice de membro que ocupa o mesmo disco quando o chamador não especifica uma ID de membro.
    O VDS nunca atribui uma extensão a vários membros no mesmo disco. O chamador deve especificar um membro para todas as extensões ou nenhuma; o chamador não pode especificar um membro para algumas extensões e não para outras.
Quando o chamador passa NULL para pInputDiskArray e zero para lNumberOfDisks, o VDS retorna S_FALSE no objeto assíncrono e S_OK para o método . Nesse caso, S_OK indica que o VDS iniciou a operação, mas a operação é síncrona.

Os implementadores devem retornar um ponteiro para a interface IVdsAsync para esse método, independentemente de a chamada iniciar uma operação assíncrona.

Requisitos

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

Confira também

IVdsAsync

IVdsAsync::Wait

IVdsVolume

IVdsVolumeShrink::Shrink

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK