IOCTL_EHSTOR_BANDMGMT_CREATE_BAND IOCTL (ehstorbandmgmt.h)
Las nuevas bandas se crean en un dispositivo de almacenamiento administrado por banda con la solicitud IOCTL_EHSTOR_BANDMGMT_CREATE_BAND . Se agrega una nueva banda a la tabla de entradas de banda, que incluye la ubicación de banda y las propiedades de seguridad.
Código principal
Búfer de entrada
El búfer de Irp-AssociatedIrp.SystemBuffer> debe contener una estructura de CREATE_BAND_PARAMETERS seguida de las estructuras de BAND_LOCATION_INFO, BAND_SECURITY_INFO y AUTH_KEY.
Si el miembro AuthKeyOffset de CREATE_BAND_PARAMETERS se establece en EHSTOR_BANDMGR_NO_KEY, los datos de entrada del búfer del sistema no necesitan incluir una estructura de AUTH_KEY .
Longitud del búfer de entrada
Parameters.DeviceIoControl.InputBufferLength indica el tamaño, en bytes, del búfer, que debe ser al menos sizeof (CREATE_BAND_PARAMETERS) + sizeof(BAND_LOCATION_INFO) + sizeof (BAND_SECURITY_INFO) + sizeof(AUTH_KEY).
Búfer de salida
El búfer de salida de Irp-AssociatedIrp.SystemBuffer> contiene opcionalmente un valor ULONG para el identificador de la banda recién creada.
Longitud del búfer de salida
Parameters.DeviceIoControl.OutputBufferLength debe tener al menos sizeof(ULONG) para recibir el identificador de banda. Si no se desea devolver el identificador de banda, establezca Parameters.DeviceIoControl.OutputBufferLength en 0.
Bloque de estado
Se puede devolver uno de los valores siguientes en el campo Estado .
Valor de estado | Descripción |
---|---|
STATUS_SUCCESS | Se creó la nueva banda. |
STATUS_INVALID_DEVICE_REQUEST | El dispositivo de almacenamiento no admite la administración de bandas. |
STATUS_INVALID_BUFFER_SIZE | El tamaño del búfer de entrada no es válido. |
STATUS_INVALID_PARAMETER | La información del búfer de entrada no es válida. |
STATUS_CONFLICTING_ADDRESSES | La banda no se creó debido a ubicaciones superpuestas. |
STATUS_INSUFFICIENT_RESOURCES | La banda no se creó porque la tabla de bandas ya está llena. |
STATUS_IO_DEVICE_ERROR | Error de comunicación. El dispositivo de almacenamiento podría ser incompatible con los protocolos de seguridad. |
Comentarios
La asignación de una clave de autenticación a una banda recién creada es opcional. Si no se proporciona ninguna clave, donde AuthKeyOffset = EHSTOR_BANDMGR_NO_KEY en la estructura CREATE_BAND_PARAMETERS , se usa una clave de autenticación predeterminada. Sin embargo, esto deja a la banda vulnerable a otro autor de la llamada que puede tomar el control de la banda inmediatamente después de su creación cambiando su clave de autenticación. Se recomienda asignar una clave de autenticación no predeterminada a la banda en el momento de la creación.
Los cambios realizados en la tabla de bandas por esta solicitud se confirman en el dispositivo de forma atómica antes de que se complete la solicitud IOCTL. Por lo tanto, se garantiza que la banda se crea con todas sus propiedades establecidas o no creadas en absoluto si se produce un error de alimentación o sistema.
La ubicación de la nueva banda no debe superponerse con una banda existente o se producirá un error en esta solicitud con STATUS_CONFLICTING_ADDRESSES.
Si la banda está desbloqueada, los miembros ReadLock o WriteLock de BAND_SECURITY_INFO se establecen en FALSE y CREATEBAND_AUTHKEY_CACHING_ENABLED se establece en el miembro Flags de CREATE_BAND_PARAMETERS, se habilita el almacenamiento en caché de credenciales. El controlador de silo de autenticación almacenará en caché la clave de autenticación de banda en la memoria. Esto permite que el controlador de silo autentique automáticamente el acceso de host al dispositivo de almacenamiento cuando se requiera mantenimiento del volumen, como cambiar el tamaño de la banda.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 8 |
Encabezado | ehstorbandmgmt.h (incluya EhStorBandMgmt.h) |