Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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) |