Condividi tramite


Verifica dei bug per il debug miniport SCSI

Ci sono principalmente due controlli di bug che si verificano durante il debug di un driver miniport SCSI: controllo dei bug 0x77 (KERNEL_STACK_INPAGE_ERROR) e verifica bug 0x7A (KERNEL_DATA_INPAGE_ERROR). Per informazioni dettagliate sui parametri, vedere Verifica bug 0x77 e Verifica bug 0x7A.

Ognuno di questi controlli di bug indica che si è verificato un errore di paging. Esistono tre cause principali per questi controlli di bug:

  • Reimpostazione completa del bus a causa di un timeout in un determinato dispositivo o nessuna attività in un adattatore

  • Timeout selezione

  • Errori del controller

Per determinare la causa precisa dell'errore, iniziare usando l'estensione !scsikd.classext , che visualizza informazioni sulle richieste non riuscite di recente, tra cui lo stato SRB, lo stato SCSI e i dati di senso della richiesta.

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 -

...

Nell'esempio precedente, opcode 0x2A indica un'operazione di scrittura e 0x28 indica un'operazione di lettura. Lo stato SCSI nell'esempio è 02, che indica una condizione di controllo. I codici di senso forniscono ulteriori informazioni sugli errori.

Come sempre, gli sviluppatori di driver miniport sono responsabili dell'associazione dei codici di errore dall'hardware ai codici di stato SRB. In genere, i timeout sono associati a SRB 0x0A, il codice per un timeout di selezione. La 0x0e SRB è in genere associata a una reimpostazione completa del bus, ma può anche essere associata agli errori del controller.