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.
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.
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 |
---|---|
|
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. |
|
L'oggetto LUN non è più presente. |
|
Il LUN si trova in uno stato di errore e non è in grado di eseguire l'operazione richiesta. |
|
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.
- Individuare i volumi nei dischi da mascherare come indicato di seguito:
- 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.
- 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.
- Usare i GUID del volume ottenuti chiamando IVdsDisk::QueryExtents per determinare i nomi dei volumi necessari dall'elenco dei volumi enumerati.
- 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.
- Smontare ogni volume usando il codice di controllo FSCTL_DISMOUNT_VOLUME .
- Se i volumi si trovano su dischi di base, portarli offline usando il codice di controllo IOCTL_VOLUME_OFFLINE .
- Disinstallare ogni volume usando la funzione SetupDiCallClassInstaller , passando DIF_REMOVE per il parametro InstallFunction .
- Disinstallare ogni disco usando la funzione SetupDiCallClassInstaller , passando DIF_REMOVE per il parametro InstallFunction .
- 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 |