Partager via


Extensions pour le débogage des pilotes SCSI Miniport

Lorsque vous déboguez des pilotes de miniport SCSI, vous pouvez trouver les extensions de débogueur suivantes utiles. Les extensions de débogueur général sont répertoriées en premier, suivies de celles spécifiques au débogage miniport SCSI.

!devobj
L’extension !devobj affiche des informations détaillées sur un DEVICE_OBJECT. Si le champ Irp actuel n’est pas mou, cela peut être dû au pilote SCSI qui attend des registres de carte.

Voici un exemple :

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’extension !errlog affiche le contenu de toutes les entrées en attente dans le journal des erreurs du système d’E/S.

!Objet
L’extension !object affiche des informations sur un objet système. Cette extension affiche tous les appareils SCSI.

Par exemple :

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’extension !pcr affiche des informations détaillées sur la région de contrôle du processeur (PCR) sur un processeur. Les informations incluent les éléments de la file d’attente DPC, ce qui peut être utile. lorsque vous déboguez un pilote bloqué ou un délai d’attente.

!minipkd.help
L’extension !minipkd.help affiche la liste de toutes les commandes d’extension Minipkd.dll.

Si un message d’erreur semblable à ce qui suit s’affiche, il indique que le chemin du symbole est incorrect et ne pointe pas vers la version correcte des symboles Scsiport.sys.

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

La commande .sympath (Définir le chemin du symbole) peut être utilisée pour afficher le chemin actuel et modifier le chemin. La commande .reload (recharger le module) recharge les symboles à partir du chemin actuel.

Adaptateur !minipkd.adapter
L’extension !minipkd.adapter affiche des informations détaillées sur une carte spécifiée. Vous pouvez trouver l’adaptateur en examinant le champ DevExt dans l’affichage !minipkd.adapters .

!minipkd.adapters
L’extension !minipkd.adapters affiche tous les adaptateurs qui fonctionnent avec le pilote de port SCSI qui ont été identifiés par Windows, ainsi que les appareils individuels associés à chaque carte.

Voici un exemple :

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 message d’erreur similaire à ce qui suit indique que le chemin du symbole est incorrect et ne pointe pas vers la version correcte des symboles Scsiport.sys, ou que Windows n’a pas identifié d’adaptateurs qui fonctionnent avec le pilote de port SCSI :

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

Si la commande d’extension !minipkd.help retourne correctement les informations d’aide, les symboles de port SCSI sont corrects.

Adaptateur !minipkd.exports
L’extension !minipkd.exports affiche les adresses des exportations miniport pour l’adaptateur spécifié.

!minipkd.lun {LUN | Appareil}
L’extension !minipkd.lun affiche des informations détaillées sur une extension d’unité logique (LUN) spécifiée. La LUN peut être spécifiée par son adresse (qui peut être trouvée en examinant le champ LUN dans l’affichage !minipkd.adapters ) ou par son objet d’appareil physique (qui se trouve dans le champ DevObj de l’affichage !minipkd.adapters ).

!minipkd.portconfig PortConfig
L’extension !minipkd.portconfig affiche des informations détaillées sur un PORT_CONFIGURATION_DATA spécifié. Le PortConfig se trouve dans le champ Informations sur la configuration du port de l’affichage !minipkd.adapter .

!minipkd.req {Adaptateur | Appareil}
L’extension !minipkd.req affiche des informations sur toutes les requêtes actuellement actives sur l’adaptateur ou le périphérique LUN spécifié.

!minipkd.srb SRB
L’extension !minipkd.srb affiche des informations détaillées sur un bloc de requête SCSI (SRB) spécifié. Le SRB est spécifié par adresse. Les adresses de toutes les requêtes actuellement actives se trouvent dans les champs SRB de la sortie de la commande !minipkd.req .

!scsikd.classext [Appareil [Niveau]]
L’extension !scsikd.classext affiche des informations détaillées sur un appareil de Plug-and-Play de classe (PnP) spécifié ou une liste de tous ces appareils. L’appareil est l’objet d’appareil ou l’extension d’appareil de l’appareil pnP de classe. Si l’appareil est omis, une liste de toutes les extensions PnP de classe s’affiche.

Voici un exemple :

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
L’extension !scsikd.scsiext affiche des informations détaillées sur une extension de port SCSI spécifiée. L’appareil peut être l’objet d’appareil ou l’extension d’appareil de l’adaptateur ou de la LUN.

Voici quelques exemples :

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’extension !scsikd.srbdata affiche des informations détaillées sur un bloc de suivi SRB_DATA spécifié.