Поделиться через


функция обратного вызова 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)

См. также раздел

DriverEntry of Tape Miniclass Driver

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize