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.
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.
[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 |
---|---|
|
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 |