Metodo IVdsHwProviderStoragePools::CreateLunInStoragePool (vdshwprv.h)
[A partire da Windows 8 e Windows Server 2012, l'interfaccia COM del servizio disco virtuale viene sostituita dall'API gestione archiviazione di Windows.]
Crea un LUN in un pool di archiviazione.
Sintassi
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
);
Parametri
[in] type
Valore di enumerazione VDS_LUN_TYPE che specifica il tipo di LUN da creare. Il nuovo LUN può essere un tipo automagic o un tipo RAID specifico, ma non entrambi. Se il chiamante specifica un tipo automagic, è necessario specificare uno o più hint automagic nel parametro pHints2 .
Il puntatore di interfaccia per il nuovo oggetto LUN può essere recuperato chiamando il metodo IVdsAsync::Wait sul puntatore di interfaccia restituito nel parametro ppAsync . La struttura VDS_ASYNC_OUTPUT restituita da Wait contiene il puntatore all'interfaccia dell'oggetto LUN nel membro cl.pLunUnk .
[in] ullSizeInBytes
Dimensione, in byte, del nuovo LUN. Il provider può arrotondare le dimensioni verso l'alto o verso il basso per soddisfare i requisiti di allineamento o altre restrizioni. Nella maggior parte dei casi, il provider arrotonda, assicurandosi che, con eccezioni rare, il LUN sia almeno grande quanto richiesto.
Dopo aver creato il LUN, il chiamante può determinare le dimensioni effettive del LUN chiamando il metodo IVdsLun::GetProperties .
[in] StoragePoolId
Valore VDS_OBJECT_ID che identifica il pool di archiviazione in cui deve essere creato il LUN. Questo parametro è obbligatorio e non può essere GUID_NULL.
[in] pwszUnmaskingList
Elenco che specifica i computer a cui concedere l'accesso al LUN. L'elenco è una stringa leggibile con terminazione NULL delimitata da punto e virgola.
Se il valore è "", a tutti i computer con una porta HBA collegata al sottosistema di archiviazione verrà concesso l'accesso al LUN. Se il valore è "", nessun computer deve avere accesso al LUN.
Se si specifica "*" o "", non è possibile specificare alcun altro valore.
Per le reti Fibre Channel e le reti SCSI (SAS) collegate serialmente, ogni voce è un nome a livello globale (WWN) a 64 bit di ogni porta in cui il LUN non viene mascherato, formattato come stringa esadecimale (16 caratteri long), byte più significativo per primo. Ad esempio, un indirizzo WWN di 01:23:45:67:89:AB:CD:EF è rappresentato come "0123456789ABCDEF". Per altre informazioni, vedere le specifiche T10 per Fibre Channel e SAS.
Per le reti iSCSI, ogni voce è un nome qualificato iSCSI (IQN) di ogni iniziatore a cui il LUN non viene mascherato. Un LUN non mascherato a un particolare iniziatore viene considerato associato a tale iniziatore.
[in] pHints2
Puntatore a una struttura VDS_HINTS2 che specifica gli hint da usare per la creazione del LUN. Il provider non è necessario per applicare gli hint al LUN. Gli hint specificati nella struttura VDS_HINTS2 sono solo una richiesta al provider.
Dopo aver creato il LUN, il chiamante può determinare gli hint applicati dal provider chiamando il metodo IVdsLun2::QueryHints2 .
Se il parametro di tipo specifica un tipo non automagic, questo parametro deve essere NULL.
[out] ppAsync
Puntatore a un'interfaccia IVdsAsync che al completamento riceve l'interfaccia IVdsAsync per monitorare e controllare questa operazione. I chiamanti devono rilasciare l'interfaccia ricevuta al termine dell'operazione. Se il metodo IVdsAsync::Wait viene chiamato sull'interfaccia e viene restituito un valore HRESULT riuscito, le interfacce restituite nella struttura VDS_ASYNC_OUTPUT devono essere rilasciate chiamando il metodo IUnknown::Release su ogni puntatore di interfaccia. Tuttavia, se Wait restituisce un valore HRESULT non riuscito o se il parametro pHrResult di Wait riceve un valore HRESULT non riuscito, i puntatori di interfaccia nella struttura VDS_ASYNC_OUTPUT sono NULL e non devono essere rilasciati. È possibile verificare l'esito positivo o negativo dei valori HRESULT usando le macro SUCCEEDED e FAILED definite in Winerror.h.
Valore restituito
Questo metodo può restituire valori HRESULT standard, ad esempio E_INVALIDARG o E_OUTOFMEMORY e valori restituiti specifici di VDS. Può anche restituire codici di errore di sistema convertiti usando la macro HRESULT_FROM_WIN32 . Gli errori possono provenire dal VDS stesso o dal provider VDS sottostante in uso. I valori restituiti possibili includono quanto segue.
Codice restituito | Descrizione |
---|---|
|
Metodo completato correttamente. |
Commenti
Scegliendo i valori appropriati per i parametri type e pHints2 , il chiamante può specificare gli attributi del LUN completamente, parzialmente o minimamente. Il provider può includere automaticamente attributi non specificati, in base agli hint automagic specificati nella struttura VDS_HINTS2 a cui punta il parametro pHints2 .
Note per gli implementatori: Il provider deve restituire un puntatore all'interfaccia IVdsAsync nel parametro ppAsync , anche se la chiamata a questo metodo non avvia un'operazione asincrona.
L'elenco di nomi di dominio completi e IQN nel parametro pwszUnmaskingList può contenere nomi duplicati. È responsabilità del provider convalidare tutti i nomi nell'elenco e rimuovere duplicati, se necessario.
In risposta al metodo CreateLunInStoragePool e prima di mascherare il nuovo LUN in qualsiasi host, il provider deve riempire il primo e l'ultimo megabyte con zeri, lasciando il LUN non inizializzato.
Esiste una differenza sottile tra i valori restituiti E_INVALIDARG e VDS_E_NOT_SUPPORTED . Non è previsto che i provider implementino tutte le funzionalità che l'API VDS può presentare a un client. Ad esempio, il metodo CreateLunInStoragePool espone la possibilità di creare molti tipi diversi di LUN, ad esempio semplici, mirror, striped e parità. Tuttavia, i provider non sono necessari per supportare tutti i tipi di LUN. Se il chiamante specifica un valore per il parametro di tipo che non è un valore di enumerazione VDS_LUN_TYPE valido, il provider deve restituire E_INVALIDARG. Se il chiamante specifica un valore di tipo valido che il provider non supporta, il provider deve restituire VDS_E_NOT_SUPPORTED.
Requisiti
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | vdshwprv.h |
Libreria | Uuid.lib |