Partager via


Vérifications de bogues pour le débogage du miniport SCSI

Il existe principalement deux vérifications de bogues qui surviennent lors du débogage d’un pilote de miniport SCSI : case activée 0x77 de bogues (KERNEL_STACK_INPAGE_ERROR) et case activée 0x7A de bogues (KERNEL_DATA_INPAGE_ERROR). Pour plus d’informations sur leurs paramètres, consultez Vérification des bogues 0x77 et Vérification des bogues 0x7A.

Chacune de ces vérifications de bogues indique qu’une erreur de pagination s’est produite. Il existe trois causes main pour ces vérifications de bogues :

  • Réinitialisation complète du bus en raison d’un délai d’expiration sur un appareil particulier ou de l’absence d’activité sur un adaptateur

  • Délai d’expiration de la sélection

  • Erreurs du contrôleur

Pour déterminer la cause précise de l’échec, commencez par utiliser l’extension !scsikd.classext, qui affiche des informations sur les demandes ayant échoué récemment, notamment les status SRB, les status SCSI et les données de détection de la demande.

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 -

...

Dans l’exemple précédent, opcode 0x2A indique une opération d’écriture et 0x28 indique une opération de lecture. La status SCSI dans l’exemple est 02, ce qui indique une condition case activée. Les codes sense fournissent plus d’informations sur les erreurs.

Comme toujours, les développeurs de pilotes miniport sont chargés d’associer les codes d’erreur de leur matériel aux codes de status SRB. En règle générale, les délais d’expiration sont associés à SRB 0x0A, le code d’un délai d’expiration de sélection. SRB 0x0e est généralement associé à une réinitialisation complète du bus, mais il peut également être associé à des erreurs de contrôleur.