Método IVdsLun::SetMask (vds.h)
[A partir de Windows 8 y Windows Server 2012, la interfaz COM del servicio de disco virtual se sustituye por la API de administración de almacenamiento de Windows.]
Especifica la lista de desenmascarado, que es la lista de equipos a los que se va a conceder acceso al LUN.
Sintaxis
HRESULT SetMask(
[in] LPWSTR pwszUnmaskingList
);
Parámetros
[in] pwszUnmaskingList
Lista que especifica los equipos a los que se va a conceder acceso al LUN. La lista es una cadena delimitada por punto y coma, terminada en NULL y legible por personas.
Si el valor es "", todos los equipos que tienen un puerto HBA conectado al subsistema de almacenamiento tendrán acceso al LUN.
Si el valor es "", se revoca el acceso para todos los equipos a los que se concedió acceso previamente al LUN.
Si se especifica "*" o "", no se puede especificar ningún otro valor.
En el caso de las redes de canal de fibra y las redes SCSI (SAS) conectadas en serie, cada entrada es un nombre mundial de 64 bits (WWN) de cada puerto al que el LUN está sin máscara, con formato de cadena hexadecimal (16 caracteres de longitud), primero el byte más significativo. Por ejemplo, una dirección WWN de 01:23:45:67:89:AB:CD:EF se representa como "0123456789ABCDEF". Para obtener más información, consulte las especificaciones T10 para Canal de fibra y SAS.
En el caso de las redes iSCSI, cada entrada es un nombre completo iSCSI (IQN) de cada iniciador al que el LUN está desenmascarado. Un LUN sin máscara a un iniciador determinado se considera que está asociado a ese iniciador.
Valor devuelto
Este método puede devolver valores HRESULT estándar, como E_INVALIDARG o E_OUTOFMEMORY, y valores devueltos específicos de VDS. También puede devolver códigos de error del sistema convertidos mediante la macro HRESULT_FROM_WIN32 . Los errores se pueden originar en VDS en sí o en el proveedor de VDS subyacente que se está usando. Entre los posibles valores devueltos se incluyen los siguientes.
Código o valor devuelto | Descripción |
---|---|
|
Este valor devuelto indica un problema de software o comunicación dentro de un proveedor que almacena en caché información sobre la matriz. Use el método IVdsHwProvider::Reenumerate seguido del método IVdsHwProvider::Refresh para restaurar la memoria caché. |
|
El objeto LUN ya no está presente. |
|
El LUN está en un estado de error y no puede realizar la operación solicitada. |
|
Otra operación está en curso; esta operación no puede continuar hasta que se completen las operaciones o operaciones anteriores. |
Comentarios
Antes de llamar al método SetMask para enmascarar un LUN, el autor de la llamada debe desinstalar los discos correspondientes de la siguiente manera. En primer lugar, recupere el identificador del objeto VDS del disco que corresponde al LUN enmascarado mediante una llamada a IVdsServiceUninstallDisk::GetDiskIdFromLunInfo. A continuación, llame a IVdsServiceUninstallDisk::UninstallDisks con el identificador de objeto VDS del disco.
Windows Server 2003 y Windows Server 2003 con SP1: Para desinstalar los discos correspondientes, realice los pasos siguientes. Tenga en cuenta que estos pasos se han quedado obsoletos con Windows Server 2003 R2.
- Busque los volúmenes en los discos que se van a enmascarar de la siguiente manera:
- Para cada disco, llame al método IVdsDisk::QueryExtents para enumerar las extensiones del disco. Este método devuelve una lista de estructuras de VDS_DISK_EXTENT . El miembro volumeId de esta estructura contiene el GUID del volumen.
- Enumere los volúmenes administrados por el proveedor de software mediante una llamada al método IVdsSwProvider::QueryPacks para enumerar los paquetes y llamar a IVdsPack::QueryVolumes para enumerar los volúmenes de cada paquete. Llame a IVdsVolume::GetProperties para obtener la estructura de VDS_VOLUME_PROP para cada volumen. El miembro id de esta estructura contiene el GUID del volumen. El miembro pwszName contiene el nombre del volumen que se va a pasar a CreateFile para obtener un identificador de volumen.
- Use los GUID de volumen obtenidos mediante una llamada a IVdsDisk::QueryExtents para determinar cuáles de los nombres de volumen necesitará de la lista de volúmenes enumerados.
- Bloquee cada volumen mediante el código de control FSCTL_LOCK_VOLUME . Si el LUN se mueve a otra máquina como un volumen intacto y otra aplicación contiene un bloqueo de volumen, debe reintentar la operación de FSCTL_LOCK_VOLUME si es posible antes de continuar con el paso siguiente. Sin embargo, si el volumen solo se bloquea y se desmonta porque se elimina, no es necesario volver a intentar la operación de FSCTL_LOCK_VOLUME .
Nota Este paso es opcional. El propósito de este paso es permitir que otras aplicaciones que puedan contener bloqueos para liberarlos. Incluso si se produce un error en la operación de bloqueo, debe continuar con el paso siguiente.
- Desmonte cada volumen mediante el código de control FSCTL_DISMOUNT_VOLUME .
- Si los volúmenes están en discos básicos, tómelos sin conexión mediante el código de control IOCTL_VOLUME_OFFLINE .
- Desinstale cada volumen mediante la función SetupDiCallClassInstaller y pase DIF_REMOVE para el parámetro InstallFunction .
- Desinstale cada disco mediante la función SetupDiCallClassInstaller y pase DIF_REMOVE para el parámetro InstallFunction .
- Quite las rutas de acceso en modo de usuario, como carpetas montadas y asignaciones de letras de unidad, del Registro mediante una llamada al método IVdsService::CleanupObsoleteMountPoints .
Después de desenmascarar un LUN en una máquina de destino o enmascararse desde una máquina de destino, es posible que la visibilidad del LUN en esa máquina no cambie hasta que se realice un nuevo examen de bus. La aplicación VDS en la máquina de destino inicia el nuevo examen del bus mediante una llamada a IVdsService::Reenumerate. El inicio del examen de bus es responsabilidad de la aplicación VDS, no del proveedor de hardware.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | vds.h |
Library | Uuid.lib |