Freigeben über


Erweiterungen zum Debuggen von SCSI-Miniporttreibern

Beim Debuggen von SCSI-Miniporttreibern finden Sie möglicherweise die folgenden Debuggererweiterungen nützlich. Allgemeine Debuggererweiterungen werden zuerst aufgeführt, gefolgt von den spezifischen Erweiterungen für das SCSI-Miniportdebuggen.

!devobj
Die Erweiterung !devobj zeigt detaillierte Informationen zu einer DEVICE_OBJECT an. Wenn das Feld Current Irp nicht ungültig ist, kann dies durch den SCSI-Treiber verursacht werden, der auf Kartenregister wartet.

Beispiel:

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
Die Erweiterung !errlog zeigt den Inhalt aller ausstehenden Einträge im Fehlerprotokoll des E/A-Systems an.

!Objekt
Die Erweiterung !object zeigt Informationen zu einem Systemobjekt an. Diese Erweiterung zeigt alle SCSI-Geräte an.

Beispiel:

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
Die Erweiterung !pcr zeigt detaillierte Informationen zur Prozessorsteuerungsregion (Processor Control Region, PCR) auf einem Prozessor an. Die Informationen enthalten die Elemente in der DPC-Warteschlange, die nützlich sein können. wenn Sie einen blockierten Treiber oder ein Timeout debuggen.

!minipkd.help
Die Erweiterung !minipkd.help zeigt eine Liste aller Minipkd.dll-Erweiterungsbefehle an.

Wenn eine Fehlermeldung ähnlich der folgenden angezeigt wird, gibt dies an, dass der Symbolpfad falsch ist und nicht auf die richtige Version der Scsiport.sys Symbole verweist.

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

Der Befehl .sympath (Symbolpfad festlegen) kann verwendet werden, um den aktuellen Pfad anzuzeigen und den Pfad zu ändern. Mit dem Befehl .reload (Modul neu laden) werden Symbole aus dem aktuellen Pfad neu geladen.

!minipkd.adapter Adapter
Die Erweiterung !minipkd.adapter zeigt detaillierte Informationen zu einem angegebenen Adapter an. Den Adapter finden Sie im Feld DevExt im Display !minipkd.adapters .

!minipkd.adapters
Die Erweiterung !minipkd.adapters zeigt alle Adapter an, die mit dem von Windows identifizierten SCSI-Porttreiber arbeiten, und die einzelnen Geräte, die den einzelnen Adaptern zugeordnet sind.

Beispiel:

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 

Eine Fehlermeldung ähnlich der folgenden gibt an, dass entweder der Symbolpfad falsch ist und nicht auf die richtige Version der Scsiport.sys Symbole verweist, oder dass Windows keine Adapter identifiziert hat, die mit dem SCSI-Porttreiber funktionieren:

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

Wenn der Erweiterungsbefehl !minipkd.help erfolgreich Hilfeinformationen zurückgibt, sind die Symbole für den SCSI-Port richtig.

!minipkd.exports Adapter
Die Erweiterung !minipkd.exports zeigt die Adressen der Miniportexporte für den angegebenen Adapter an.

!minipkd.lun {LUN | Device}
Die Erweiterung !minipkd.lun zeigt detaillierte Informationen zu einer angegebenen Logischen Einheitenerweiterung (Logical Unit Extension, LUN) an. Die LUN kann entweder durch ihre Adresse angegeben werden (die anhand des LUN-Felds im Display !minipkd.adapters gefunden werden kann) oder durch ihr physisches Geräteobjekt (das im DevObj-Feld der Anzeige !minipkd.adapters gefunden werden kann).

!minipkd.portconfig PortConfig
Die Erweiterung !minipkd.portconfig zeigt detaillierte Informationen zu einem angegebenen PORT_CONFIGURATION_DATA an. PortConfig finden Sie im Feld Portkonfigurationsinformationen der Anzeige !minipkd.adapter.

!minipkd.req {Adapter | Device}
Die Erweiterung !minipkd.req zeigt Informationen zu allen aktuell aktiven Anforderungen auf dem angegebenen Adapter oder LUN-Gerät an.

!minipkd.srb SRB
Die Erweiterung !minipkd.srb zeigt detaillierte Informationen zu einem angegebenen SCSI-Anforderungsblock (SRB) an. Der SRB wird durch Adresse angegeben. Die Adressen aller aktuell aktiven Anforderungen finden Sie in den SRB-Feldern der Ausgabe des Befehls !minipkd.req .

!scsikd.classext [Device [Level]]
Die Erweiterung !scsikd.classext zeigt detaillierte Informationen zu einer angegebenen Klasse Plug & Play -Gerät (PnP) oder eine Liste aller dieser Geräte an. Das Gerät ist das Geräteobjekt oder die Geräteerweiterung der Klasse PnP-Gerät. Wenn Device ausgelassen wird, wird eine Liste aller PnP-Klassenerweiterungen angezeigt.

Beispiel:

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 Device
Die Erweiterung !scsikd.scsiext zeigt detaillierte Informationen zu einer angegebenen SCSI-Porterweiterung an. Das Gerät kann das Geräteobjekt oder die Geräteerweiterung des Adapters oder der LUN sein.

Hier einige Beispiele:

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
Die Erweiterung !scsikd.srbdata zeigt detaillierte Informationen zu einem angegebenen SRB_DATA Nachverfolgungsblocks an.