Partager via


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

Spécifie la liste de démasquage, qui est la liste des ordinateurs auxquels l’accès au LUN doit être accordé.

Syntaxe

HRESULT SetMask(
  [in] LPWSTR pwszUnmaskingList
);

Paramètres

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

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 la valeur est « », l’accès est révoqué pour tous les ordinateurs auxquels l’accès au LUN a été précédemment accordé.

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 nom WWN ou iSCSI. En outre, l’accès n’est pas cumulatif. En d’autres termes, si cette méthode est appelée deux fois de suite, seuls les ordinateurs spécifiés dans le deuxième appel se voient accorder l’accès.
 

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/valeur de retour Description
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Cette valeur de retour signale un problème logiciel ou de communication à l’intérieur d’un fournisseur qui met en cache des informations sur le tableau. Utilisez la méthode IVdsHwProvider ::Reenumerate suivie de la méthode IVdsHwProvider ::Refresh pour restaurer le cache.
VDS_E_OBJECT_DELETED
0x8004240BL
L’objet LUN n’est plus présent.
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
La LUN est dans un état d’échec et ne peut pas effectuer l’opération demandée.
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
Une autre opération est en cours ; cette opération ne peut pas se poursuivre tant que la ou les opérations précédentes ne sont pas terminées.

Remarques

Avant d’appeler la méthode SetMask pour masquer un LUN, l’appelant doit désinstaller les disques correspondants comme suit. Tout d’abord, récupérez l’ID d’objet VDS du disque qui correspond au LUN masqué en appelant IVdsServiceUninstallDisk ::GetDiskIdFromLunInfo. Appelez ensuite IVdsServiceUninstallDisk ::UninstallDisks avec l’ID d’objet VDS du disque.

Windows Server 2003 et Windows Server 2003 avec SP1 : Pour désinstaller les disques correspondants, procédez comme suit. Notez que ces étapes sont devenues obsolètes avec Windows Server 2003 R2.

  1. Recherchez les volumes sur les disques à masquer comme suit :
    1. Pour chaque disque, appelez la méthode IVdsDisk ::QueryExtents pour énumérer les étendues de disque. Cette méthode retourne une liste de structures VDS_DISK_EXTENT . Le membre volumeId de cette structure contient le GUID de volume.
    2. Énumérez les volumes gérés par le fournisseur de logiciels en appelant la méthode IVdsSwProvider ::QueryPacks pour énumérer les packs et en appelant IVdsPack ::QueryVolumes pour énumérer les volumes de chaque pack. Appelez IVdsVolume ::GetProperties pour obtenir la structure VDS_VOLUME_PROP pour chaque volume. Le membre id de cette structure contient le GUID de volume. Le membre pwszName contient le nom du volume à passer à CreateFile pour obtenir un handle de volume.
    3. Utilisez les GUID de volume obtenus en appelant IVdsDisk ::QueryExtents pour déterminer les noms de volumes dont vous aurez besoin dans la liste des volumes énumérés.
  2. Verrouillez chaque volume à l’aide du code de contrôle FSCTL_LOCK_VOLUME . Si le LUN est déplacé vers une autre machine en tant que volume intact et qu’une autre application contient un verrou de volume, vous devez réessayer l’opération FSCTL_LOCK_VOLUME si possible avant de passer à l’étape suivante. Toutefois, si le volume est uniquement verrouillé et démonté en raison de sa suppression, il n’est pas nécessaire de réessayer l’opération FSCTL_LOCK_VOLUME .
    Note Cette étape est facultative. L’objectif de cette étape est de permettre à d’autres applications qui peuvent contenir des verrous de les libérer. Même si l’opération de verrouillage échoue, vous devez passer à l’étape suivante.
     
  3. Démontez chaque volume à l’aide du code de contrôle FSCTL_DISMOUNT_VOLUME .
  4. Si les volumes se trouvent sur des disques de base, mettez-les hors connexion à l’aide du code de contrôle IOCTL_VOLUME_OFFLINE .
  5. Désinstallez chaque volume à l’aide de la fonction SetupDiCallClassInstaller , en passant DIF_REMOVE pour le paramètre InstallFunction .
  6. Désinstallez chaque disque à l’aide de la fonction SetupDiCallClassInstaller , en passant DIF_REMOVE pour le paramètre InstallFunction .
  7. Supprimez des chemins d’accès en mode utilisateur, tels que les dossiers montés et les affectations de lettres de lecteur, du Registre en appelant la méthode IVdsService ::CleanupObsoleteMountPoints .

Une fois qu’un LUN est démasqué sur une machine cible ou masqué à partir d’un ordinateur cible, sa visibilité sur cet ordinateur ne peut pas changer tant qu’une nouvelle analyse de bus n’est pas effectuée. L’application VDS sur l’ordinateur cible lance la nouvelle analyse du bus en appelant IVdsService ::Reenumerate. Le lancement de la nouvelle analyse du bus est de la responsabilité de l’application VDS, et non du fournisseur de matériel.

Configuration requise

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

Voir aussi

IVdsHwProvider ::Réenumerate

IVdsHwProvider ::Refresh

IVdsLun