Compartilhar via


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

Estende um LUN por um número especificado de bytes.

Sintaxe

HRESULT Extend(
  [in]  ULONGLONG     ullNumberOfBytesToAdd,
  [in]  VDS_OBJECT_ID *pDriveIdArray,
  [in]  LONG          lNumberOfDrives,
  [out] IVdsAsync     **ppAsync
);

Parâmetros

[in] ullNumberOfBytesToAdd

O número de bytes pelos quais estender o LUN. O número de bytes não é necessário para ser um múltiplo par do tamanho do bloco ou setor das unidades. O provedor pode arredondar ou reduzir o número de bytes para atender aos requisitos de alinhamento ou outras restrições. Na maioria dos casos, o provedor arredonda para cima, garantindo que, com raras exceções, o LUN seja estendido pelo menos pelo número de bytes solicitados.

[in] pDriveIdArray

Um ponteiro para uma matriz de GUIDs de unidade. O provedor usa essas unidades para estender o LUN. As unidades são usadas na sequência especificada; o provedor usa todas as extensões em uma unidade antes de passar para a próxima e para quando o LUN foi estendido pelo número solicitado de bytes.

Como alternativa, o chamador pode direcionar o provedor para selecionar as unidades automaticamente passando NULL nesse parâmetro e zero no parâmetro lNumberOfDrives . Observe que passar NULL só será válido se o parâmetro lNumberOfDrives for zero.

[in] lNumberOfDrives

O número de unidades especificadas no parâmetro pDriveIdArray . Se o chamador passar zero, o provedor selecionará as unidades.

[out] ppAsync

O endereço de um ponteiro de interface IVdsAsync , que o VDS inicializa no retorno. Os chamadores devem liberar a interface . Use essa interface para cancelar, aguardar ou consultar o status da operação.

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 ser originados 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
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Esse valor retornado sinaliza um problema de software ou comunicação dentro de um provedor que armazena em cache informações sobre a matriz. Use o método IVdsHwProvider::Reenumerate seguido pelo método IVdsHwProvider::Refresh para restaurar o cache.
VDS_E_OBJECT_DELETED
0x8004240BL
O objeto LUN não está mais presente.
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
O LUN está em um estado de falha e não consegue executar a operação solicitada.
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
Outra operação está em andamento; essa operação não pode continuar até que a operação ou as operações anteriores sejam concluídas.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
Pode ser retornado de qualquer método que usa uma constante VDS_OBJECT_ID . Esse valor retornado indica que o identificador não se refere a um objeto existente.
VDS_E_NOT_SUPPORTED
0x80042400L
Não há suporte para essa operação ou combinação de parâmetros neste provedor.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Não há espaço utilizável suficiente para esta operação.
VDS_E_NOT_ENOUGH_DRIVE
0x80042410L
Não há unidades livres suficientes no subsistema para concluir essa operação.

Comentários

Os chamadores podem especificar uma lista de unidades para o provedor usar para estender o LUN ou direcionar o provedor para selecionar as unidades automaticamente.

Depois que o LUN for estendido, o chamador deverá usar o código de controle IOCTL_DISK_UPDATE_PROPERTIES para tornar o tamanho do disco atualizado visível no computador para o qual o LUN é desmascarado.

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

Se o parâmetro ullNumberOfBytesToAdd for maior que o número de bytes disponíveis nas unidades especificadas no parâmetro pDriveIdArray , use as unidades especificadas primeiro e selecione de todas as outras unidades disponíveis. Se não houver unidades suficientes para estender o LUN pelo número solicitado de bytes, retorne um erro e não estenda o LUN.

Requisitos

Requisito Valor
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 vdshwprv.h
Biblioteca Uuid.lib

Confira também

IVdsAsync

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLun

IVdsLun::Shrink

IVdsSubSystem::CreateLun