Compartir a través de


Extensiones para depurar controladores de miniport SCSI

Al depurar controladores de miniporte SCSI, es posible que encuentre útiles las siguientes extensiones del depurador. Las extensiones generales del depurador se enumeran primero, seguidas de las específicas de la depuración de miniporte SCSI.

!devobj
La extensión !devobj muestra información detallada sobre un DEVICE_OBJECT. Si el campo Irp actual no es null, esto podría deberse a que el controlador SCSI espera registros de mapa.

Este es un ejemplo:

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
La extensión !errlog muestra el contenido de las entradas pendientes en el registro de errores del sistema de E/S.

!Objeto
La extensión !object muestra información sobre un objeto del sistema. Esta extensión muestra todos los dispositivos SCSI.

Por ejemplo:

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
La extensión !pcr muestra información detallada sobre la región de control de procesador (PCR) en un procesador. La información incluye los elementos de la cola DPC, que pueden ser útiles. cuando se depura un controlador detenido o se agota el tiempo de espera.

!minipkd.help
La extensión !minipkd.help muestra una lista de todos los comandos de extensión de Minipkd.dll.

Si aparece un mensaje de error similar al siguiente, indica que la ruta de acceso del símbolo es incorrecta y no apunta a la versión correcta de los símbolos de Scsiport.sys.

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

El comando .simpat (Establecer ruta de acceso de símbolos) se puede usar para mostrar la ruta de acceso actual y cambiar la ruta de acceso. El comando .reload (Módulo de recarga) volverá a cargar símbolos desde la ruta de acceso actual.

!minipkd.adapter Adapter
La extensión !minipkd.adapter muestra información detallada sobre un adaptador especificado. El adaptador se puede encontrar examinando el campo DevExt en la pantalla !minipkd.adapters .

!minipkd.adapters
La extensión !minipkd.adapters muestra todos los adaptadores que funcionan con el controlador de puerto SCSI identificado por Windows y los dispositivos individuales asociados a cada adaptador.

Este es un ejemplo:

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 mensaje de error similar al siguiente indica que la ruta de acceso del símbolo es incorrecta y no apunta a la versión correcta de los símbolos de Scsiport.sys o que Windows no ha identificado ningún adaptador que funcione con el controlador de puerto SCSI:

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

Si el comando de extensión !minipkd.help devuelve información de ayuda correctamente, los símbolos del puerto SCSI son correctos.

Adaptador !minipkd.exports
La extensión !minipkd.exports muestra las direcciones de las exportaciones de miniport para el adaptador especificado.

!minipkd.lun {LUN | Device}
La extensión !minipkd.lun muestra información detallada sobre una extensión de unidad lógica (LUN) especificada. El LUN se puede especificar por su dirección (que se puede encontrar examinando el campo LUN en la pantalla !minipkd.adapters ) o por su objeto de dispositivo físico (que se puede encontrar en el campo DevObj de la pantalla !minipkd.adapters ).

!minipkd.portconfig PortConfig
La extensión !minipkd.portconfig muestra información detallada sobre un PORT_CONFIGURATION_DATA especificado. PortConfig se puede encontrar en el campo Información de configuración del puerto de la pantalla !minipkd.adapter.

!minipkd.req {Adapter | Device}
La extensión !minipkd.req muestra información sobre todas las solicitudes activas actualmente en el adaptador o el dispositivo LUN especificados.

!minipkd.srb SRB
La extensión !minipkd.srb muestra información detallada sobre un bloque de solicitud SCSI (SRB) especificado. La SRB se especifica por dirección. Las direcciones de todas las solicitudes activas actualmente se pueden encontrar en los campos SRB de la salida del comando !minipkd.req .

!scsikd.classext [Device [Level]]
La extensión !scsikd.classext muestra información detallada sobre un dispositivo de clase Plug and Play (PnP) especificado o una lista de todos estos dispositivos. El dispositivo es el objeto de dispositivo o la extensión de dispositivo de la clase PnP. Si se omite Device , se muestra una lista de todas las extensiones PnP de clase.

Este es un ejemplo:

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]> 

Dispositivo !scsikd.scsiext
La extensión !scsikd.scsiext muestra información detallada sobre una extensión de puerto SCSI especificada. El dispositivo puede ser el objeto de dispositivo o la extensión del dispositivo del adaptador o del LUN.

Estos son algunos ejemplos:

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.. > 

Dirección !scsikd.srbdata
La extensión !scsikd.srbdata muestra información detallada sobre un bloque de seguimiento de SRB_DATA especificado.