次の方法で共有


停止したドライバーとタイムアウトの分析

SCSI ミニポート ドライバーをデバッグする場合、ハングとタイムアウトの最も一般的な 3 つの原因は次のとおりです。

  • SCSI ミニポート DPC が実行されていない

  • SCSI ミニポートが次の要求を要求できない

  • 通常、マップ レジスタを待っているため、SCSI ミニポートによって要求が完了されない。

SCSI ミニポート DPC が実行されていないと思われる場合は、!pcr を使用して、現在のプロセッサの 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 で、タグなしスロットが 0 以外の場合、またはタイムアウト スロットが 0 以外で、要求が表示されている場合、ミニポートは次の要求を要求できませんでした。

または、再試行スロットとビジー スロットが 0 以外の場合は、マップ レジスタを待っているため、SCSI ミニポートによって要求が完了しない可能性があります。 同様に、タグなしスロットと保留中のスロットが 0 以外の場合、SCSI ミニポートがマップ レジスタを待っている可能性があります。 どちらの場合も、SCSI 要求ブロック (SRB) のアドレスは、ビジー スロット内のアドレスと、完了していない要求のアドレスです。 SRB の詳細については、このアドレスを入力として !minipkd.srb 拡張コマンドを使用してください。

!devobj 拡張コマンドは、SCSI ミニポートがマップ レジスタを待っているかどうかを判断します。 要求を発行しているデバイスのデバイス オブジェクト アドレスを !devobj への入力として使用します。 現在の IRQ が 0 以外の場合、SCSI ミニポートがマップ レジスタを待っている可能性が高くなります。