SCSI 미니포트 디버깅에 대한 버그 검사

SCSI 미니포트 드라이버를 디버깅하는 과정에서 발생하는 버그 검사는 주로 버그 검사 0x77(KERNEL_STACK_INPAGE_ERROR) 및 버그 검사 0x7A(KERNEL_DATA_INPAGE_ERROR)입니다. 해당 매개 변수에 대한 자세한 내용은 버그 검사 0x77버그 검사 0x7A 참조하세요.

이러한 각 버그 검사는 페이징 오류가 발생했음을 나타냅니다. 이러한 버그 검사에는 세 가지 기본 원인이 있습니다.

  • 특정 디바이스의 시간 제한 또는 어댑터의 활동 없음으로 인해 전체 버스 재설정

  • 선택 시간 제한

  • 컨트롤러 오류

실패의 정확한 원인을 확인하려면 먼저 SRB 상태, SCSI 상태 및 요청의 감지 데이터를 포함하여 최근에 실패한 요청에 대한 정보를 표시하는 !scsikd.classext 확장을 사용합니다.

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 -

...

이전 예제에서 opcode 0x2A 쓰기 작업을 나타내고 0x28 읽기 작업을 나타냅니다. 예제의 SCSI 상태 검사 조건을 나타내는 02입니다. 센스 코드는 더 많은 오류 정보를 제공합니다.

언제나처럼 미니포트 드라이버 개발자는 하드웨어의 오류 코드를 SRB 상태 코드에 연결해야 합니다. 일반적으로 시간 제한은 선택 시간 제한에 대한 코드인 SRB 0x0A 연결됩니다. SRB 0x0e 일반적으로 전체 버스 재설정과 연결되지만 컨트롤러 오류와도 연결할 수 있습니다.