Compartilhar via


Método IVdsHwProviderStoragePools::CreateLunInStoragePool (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.]

Cria um LUN em um pool de armazenamento.

Sintaxe

HRESULT CreateLunInStoragePool(
  [in]  VDS_LUN_TYPE  type,
  [in]  ULONGLONG     ullSizeInBytes,
  [in]  VDS_OBJECT_ID StoragePoolId,
  [in]  LPWSTR        pwszUnmaskingList,
  [in]  VDS_HINTS2    *pHints2,
  [out] IVdsAsync     **ppAsync
);

Parâmetros

[in] type

Um VDS_LUN_TYPE valor de enumeração que especifica o tipo de LUN a ser criado. O novo LUN pode ser um tipo automatizado ou um tipo RAID específico, mas não ambos. Se o chamador especificar um tipo automatizado, uma ou mais dicas automatizadas deverão ser especificadas no parâmetro pHints2 .

O ponteiro de interface para o novo objeto LUN pode ser recuperado chamando o método IVdsAsync::Wait no ponteiro de interface retornado no parâmetro ppAsync . A estrutura VDS_ASYNC_OUTPUT retornada por Wait contém o ponteiro da interface do objeto LUN no membro cl.pLunUnk .

[in] ullSizeInBytes

O tamanho, em bytes, do novo LUN. O provedor pode arredondar o tamanho para cima ou para baixo 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 pelo menos tão grande quanto solicitado.)

Depois que o LUN é criado, o chamador pode determinar o tamanho real do LUN chamando o método IVdsLun::GetProperties .

[in] StoragePoolId

Um VDS_OBJECT_ID valor que identifica o pool de armazenamento em que o LUN deve ser criado. Esse parâmetro é necessário e não pode ser GUID_NULL.

[in] pwszUnmaskingList

Uma lista que especifica os computadores a serem concedidos acessa o LUN. A lista é uma cadeia de caracteres delimitada por ponto e vírgula, terminada em NULL e legível por humanos.

Se o valor for "", todos os computadores que têm uma porta HBA anexada ao subsistema de armazenamento receberão acesso ao LUN. Se o valor for "", nenhum computador receberá acesso ao LUN.

Nota Na prática, se o valor for "", a maioria dos provedores de hardware concederá apenas às portas e iniciadores no computador local acesso ao LUN.

 

Se "*" ou "" for especificado, nenhum outro valor poderá ser especificado.

Para redes Fibre Channel e redes SAS (SCSI) anexadas em série, cada entrada é um WWN (Nome Mundial) de 64 bits de cada porta para a qual o LUN é desmascarado, formatado como uma cadeia de caracteres hexadecimal (16 caracteres de comprimento), bytes mais significativos primeiro. Por exemplo, um endereço WWN de 01:23:45:67:89:AB:CD:EF é representado como "0123456789ABCDEF". Para obter mais informações, consulte as especificações T10 para Fibre Channel e SAS.

Para redes iSCSI, cada entrada é um IQN (nome qualificado por iSCSI) de cada iniciador para o qual o LUN é desmascarado. Um LUN desmascarado para um iniciador específico é considerado associado a esse iniciador.

Nota A lista de desmascaramento pode conter o mesmo WWN ou IQN mais de uma vez. Não se espera que o chamador remova duplicatas da lista ou valide o formato do WWN ou do IQN.
 
Depois que o LUN é criado, o chamador pode determinar a lista real de desmascaramento chamando o método IVdsLun::GetProperties .

[in] pHints2

Um ponteiro para uma estrutura VDS_HINTS2 que especifica as dicas a serem usadas na criação do LUN. O provedor não é necessário para aplicar as dicas ao LUN. As dicas especificadas na estrutura VDS_HINTS2 são apenas uma solicitação para o provedor.

Depois que o LUN é criado, o chamador pode determinar as dicas que o provedor aplicou chamando o método IVdsLun2::QueryHints2 .

Se o parâmetro de tipo especificar um tipo não automatizado, esse parâmetro deverá ser NULL.

[out] ppAsync

Um ponteiro para uma interface IVdsAsync que, após a conclusão bem-sucedida, recebe a interface IVdsAsync para monitorar e controlar essa operação. Os chamadores devem liberar a interface recebida quando terminarem de usá-la. Se o método IVdsAsync::Wait for chamado na interface e um valor HRESULT bem-sucedido for retornado, as interfaces retornadas na estrutura VDS_ASYNC_OUTPUT deverão ser liberadas 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 ser originados do próprio VDS ou do provedor de VDS subjacente que está sendo usado. Os possíveis valores retornados incluem o seguinte.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.

Comentários

Ao escolher os valores apropriados para os parâmetros type e pHints2 , o chamador pode especificar os atributos do LUN totalmente, parcialmente ou minimamente. O provedor pode incluir automaticamente atributos não especificados, com base nas dicas automatizadas especificadas na estrutura VDS_HINTS2 para a qual o parâmetro pHints2 aponta.

Observações aos implementadores: O provedor deve retornar um ponteiro de interface IVdsAsync no parâmetro ppAsync , mesmo que a chamada para esse método não inicie uma operação assíncrona.

A lista de WWNs e IQNs no parâmetro pwszUnmaskingList pode conter nomes duplicados. É responsabilidade do provedor validar todos os nomes na lista e remover duplicatas, se necessário.

Em resposta ao método CreateLunInStoragePool e antes de desmascarar o novo LUN para qualquer host, o provedor deve preencher o primeiro e o último megabytes com zeros, deixando o LUN não inicializado.

Há uma diferença sutil entre os valores retornados E_INVALIDARG e VDS_E_NOT_SUPPORTED . Não se espera que os provedores implementem todos os recursos que a API do VDS pode apresentar a um cliente. Por exemplo, o método CreateLunInStoragePool expõe a capacidade de criar muitos tipos diferentes de LUNs (por exemplo, simples, espelho, distribuído e paridade). No entanto, os provedores não são necessários para dar suporte a todos os tipos de LUNs. Se o chamador especificar um valor para o parâmetro de tipo que não é um valor de enumeração VDS_LUN_TYPE válido, o provedor deverá retornar E_INVALIDARG. Se o chamador especificar um valor de tipo válido ao qual o provedor não dá suporte, o provedor deverá retornar VDS_E_NOT_SUPPORTED.

Requisitos

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

Confira também

IVdsHwProviderStoragePools

IVdsLun2::QueryHints2

IVdsLun::GetProperties

VDS_HINTS2

VDS_LUN_TYPE