функция обратного вызова TAPE_ERROR_ROUTINE (minitape.h)

TAPE_ERROR_ROUTINE обеспечивает обработку ошибок, относящихся к устройству, когда SRB завершается с состоянием ошибки. Эта подпрограмма является необязательной.

Синтаксис

TAPE_ERROR_ROUTINE TapeErrorRoutine;

VOID TapeErrorRoutine(
  [in]      PVOID MinitapeExtension,
  [in]      PSCSI_REQUEST_BLOCK Srb,
  [in, out] PTAPE_STATUS TapeStatus
)
{...}

Параметры

[in] MinitapeExtension

Указатель на расширение minitape для конкретного драйвера. Это значение NULL, если драйвер миникласса не запрашивал расширение minitape при инициализации.

[in] Srb

Указатель на SRB для операции, которая завершилась сбоем.

[in, out] TapeStatus

Указатель на TAPE_STATUS, заданный драйвером класса ленты. Драйвер миникласса ленты может изменить TAPE_STATUS или оставить его неизменным.

Возвращаемое значение

Никакой

Замечания

Большинство драйверов миниклассов лент не предоставляют подпрограмму TAPE_ERROR_ROUTINE, так как коды TAPE_STATUS, заданные драйвером класса ленты, подходят.

Однако для некоторых устройств драйвер миникласса ленты может определить более подходящий код ошибки, чем драйвер класса ленты. Например, если драйвер класса ленты возвращает TAPE_STATUS_BUS_RESET, драйвер миникласса ленты может определить, что реальная проблема более точно представлена TAPE_STATUS_NO_MEDIA для некоторых устройств.

При необходимости драйвер миникласса ленты указывает точку входа для своей TAPE_ERROR_ROUTINE подпрограммы в структуре TAPE_INIT_DATA_EX, которая передается в TapeClassInitialize из подпрограммы DriverEntry. Для такого драйвера миникласса при возникновении ошибки во время выполнения команды чтения, записи или управления устройством драйвер класса ленты задает соответствующий код TAPE_STATUS и вызывает подпрограмму TAPE_ERROR_ROUTINE драйвера miniclass с расширением минитапа, сбоем SRB и код TAPE_STATUS, который будет возвращен.

TAPE_ERROR_ROUTINE определяет, следует ли изменять состояние, предоставленное драйвером класса ленты, на основе входных параметров и его знаний об устройстве. Если SRB_STATUS_AUTOSENSE_VALID бит установлен в Srb->SrbStatus, то SRB содержит сведения о SCSI-смысле на SenseInfoBuffer. Длина буфера составляет SenseInfoBufferLength. Подпрограмма TAPE_ERROR_ROUTINE должна изучить эти сведения вместе с SrbStatus и ScsiStatus в SRB, чтобы определить, следует ли изменить возвращенную TAPE_STATUS.

Требования

Требование Ценность
целевая платформа Настольный
заголовка minitape.h (include Minitape.h)

См. также

DriverEntry драйвера миникласса ленты

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize