分析停止的驅動程式和 Time-Outs
偵錯 SCSI 迷你埠驅動程式時,最常見的停止回應和逾時原因如下:
SCSI 迷你埠 DPC 未執行
SCSI 迷你埠無法要求下一個要求
SCSI 迷你埠未完成要求,通常是因為它正在等候地圖暫存器。
如果您懷疑 SCSI 迷你埠 DPC 未執行,請使用 !pc 來顯示目前處理器的 DPC 佇列。 如果 SCSI 埠 DPC 常式位於 DPC 佇列中,請在此常式上放置中斷點,以判斷是否呼叫此常式。 否則,請在每部裝置上使用 !scsikd.scsiext 。 請考慮 下列來自 !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
如果逾時位置為 -1 且未標記的插槽為非零,或逾時位置為非零且顯示要求,則迷你埠無法要求下一個要求。
或者,如果重試位置和忙碌位置為非零,SCSI 迷你埠可能無法完成要求,因為它正在等候地圖暫存器。 同樣地,如果未標記和擱置的插槽為非零,SCSI 迷你埠可能會等待地圖暫存器。 在這兩種情況下,SCSI 要求區塊的位址 (SRB) 是忙碌位置中的位址,以及未完成的要求位址。 如需 SRB 的詳細資訊,請使用 !minipkd.srb 延伸模組搭配此位址作為輸入。
!devobj延伸模組會判斷 SCSI 迷你埠是否正在等候地圖暫存器。 使用發出要求作為 !devobj輸入之裝置的裝置物件位址。 如果目前的 IRQ 不是零,則 SCSI 迷你埠可能正在等候地圖暫存器。