次の方法で共有


SCSI ミニポート デバッグのバグ チェック

SCSI ミニポート ドライバーのデバッグの過程で発生するバグ チェックは主に次の 2 つです: バグ チェック 0x77 (KERNEL_STACK_INPAGE_ERROR) とバグ チェック 0x7A (KERNEL_DATA_INPAGE_ERROR)。 これらのパラメーターの詳細については、「バグ チェック 0x77」と「バグ チェック 0x7A」を参照してください。

これらのバグチェックはそれぞれ、ページング エラーが発生したことを示します。 これらのバグチェックには主に次の 3 つの原因があります。

  • 特定のデバイスでのタイムアウトまたはアダプターでのアクティビティがないことによるフル バス リセット

  • 選択タイムアウト

  • コントローラー エラー

失敗の正確な原因を特定するには、最初に !scsikd.classext 拡張機能を使用します。これにより、SRB の状態、SCSI の状態、要求の感知データなど、最近失敗した要求に関する情報が表示されます。

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 -

...

前の例では、オペコード 0x2A は書き込み操作を示し、0x28 は読み取り操作を示しています。 この例の SCSI の状態は 02 で、チェック状態を示しています。 センス コードは、より多くのエラー情報を提供します。

いつもどおり、ミニポート ドライバーの開発者は、自身のハードウェアから SRB 状態コードにエラー コードを関連付ける責任があります。 通常、タイムアウトは、選択タイムアウトのコードである SRB 0x0A に関連付けられます。 SRB 0x0e は通常、フル バス リセットに関連付けられますが、コントローラー エラーに関連付けることもできます。