Condividi tramite


Estensioni per il debug di driver miniport SCSI

Quando si esegue il debug dei driver miniport SCSI, è possibile che siano utili le estensioni del debugger seguenti. Le estensioni generali del debugger sono elencate per prime, seguite da quelle specifiche per il debug del miniport SCSI.

!devobj
L'estensione !devobj visualizza informazioni dettagliate su una DEVICE_OBJECT. Se il campo Irp corrente non è null, questo potrebbe essere causato dal driver SCSI in attesa dei registri delle mappe.

Esempio:

0: kd> !devobj 8633da70
Device object (8633da70) is for:
 adpu160m1 \Driver\adpu160m DriverObject 8633eeb8
Current Irp 860ef008 RefCount 0 Type 00000004 Flags 00000050
Dacl e129871c DevExt 8633db28 DevObjExt 8633dfd0
ExtensionFlags (0000000000)
AttachedTo (Lower) 863b2978 \Driver\PCI
Device queue is not busy. 

!errlog
L'estensione !errlog visualizza il contenuto di tutte le voci in sospeso nel log degli errori del sistema di I/O.

!Oggetto
L'estensione !object visualizza informazioni su un oggetto di sistema. Questa estensione visualizza tutti i dispositivi SCSI.

Ad esempio:

0: kd> !object \device\scsi
Object: e12a2520  Type: (863d12c8) Directory
    ObjectHeader: e12a2508
    HandleCount: 0  PointerCount: 9
    Directory Object: e1001100  Name: Scsi

    Hash Address  Type          Name
    ---- -------  ----          ----
     04  86352040 Device        adpu160m1Port3Path0Target6Lun0
     11  86353040 Device        adpu160m1Port3Path0Target1Lun0
     13  86334a70 Device        lp6nds351
     22  862e6040 Device        adpu160m1Port3Path0Target0Lun0
     24  8633da70 Device        adpu160m1
     25  86376040 Device        adpu160m2
     34  862e5040 Device        adpu160m1Port3Path0Target2Lun0 

!Pcr
L'estensione !pcr visualizza informazioni dettagliate sull'area di controllo del processore (PCR) in un processore. Le informazioni includono gli elementi nella coda DPC, che possono essere utili. quando si esegue il debug di un driver bloccato o di un timeout.

!minipkd.help
L'estensione !minipkd.help visualizza un elenco di tutti i comandi di estensione Minipkd.dll.

Se viene visualizzato un messaggio di errore simile al seguente, indica che il percorso del simbolo non è corretto e non punta alla versione corretta dei simboli Scsiport.sys.

minipkd error (0) <path> ... \minipkd\minipkd.c @ line 435

Il comando .sympath (Imposta percorso simbolo) può essere usato per visualizzare il percorso corrente e per modificare il percorso. Il comando .reload (Reload Module) ricarica i simboli dal percorso corrente.

!minipkd.adapter Adapter
L'estensione !minipkd.adapter visualizza informazioni dettagliate su una scheda specificata. L'adapter è reperibile esaminando il campo DevExt nella visualizzazione !minipkd.adapters.

!minipkd.adapters
L'estensione !minipkd.adapters visualizza tutte le schede che funzionano con il driver porta SCSI identificate da Windows e i singoli dispositivi associati a ogni scheda.

Esempio:

0: kd> !minipkd.adapters
Adapter \Driver\lp6nds35     DO 86334a70         DevExt 86334b28
Adapter \Driver\adpu160m     DO 8633da70         DevExt 8633db28
 LUN 862e60f8 @(0,0,0) c ev     pnp(00/ff) pow(0,0) DevObj 862e6040
 LUN 863530f8 @(0,1,0) c ev p d pnp(00/ff) pow(0,0) DevObj 86353040
 LUN 862e50f8 @(0,2,0) c ev     pnp(00/ff) pow(0,0) DevObj 862e5040
 LUN 863520f8 @(0,6,0)   ev     pnp(00/ff) pow(0,0) DevObj 86352040
Adapter \Driver\adpu160m     DO 86376040         DevExt 863760f8 

Un messaggio di errore simile al seguente indica che il percorso del simbolo non è corretto e non punta alla versione corretta dei simboli di Scsiport.sys oppure che Windows non ha identificato schede che funzionano con il driver porta SCSI:

minipkd error (0) <path> ... \minipkd\minipkd.c @ line 435

Se il comando di estensione !minipkd.help restituisce correttamente le informazioni della Guida, i simboli di porta SCSI sono corretti.

!minipkd.export Adapter
L'estensione !minipkd.exports visualizza gli indirizzi delle esportazioni miniport per l'adattatore specificato.

!minipkd.lun {LUN | Dispositivo}
L'estensione !minipkd.lun visualizza informazioni dettagliate su un'estensione unità logica (LUN) specificata. Il LUN può essere specificato dal relativo indirizzo (che può essere trovato esaminando il campo LUN nella visualizzazione !minipkd.adapters ) o dal relativo oggetto dispositivo fisico (disponibile nel campo DevObj della visualizzazione !minipkd.adapters ).

!minipkd.portconfig PortConfig
L'estensione !minipkd.portconfig visualizza informazioni dettagliate su un PORT_CONFIGURATION_DATA specificato. PortConfig è disponibile nel campo Informazioni di configurazione porta dello schermo !minipkd.adapter.

!minipkd.req {Adapter | Dispositivo}
L'estensione !minipkd.req visualizza informazioni su tutte le richieste attualmente attive nella scheda o nel dispositivo LUN specificato.

!minipkd.srb SRB
L'estensione !minipkd.srb visualizza informazioni dettagliate su un blocco di richieste SCSI (SRB) specificato. L'SRB viene specificato dall'indirizzo. Gli indirizzi di tutte le richieste attualmente attive sono disponibili nei campi SRB dell'output dal comando !minipkd.req .

!scsikd.classext [Dispositivo [Livello]]
L'estensione !scsikd.classext visualizza informazioni dettagliate su un dispositivo di classe Plug and Play (PnP) specificato o un elenco di tutti questi dispositivi. Device è l'oggetto dispositivo o l'estensione del dispositivo della classe PnP. Se Device viene omesso, viene visualizzato un elenco di tutte le estensioni PnP della classe.

Esempio:

0: kd> !scsikd.classext 

 ' !scsikd.classext 8633e3f0 '   (             ) "IBM     " / "DDYS-T09170M    " / "S93E" / "        XBY45906"
 ' !scsikd.classext 86347b48 '   (paging device) "IBM     " / "DDYS-T09170M    " / "S80D" / "        VDA60491"
  ' !scsikd.classext 86347360 '   (             ) "UNISYS  " / "003451ST34573WC " / "5786" / "HN0220750000181300L6"
  ' !scsikd.classext 861d1898 '   (             ) "" / "MATSHITA CD-ROM CR-177" / "7T03" / ""

 usage: !classext <class fdo> <level [0-2]> 

!scsikd.scsiext Dispositivo
L'estensione !scsikd.scsiext visualizza informazioni dettagliate su un'estensione di porta SCSI specificata. Il dispositivo può essere l'oggetto dispositivo o l'estensione del dispositivo della scheda o del LUN.

Ecco alcuni esempi:

0: kd> !scsikd.scsiext 86353040
Common Extension:
   < ..omitted.. >
Logical Unit Extension:
  Address (3, 0, 1, 0) Claimed  Enumerated Visible
  LuFlags (0x00000000):
  Retry 0x00          Key 0x008889ff
  Lock 0x00000000  Pause 0x00000000   CurrentLock: 0x00000000
  HwLuExt 0x862e6f00  Adapter 0x8633db28  Timeout 0x0000000a
  NextLun 0x00000000  ReadyLun 0x00000000
  Pending 0x00000000  Busy 0x00000000     Untagged 0x00000000
  < ..omitted.. >
Request list @0x86353200:
      Tick count is 2526
      SrbData 8615d700  Srb 8611f4fc  Irp 8611f2b8   Key 60197  <1s
      SrbData 85e72868  Srb 86100c3c Irp 861009f8   Key e29dc7  <1s

0: kd> !scsikd.scsiext 8633da70 
Common Extension:
   < ..omitted.. >
Adapter Extension:
  Port 3     IsPnp VirtualSlot HasInterrupt
  LowerPdo 0x84f9fb68   HwDevExt 0x84634004   Active Requests 0x00000000
  MaxBus 0x03   MaxTarget 0x40   MaxLun 0x08
  Port Flags (0x00001000): PD_DISCONNECT_RUNNING
  NonCacheExt 0x850d4000  IoBase 0xd80f0000   Int 0x23  < ..omitted.. > 

!scsikd.srbdata Address
L'estensione !scsikd.srbdata visualizza informazioni dettagliate su un blocco di rilevamento SRB_DATA specificato.