Procesamiento de solicitudes de control de dispositivos de cinta
Todos los controladores de miniclase de cinta deben notificar el estado con los valores enumerados en el enumerador de TAPE_STATUS . Sin embargo, cuando el controlador de clase de cinta completa una solicitud de control de E/S, notifica el estado mediante los valores de estado NT equivalentes. En la tabla siguiente se proporciona una asignación entre TAPE_STATUS valores y sus valores de estado NT equivalentes:
Valor de estado nt | Valor de estado de cinta |
---|---|
STATUS_INSUFFICIENT_RESOURCES |
TAPE_STATUS_INSUFFICIENT_RESOURCES |
STATUS_NOT_IMPLEMENTED |
TAPE_STATUS_NOT_IMPLEMENTED |
STATUS_INVALID_DEVICE_REQUEST |
TAPE_STATUS_INVALID_DEVICE_REQUEST |
STATUS_INVALID_PARAMETER |
TAPE_STATUS_INVALID_PARAMETER |
STATUS_VERIFY_REQUIRED |
TAPE_STATUS_MEDIA_CHANGED |
STATUS_BUS_RESET |
TAPE_STATUS_BUS_RESET |
STATUS_SETMARK_DETECTED |
TAPE_STATUS_SETMARK_DETECTED |
STATUS_FILEMARK_DETECTED |
TAPE_STATUS_FILEMARK_DETECTED |
STATUS_BEGINNING_OF_MEDIA |
TAPE_STATUS_BEGINNING_OF_MEDIA |
STATUS_END_OF_MEDIA |
TAPE_STATUS_END_OF_MEDIA |
STATUS_BUFFER_OVERFLOW |
TAPE_STATUS_BUFFER_OVERFLOW |
STATUS_NO_DATA_DETECTED |
TAPE_STATUS_NO_DATA_DETECTED |
STATUS_EOM_OVERFLOW |
TAPE_STATUS_EOM_OVERFLOW |
STATUS_NO_MEDIA |
TAPE_STATUS_NO_MEDIA |
STATUS_IO_DEVICE_ERROR |
TAPE_STATUS_IO_DEVICE_ERROR |
STATUS_UNRECOGNIZED_MEDIA |
TAPE_STATUS_UNRECOGNIZED_MEDIA |
STATUS_DEVICE_NOT_READY |
TAPE_STATUS_DEVICE_NOT_READY |
STATUS_MEDIA_WRITE_PROTECTED |
TAPE_STATUS_MEDIA_WRITE_PROTECTED |
STATUS_DEVICE_DATA_ERROR |
TAPE_STATUS_DEVICE_DATA_ERROR |
STATUS_NO_SUCH_DEVICE |
TAPE_STATUS_NO_SUCH_DEVICE |
STATUS_INVALID_BLOCK_LENGTH |
TAPE_STATUS_INVALID_BLOCK_LENGTH |
STATUS_IO_TIMEOUT |
TAPE_STATUS_IO_TIMEOUT |
STATUS_DEVICE_NOT_CONNECTED |
TAPE_STATUS_DEVICE_NOT_CONNECTED |
STATUS_DATA_OVERRUN |
TAPE_STATUS_DATA_OVERRUN |
STATUS_DEVICE_BUSY |
TAPE_STATUS_DEVICE_BUSY |
STATUS_DEVICE_REQUIRES_CLEANING |
TAPE_STATUS_REQUIRES_CLEANING |
STATUS_CLEANER_CARTRIDGE_INSTALLED |
TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED |
Cada vez que el controlador de clase debe llamar a una rutina de miniclase más de una vez para completar una solicitud, el controlador de miniclase usa el estado de retorno para indicar si la solicitud está completa o si se debe llamar de nuevo a la rutina. El controlador de clase de cinta mantiene un recuento de base cero del número de veces que ha llamado a la rutina de miniclase para una solicitud determinada y pasa ese recuento a la rutina como parámetro CallNumber .
Una rutina de miniclase devuelve uno de los siguientes valores de estado para indicar que el controlador de clase debe llamar de nuevo a la rutina:
TAPE_STATUS_SEND_SRB_AND_CALLBACK
Este valor devuelto dirige al controlador de clase de cinta para enviar el SRB al dispositivo. Normalmente, una rutina de miniclase de cinta devuelve este estado después de rellenar el SRB pasado por el controlador de clase de cinta. Si la operación se realiza correctamente, el controlador de clase incrementa CallNumber y vuelve a llamar a la rutina de miniclase. Si se produce un error en el SRB, el controlador de clase llama de nuevo a la rutina de miniclase en función del valor de RetryFlags.
TAPE_STATUS_CHECK_TEST_UNIT_READY
Este valor devuelto dirige al controlador de clase de cinta para crear un SRB para el comando listo para la unidad de prueba y para enviar el SRB al dispositivo.
TAPE_STATUS_CALLBACK
Este valor devuelto dirige al controlador de clase de cinta para incrementar CallNumber sin enviar un SRB al dispositivo. Esto simplifica las instrucciones case que admiten varios dispositivos. Por ejemplo, supongamos que la mayoría de los dispositivos de cinta admitidos por un controlador miniclase determinado requieren tres SRB para procesar una determinada solicitud. Sin embargo, un dispositivo solo requiere el primer y tercer SRB. Para el dispositivo único, el controlador de miniclase de cinta puede devolver TAPE_STATUS_CALLBACK para omitir el segundo SRB, lo que permite al controlador usar el mismo código para procesar la solicitud de todos los dispositivos que admite.
TAPE_STATUS_REQUIRES_CLEANING
Si un dispositivo de cinta admite la notificación de limpieza en los datos en lugar de como un error, la rutina tapeMiniGetStatus del controlador de miniclase de cinta devuelve este estado para indicar al controlador de clase de cinta que la unidad necesita limpieza.
Cuando la rutina de miniclase finaliza el procesamiento de una solicitud(ya sea correctamente o con un error después de que se agoten los reintentos), vuelve al controlador de clase de cinta con un TAPE_STATUS_XXX que indica el éxito o error de la solicitud.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de