TAPE_ERROR_ROUTINE función de devolución de llamada (minitape.h)
TAPE_ERROR_ROUTINE proporciona control de errores específico del dispositivo cuando se completa un SRB con un estado de error. Esta rutina es opcional.
Sintaxis
TAPE_ERROR_ROUTINE TapeErrorRoutine;
void TapeErrorRoutine(
[in] PVOID MinitapeExtension,
[in] PSCSI_REQUEST_BLOCK Srb,
[in, out] PTAPE_STATUS TapeStatus
)
{...}
Parámetros
[in] MinitapeExtension
Puntero a la extensión minitape específica del controlador. Esto es NULL si el controlador de miniclase no solicitó una extensión de minitape cuando se inicializó.
[in] Srb
Puntero al SRB de la operación que produjo un error.
[in, out] TapeStatus
Puntero al TAPE_STATUS establecido por el controlador de clase de cinta. El controlador de miniclase de cinta puede cambiar el TAPE_STATUS o dejarlo sin cambios.
Valor devuelto
None
Observaciones
La mayoría de los controladores de miniclase de cinta no proporcionan una rutina de TAPE_ERROR_ROUTINE porque los códigos de TAPE_STATUS establecidos por el controlador de clase de cinta son adecuados.
Sin embargo, en algunos dispositivos, un controlador de miniclase de cinta puede identificar un código de error más adecuado que el controlador de clase de cinta. Por ejemplo, si el controlador de clase de cinta devuelve TAPE_STATUS_BUS_RESET, es posible que el controlador de miniclase de cinta pueda determinar que el problema real se representa con mayor precisión mediante TAPE_STATUS_NO_MEDIA para algunos dispositivos.
Opcionalmente, un controlador de miniclase de cinta especifica un punto de entrada para su rutina de TAPE_ERROR_ROUTINE en la estructura TAPE_INIT_DATA_EX que pasa a TapeClassInitialize desde su rutina DriverEntry . Para este tipo de controlador de miniclase, cuando se produce un error durante un comando de lectura, escritura o control de dispositivo, el controlador de clase de cinta establece un código de TAPE_STATUS adecuado y llama a la rutina del controlador de miniclase TAPE_ERROR_ROUTINE con la extensión minitape, el SRB con errores y el código de TAPE_STATUS que se devolvería.
TAPE_ERROR_ROUTINE determina si se modifica el estado proporcionado por el controlador de clase de cinta en función de los parámetros de entrada y su conocimiento del dispositivo. Si el bit de SRB_STATUS_AUTOSENSE_VALID se establece en Srb-SrbStatus>, el SRB contiene información de sentido SCSI en SenseInfoBuffer. La longitud del búfer es SenseInfoBufferLength. La rutina de TAPE_ERROR_ROUTINE debe examinar esta información junto con SrbStatus y ScsiStatus en el SRB para determinar si se debe cambiar el TAPE_STATUS devuelto.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | minitape.h (incluya Minitape.h) |