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.