Проверки ошибок для отладки минипорта SCSI
В ходе отладки драйвера минипорта SCSI в основном выполняются две проверки ошибок: проверка 0x77 ошибок (KERNEL_STACK_INPAGE_ERROR) и проверка 0x7A ошибок (KERNEL_DATA_INPAGE_ERROR). Подробные сведения об этих параметрах см. в разделах 0x77 проверки ошибок и 0x7A проверки ошибок.
Каждая из этих проверок ошибок указывает на то, что произошла ошибка разбиения по страницам. Существует три main причины этих проверок ошибок:
Полный сброс шины из-за истечения времени ожидания на определенном устройстве или отсутствия действий на адаптере
Время ожидания выбора
Ошибки контроллера
Чтобы определить точную причину сбоя, начните с расширения !scsikd.classext , которое отображает сведения о недавних неудачных запросах, включая состояние SRB, состояние SCSI и данные о состоянии запроса.
kd> !scsikd.classext 816e96b0
Storage class device 816e96b0 with extension at 816e9768
Classpnp Internal Information at 817b4008
Failed requests:
Srb Scsi
Opcode Status Status Sense Code Sector Time Stamp
------ ------ ------ ---------- -------- ------------
2a 0a 02 03 0c 00 0000abcd 23:01:07.453 Retried
28 0a 02 03 04 00 0000abcd 23:01:07.984 Retried
dt classpnp!_CLASS_PRIVATE_FDO_DATA 817b4008 -
...
В предыдущем примере 0x2A кода операции обозначает операцию записи, а 0x28 — операцию чтения. Состояние SCSI в примере — 02, что указывает на условие проверка. Коды смыслов предоставляют дополнительные сведения об ошибках.
Как всегда, разработчики драйверов мини-портов несут ответственность за связывание кодов ошибок из оборудования с кодами состояния SRB. Как правило, время ожидания связано с 0x0A SRB, кодом для истечения времени ожидания выбора. SRB 0x0e обычно связана с полным сбросом шины, но может также быть связана с ошибками контроллера.