Leggere in inglese

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.