Freigeben über


Fehlerüberprüfungen für SCSI-Miniportdebugging

Beim Debuggen eines SCSI-Miniporttreibers entstehen hauptsächlich zwei Fehlerüberprüfungen: Die Fehlerüberprüfung 0x77 (KERNEL_STACK_INPAGE_ERROR) und die Fehlerprüfung 0x7A (KERNEL_DATA_INPAGE_ERROR). Ausführliche Informationen zu ihren Parametern finden Sie unter Fehlerüberprüfung 0x77 und Fehlerüberprüfung 0x7A.

Jede dieser Fehlerüberprüfungen weist darauf hin, dass ein Pagingfehler aufgetreten ist. Für diese Fehlerüberprüfungen gibt es drei Standard Ursachen:

  • Vollständiges Zurücksetzen des Busses aufgrund eines Timeouts auf einem bestimmten Gerät oder keiner Aktivität auf einem Adapter

  • Auswahltimeout

  • Controllerfehler

Um die genaue Ursache des Fehlers zu ermitteln, verwenden Sie zunächst die Erweiterung !scsikd.classext, die Informationen zu kürzlich fehlgeschlagenen Anforderungen anzeigt, einschließlich der SRB-status, der SCSI-status und der Sense-Daten der Anforderung.

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 -

...

Im vorherigen Beispiel gibt opcode 0x2A einen Schreibvorgang und 0x28 einen Lesevorgang an. Die SCSI-status im Beispiel ist 02, was eine Überprüfungsbedingung angibt. Die Sinnescodes bieten weitere Fehlerinformationen.

Wie immer sind Miniporttreiberentwickler für das Zuordnen von Fehlercodes von ihrer Hardware zu den SRB-status-Codes verantwortlich. In der Regel werden Timeouts dem SRB-0x0A zugeordnet, dem Code für ein Auswahltimeout. SRB-0x0e ist in der Regel einer vollständigen Buszurücksetzung zugeordnet, kann aber auch mit Controllerfehlern verknüpft sein.