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


Функция ChangerError (mcd.h)

ChangerError выполняет обработку ошибок для конкретного устройства.

Синтаксис

void ChangerError(
  PDEVICE_OBJECT      DeviceObject,
  PSCSI_REQUEST_BLOCK Srb,
  NTSTATUS            *Status,
  BOOLEAN             *Retry
);

Параметры

DeviceObject

Указатель на объект устройства, представляющий средство изменения.

Srb

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

Status

Указывает адрес кода STATUS_XXX, заданного системой. Драйвер мини-класса для меняющего устройства может изменить состояние или оставить его без изменений.

Retry

Указатель на флаг, указывающий, следует ли повторить запрос. Драйвер мини-класса переключителя может установить этот флаг или оставить его как есть.

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

None

Remarks

Эта подпрограмма является обязательной.

Если SRB завершается сбоем с состоянием SCSI CHECK CONDITION, драйвер класса SCSI вызывает подпрограмму ChangerClassError драйвера класса changeror . ChangerClassError выполняет не зависят от устройства обработку ошибок и вызывает подпрограмму ChangerError драйвера miniclass.

ChangerError сначала проверяет Srb-SrbStatus> с SRB_STATUS_AUTOSENSE_VALID, чтобы убедиться, что буфер данных контроля является допустимым. Если это так, он проверяет данные осмысления в Srb-SenseInfoBuffer>, чтобы определить, следует ли обновить *Status с более точным кодом STATUS_XXX и /или установить флаг повтора перед возвращением в драйвер класса средства изменения. Число повторных попыток драйвера класса changer определяет, выполняется ли повторная попытка SRB.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть mcd.h (включая Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL