Metodo IVdsLun::SetMask (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.]

Specifica l'elenco di annullamento del mascheramento, ovvero l'elenco di computer a cui concedere l'accesso al LUN.

Sintassi

HRESULT SetMask(
  [in] LPWSTR pwszUnmaskingList
);

Parametri

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

Nota In pratica, se il valore è "", la maggior parte dei provider hardware concede solo le porte e gli iniziatori nel computer locale l'accesso al LUN.

 

Se il valore è "", l'accesso viene revocato per tutti i computer a cui è stato precedentemente concesso l'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.

Nota L'elenco di annullamento del mascheramento può contenere più volte lo stesso WWN o IQN. Il chiamante non dovrebbe rimuovere duplicati dall'elenco o per convalidare il formato del nome WWN o iSCSI. Inoltre, l'accesso non è cumulativo. In altre parole, se questo metodo viene chiamato due volte in successione, solo ai computer specificati nella seconda chiamata viene concesso l'accesso.
 

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/valore restituito Descrizione
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Questo valore restituito segnala un problema di comunicazione o software all'interno di un provider che memorizza nella cache le informazioni sulla matrice. Usare il metodo IVdsHwProvider::Reenumerate seguito dal metodo IVdsHwProvider::Refresh per ripristinare la cache.
VDS_E_OBJECT_DELETED
0x8004240BL
L'oggetto LUN non è più presente.
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
Il LUN si trova in uno stato di errore e non è in grado di eseguire l'operazione richiesta.
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
Un'altra operazione è in corso; questa operazione non può continuare fino al completamento dell'operazione o delle operazioni precedenti.

Commenti

Prima di chiamare il metodo SetMask per mascherare un LUN, il chiamante deve disinstallare i dischi corrispondenti come indicato di seguito. Recuperare prima di tutto l'ID oggetto VDS del disco corrispondente al LUN mascherato chiamando IVdsServiceUninstallDisk::GetDiskIdFromLunInfo. Chiamare quindi IVdsServiceUninstallDisk::UninstallDisks con l'ID oggetto VDS del disco.

Windows Server 2003 e Windows Server 2003 con SP1: Per disinstallare i dischi corrispondenti, seguire questa procedura. Si noti che questi passaggi sono diventati obsoleti con Windows Server 2003 R2.

  1. Individuare i volumi nei dischi da mascherare come indicato di seguito:
    1. Per ogni disco, chiamare il metodo IVdsDisk::QueryExtents per enumerare gli extent del disco. Questo metodo restituisce un elenco di strutture VDS_DISK_EXTENT . Il membro volumeId di questa struttura contiene il GUID del volume.
    2. Enumerare i volumi gestiti dal provider software chiamando il metodo IVdsSwProvider::QueryPacks per enumerare i pacchetti e chiamare IVdsPack::QueryVolumes per enumerare i volumi in ogni pacchetto. Chiamare IVdsVolume::GetProperties per ottenere la struttura VDS_VOLUME_PROP per ogni volume. Il membro ID di questa struttura contiene il GUID del volume. Il membro pwszName contiene il nome del volume da passare a CreateFile per ottenere un handle di volume.
    3. Usare i GUID del volume ottenuti chiamando IVdsDisk::QueryExtents per determinare i nomi dei volumi necessari dall'elenco dei volumi enumerati.
  2. Bloccare ogni volume usando il codice di controllo FSCTL_LOCK_VOLUME . Se il LUN viene spostato in un altro computer come volume intatto e un'altra applicazione contiene un blocco del volume, è consigliabile ripetere l'operazione di FSCTL_LOCK_VOLUME , se possibile, prima di continuare con il passaggio successivo. Tuttavia, se il volume viene bloccato e smontato solo perché viene eliminato, non è necessario ripetere l'operazione di FSCTL_LOCK_VOLUME .
    Nota Questo passaggio è facoltativo. Lo scopo di questo passaggio è consentire ad altre applicazioni che possono contenere blocchi per rilasciarli. Anche se l'operazione di blocco non riesce, è necessario continuare con il passaggio successivo.
     
  3. Smontare ogni volume usando il codice di controllo FSCTL_DISMOUNT_VOLUME .
  4. Se i volumi si trovano su dischi di base, portarli offline usando il codice di controllo IOCTL_VOLUME_OFFLINE .
  5. Disinstallare ogni volume usando la funzione SetupDiCallClassInstaller , passando DIF_REMOVE per il parametro InstallFunction .
  6. Disinstallare ogni disco usando la funzione SetupDiCallClassInstaller , passando DIF_REMOVE per il parametro InstallFunction .
  7. Rimuovere i percorsi in modalità utente, ad esempio cartelle montate e assegnazioni di lettere di unità, dal Registro di sistema chiamando il metodo IVdsService::CleanupObsoleteMountPoints .

Dopo che un LUN viene mascherato in un computer di destinazione o mascherato da un computer di destinazione, la visibilità del LUN su tale computer potrebbe non cambiare fino a quando non viene eseguita una nuova analisi del bus. L'applicazione VDS nel computer di destinazione avvia la nuova analisi del bus chiamando IVdsService::Reenumerate. L'avvio della ripetizione dell'analisi del bus è responsabilità dell'applicazione VDS, non del provider hardware.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione vdshwprv.h
Libreria Uuid.lib

Vedi anche

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLun