функция обратного вызова 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
Указатель на расширение мини-приложения для конкретного драйвера. Это значение равно NULL , если драйвер мини-класса не запрашивал расширение мини-приложения при инициализации.
[in] Srb
Указатель на SRB для операции, которая завершилась сбоем.
[in, out] TapeStatus
Указатель на TAPE_STATUS , заданный драйвером класса ленты. Драйвер мини-класса ленты может изменить TAPE_STATUS или оставить его без изменений.
Возвращаемое значение
None
Remarks
Большинство драйверов ленточных мини-классов не предоставляют 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 драйвера мини-класса с расширением minitape, неудачным 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 (включая Minitape.h) |