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.