Freigeben über


Analysieren von blockierten Treibern und Time-Outs

Beim Debuggen eines SCSI-Miniporttreibers sind die drei häufigsten Ursachen für Hängen und Timeouts:

  • Der SCSI-Miniport-DPC wird nicht ausgeführt.

  • Der SCSI-Miniport kann die nächste Anforderung nicht anfordern.

  • Eine Anforderung wird vom SCSI-Miniport in der Regel nicht abgeschlossen, da sie auf Kartenregister wartet.

Wenn Sie vermuten, dass der SCSI-Miniport-DPC nicht ausgeführt wird, verwenden Sie !pcr , um die DPC-Warteschlange für den aktuellen Prozessor anzuzeigen. Wenn sich die DPC-Routine des SCSI-Ports in der DPC-Warteschlange befindet, platzieren Sie einen Haltepunkt für diese Routine, um zu bestimmen, ob diese Routine jemals aufgerufen wird. Andernfalls verwenden Sie !scsikd.scsiext auf jedem Gerät. Betrachten Sie die folgende Beispielausgabe der Erweiterung !scsikd.scsiext :

0: kd> !scsikd.scsiext 86353040 
Common Extension:
   < ..omitted.. >
Logical Unit Extension:
  Address (3, 0, 1, 0) Claimed  Enumerated Visible
  LuFlags (0x00000000):
  Retry 0x00          Key 0x008889ff
  Lock 0x00000000  Pause 0x00000000   CurrentLock: 0x00000000
  HwLuExt 0x862e6f00  Adapter 0x8633db28  Timeout 0x0000000a
  NextLun 0x00000000  ReadyLun 0x00000000
  Pending 0x00000000  Busy 0x00000000     Untagged 0x00000000
 
  . . .  
 
Request list @0x86353200:
      Tick count is 2526
      SrbData 8615d700  Srb 8611f4fc  Irp 8611f2b8   Key 60197  <1s
      SrbData 85e72868  Srb 86100c3c Irp 861009f8   Key e29dc7  <1s 

Wenn der Timeoutslot -1 ist und der nicht markierte Slot nicht zero ist oder der Timeoutslot nicht zero ist und Anforderungen angezeigt werden, konnte der Miniport nicht nach der nächsten Anforderung fragen.

Wenn der Wiederholungsslot und der belegte Slot nicht zero sind, kann eine Anforderung möglicherweise nicht vom SCSI-Miniport abgeschlossen werden, da er auf Kartenregister wartet. Wenn die nicht markierten und ausstehenden Slots ungleich sind, wartet der SCSI-Miniport möglicherweise auf Kartenregister. In beiden Fällen ist die Adresse des SCSI-Anforderungsblocks (SRB) die Adresse im belegten Slot und die Adresse der Anforderung, die nicht abgeschlossen wird. Für weitere Informationen zum SRB verwenden Sie die Erweiterung !minipkd.srb mit dieser Adresse als Eingabe.

Die Erweiterung !devobj bestimmt, ob der SCSI-Miniport auf Kartenregister wartet. Verwenden Sie die Geräteobjektadresse des Geräts, das die Anforderung ausgibt, als Eingabe an !devobj. Wenn der aktuelle IRQ nichtzero ist, ist es sehr wahrscheinlich, dass der SCSI-Miniport auf Kartenregister wartet.