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.
[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 |
---|---|
|
O método competiu com êxito. |
|
O volume não pode ser estendido porque o sistema de arquivos no volume não dá suporte à operação. |
|
Não há espaço suficiente para estender o volume. |
|
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.
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 |