Partilhar via


Verificações de bugs para depuração de miniportes SCSI

Há principalmente duas verificações de bug que surgem no curso da depuração de um driver de miniporto SCSI: marcar 0x77 de bugs (KERNEL_STACK_INPAGE_ERROR) e marcar 0x7A de bugs (KERNEL_DATA_INPAGE_ERROR). Para obter detalhes completos de seus parâmetros, consulte 0x77 de Verificação de Bugs e 0x7A de Verificação de Bugs.

Cada uma dessas verificações de bug indica que ocorreu um erro de paginação. Há três main causas para essas verificações de bugs:

  • Redefinição completa do barramento devido a um tempo limite em um dispositivo específico ou nenhuma atividade em um adaptador

  • Tempo limite de seleção

  • Erros do controlador

Para determinar a causa precisa da falha, comece usando a extensão !scsikd.classext, que exibe informações sobre solicitações com falha recentemente, incluindo os dados SRB status, SCSI status e sense da solicitação.

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 -

...

No exemplo anterior, opcode 0x2A indica uma operação de gravação e 0x28 indica uma operação de leitura. O status SCSI no exemplo é 02, o que indica uma condição marcar. Os códigos de sentido fornecem mais informações de erro.

Como sempre, os desenvolvedores de driver de miniport são responsáveis por associar códigos de erro de seu hardware aos códigos de status SRB. Normalmente, os tempos limite são associados ao 0x0A SRB, o código para um tempo limite de seleção. O 0x0e SRB normalmente está associado a uma redefinição de barramento completa, mas também pode ser associado a erros do controlador.