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


Проверки ошибок для отладки минипорта 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 обычно связана с полным сбросом шины, но может также быть связана с ошибками контроллера.