Функция 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 |