Partager via


Méthode IVdsHwProviderStoragePools ::CreateLunInStoragePool (vds.h)

[À compter de Windows 8 et Windows Server 2012, l’interface COM du service de disque virtuel est remplacée par l’API Gestion du stockage Windows.]

Crée une LUN dans un pool de stockage.

Syntaxe

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
);

Paramètres

[in] type

Une valeur d’énumération VDS_LUN_TYPE qui spécifie le type de LUN à créer. Le nouveau LUN peut être un type automagic ou un type RAID spécifique, mais pas les deux. Si l’appelant spécifie un type automagique, un ou plusieurs indicateurs automagiques doivent être spécifiés dans le paramètre pHints2 .

Le pointeur d’interface pour le nouvel objet LUN peut être récupéré en appelant la méthode IVdsAsync ::Wait sur le pointeur d’interface retourné dans le paramètre ppAsync . La structure VDS_ASYNC_OUTPUT retournée par Wait contient le pointeur d’interface d’objet LUN dans le membre cl.pLunUnk .

[in] ullSizeInBytes

Taille, en octets, de la nouvelle LUN. Le fournisseur peut arrondir la taille vers le haut ou vers le bas pour répondre aux exigences d’alignement ou à d’autres restrictions. (Dans la plupart des cas, le fournisseur arrondit, en veillant à ce que, à de rares exceptions près, le LUN soit au moins aussi volumineux que demandé.)

Une fois la LUN créée, l’appelant peut déterminer la taille réelle de la LUN en appelant la méthode IVdsLun ::GetProperties .

[in] StoragePoolId

Valeur VDS_OBJECT_ID qui identifie le pool de stockage dans lequel la LUN doit être créée. Ce paramètre est obligatoire et ne peut pas être GUID_NULL.

[in] pwszUnmaskingList

Liste spécifiant les ordinateurs à accorder l’accès au LUN. La liste est une chaîne délimitée par des points-virgules, terminée par NULL et lisible par l’homme.

Si la valeur est « », tous les ordinateurs qui ont un port HBA attaché au sous-système de stockage doivent avoir accès à la LUN. Si la valeur est « », aucun ordinateur ne doit avoir accès à la LUN.

Note Dans la pratique, si la valeur est « », la plupart des fournisseurs de matériel accordent uniquement aux ports et aux initiateurs de l’ordinateur local l’accès à la LUN.

 

Si « * » ou « » est spécifié, aucune autre valeur ne peut être spécifiée.

Pour les réseaux Fibre Channel et les réseaux SCSI (SAS) attachés en série, chaque entrée est un nom mondial (WWN) 64 bits de chaque port auquel le LUN est démasqué, mis en forme sous la forme d’une chaîne hexadécimale (16 caractères de long), octet le plus significatif en premier. Par exemple, une adresse WWN de 01 :23 :45 :67 :89 :AB :CD :EF est représentée sous la forme « 0123456789ABCDEF ». Pour plus d’informations, consultez les spécifications T10 pour Fibre Channel et SAS.

Pour les réseaux iSCSI, chaque entrée est un nom qualifié iSCSI (IQN) de chaque initiateur auquel le LUN est masqué. Un LUN démasqué à un initiateur particulier est considéré comme associé à cet initiateur.

Note La liste de démasquage peut contenir le même WWN ou IQN plusieurs fois. L’appelant n’est pas censé supprimer les doublons de la liste ou valider le format du WWN ou de l’IQN.
 
Une fois la LUN créée, l’appelant peut déterminer la liste de démasquage réelle en appelant la méthode IVdsLun ::GetProperties .

[in] pHints2

Pointeur vers une structure de VDS_HINTS2 qui spécifie les indicateurs à utiliser pour créer la LUN. Le fournisseur n’est pas obligé d’appliquer les indicateurs au LUN. Les indicateurs spécifiés dans la structure VDS_HINTS2 sont uniquement une requête adressée au fournisseur.

Une fois la LUN créée, l’appelant peut déterminer les indicateurs que le fournisseur a appliqués en appelant la méthode IVdsLun2 ::QueryHints2 .

Si le paramètre de type spécifie un type non automagique, ce paramètre doit avoir la valeur NULL.

[out] ppAsync

Pointeur vers une interface IVdsAsync qui, une fois l’exécution réussie, reçoit l’interface IVdsAsync pour surveiller et contrôler cette opération. Les appelants doivent libérer l’interface reçue lorsqu’ils en ont terminé. Si la méthode IVdsAsync ::Wait est appelée sur l’interface et qu’une valeur HRESULT de réussite est retournée, les interfaces retournées dans la structure VDS_ASYNC_OUTPUT doivent être libérées en appelant la méthode IUnknown ::Release sur chaque pointeur d’interface. Toutefois, si Wait retourne une valeur HRESULT d’échec ou si le paramètre pHrResult de Wait reçoit une valeur HRESULT d’échec, les pointeurs d’interface dans la structure VDS_ASYNC_OUTPUT sont NULL et n’ont pas besoin d’être libérés. Vous pouvez tester la réussite ou l’échec des valeurs HRESULT à l’aide des macros SUCCEEDED et FAILED définies dans Winerror.h.

Valeur retournée

Cette méthode peut retourner des valeurs HRESULT standard, telles que E_INVALIDARG ou E_OUTOFMEMORY, et des valeurs de retour spécifiques à VDS. Il peut également retourner des codes d’erreur système convertis à l’aide de la macro HRESULT_FROM_WIN32 . Les erreurs peuvent provenir de VDS lui-même ou du fournisseur VDS sous-jacent utilisé. Les valeurs de retour possibles sont les suivantes.

Code de retour Description
S_OK
La commande s'est correctement terminée.

Notes

En choisissant les valeurs appropriées pour les paramètres type et pHints2 , l’appelant peut spécifier les attributs du LUN entièrement, partiellement ou au minimum. Le fournisseur peut inclure automatiquement des attributs non spécifiés, en fonction des indicateurs automagiques spécifiés dans la structure VDS_HINTS2 vers laquelle pointe le paramètre pHints2 .

Remarques aux implémenteurs : Le fournisseur doit retourner un pointeur d’interface IVdsAsync dans le paramètre ppAsync , même si l’appel à cette méthode n’initie pas d’opération asynchrone.

La liste des noms WWN et IQN dans le paramètre pwszUnmaskingList peut contenir des noms en double. Il incombe au fournisseur de valider tous les noms de la liste et de supprimer les doublons si nécessaire.

En réponse à la méthode CreateLunInStoragePool et avant de démasquer le nouveau LUN sur n’importe quel hôte, le fournisseur doit remplir le premier et le dernier mégaoctets avec des zéros, laissant la LUN non initialisée.

Il existe une différence subtile entre les valeurs de retour E_INVALIDARG et VDS_E_NOT_SUPPORTED . Les fournisseurs ne sont pas censés implémenter toutes les fonctionnalités que l’API VDS peut présenter à un client. Par exemple, la méthode CreateLunInStoragePool expose la possibilité de créer de nombreux types de LUN différents (par exemple, simples, miroir, rayés et parité). Toutefois, les fournisseurs ne sont pas tenus de prendre en charge tous les types de LUN. Si l’appelant spécifie une valeur pour le paramètre de type qui n’est pas une valeur d’énumération VDS_LUN_TYPE valide, le fournisseur doit retourner E_INVALIDARG. Si l’appelant spécifie une valeur de type valide que le fournisseur ne prend pas en charge, le fournisseur doit retourner VDS_E_NOT_SUPPORTED.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête vds.h
Bibliothèque Uuid.lib

Voir aussi

IVdsHwProviderStoragePools

IVdsLun2 ::QueryHints2

IVdsLun ::GetProperties

VDS_HINTS2

VDS_LUN_TYPE