Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous déboguez Plug-and-Play pilotes, les extensions de débogueur suivantes peuvent vous être utiles.
!Arbitre
Affiche les arbitres de ressources système actuels. Un arbitre est un morceau de code exposé par le pilote de bus qui arbitre les demandes de ressources et tente de résoudre les conflits de ressources entre les appareils connectés sur ce bus.
!cmreslist
Affiche la CM_RESOURCE_LIST pour l’objet d’appareil spécifié.
Vous devez connaître l’adresse de la liste de ressources cm.
Voici un exemple :
kd> !cmreslist 0xe12576e8
CmResourceList at 0xe12576e8 Version 0.0 Interface 0x1 Bus #0
Entry 0 - Port (0x1) Device Exclusive (0x1)
Flags (0x01) - PORT_MEMORY PORT_IO
Range starts at 0x3f8 for 0x8 bytes
Entry 1 - Interrupt (0x2) Shared (0x3)
Flags (0x01) - LATCHED
Level 0x4, Vector 0x4, Affinity 0xffffffff
Cela montre que l’appareil avec cette liste de ressources CM utilise la plage d’E/S 3F8-3FF et IRQ 4.
!Dcs
Cette extension est obsolète : ses fonctionnalités ont été subsumées par !pci. Consultez l’exemple !pci 100 plus loin dans cette section.
!devext
Affiche les informations d’extension d’appareil spécifiques au bus pour divers appareils.
!devnode
Affiche des informations sur un nœud dans l’arborescence de l’appareil.
Le nœud d’appareil 0 (zéro) est la racine de l’arborescence de l’appareil.
Voici un exemple :
0: kd> !devnode 0xfffffa8003634af0
DevNode 0xfffffa8003634af0 for PDO 0xfffffa8003658590
Parent 0xfffffa8003604010 Sibling 0xfffffa80036508e0 Child 0000000000
InstancePath is "ROOT\SYSTEM\0000"
ServiceName is "swenum"
State = DeviceNodeStarted (0x308)
Previous State = DeviceNodeEnumerateCompletion (0x30d)
StateHistory[09] = DeviceNodeEnumerateCompletion (0x30d)
StateHistory[08] = DeviceNodeEnumeratePending (0x30c)
StateHistory[07] = DeviceNodeStarted (0x308)
StateHistory[06] = DeviceNodeStartPostWork (0x307)
StateHistory[05] = DeviceNodeStartCompletion (0x306)
StateHistory[04] = DeviceNodeStartPending (0x305)
...
Flags (0x6c000131) DNF_MADEUP, DNF_ENUMERATED,
DNF_IDS_QUERIED, DNF_NO_RESOURCE_REQUIRED,
DNF_NO_LOWER_DEVICE_FILTERS, DNF_NO_LOWER_CLASS_FILTERS,
DNF_NO_UPPER_DEVICE_FILTERS, DNF_NO_UPPER_CLASS_FILTERS
UserFlags (0x00000008) DNUF_NOT_DISABLEABLE
DisableableDepends = 1 (including self)
!devobj
Affiche des informations détaillées sur un DEVICE_OBJECT.
Voici un exemple :
kd> !devobj 0xff0d4af0
Device object (ff0d4af0) is for:
00252d \Driver\PnpManager DriverObject ff0d9030
Current Irp 00000000 RefCount 0 Type 00000004 Flags 00001040AttachedDev ff0b59e0
DevExt ff0d4ba8 DevNode ff0d4a08
Device queue is not busy.
!Pilotes
La commande !drivers n’est plus prise en charge. Utilisez la commande lm t n à la place.
!drvobj
Affiche des informations détaillées sur un DRIVER_OBJECT.
Répertorie tous les objets d’appareil créés par le pilote spécifié.
Voici un exemple :
kd> !drvobj serial
Driver object (ff0ba630) is for:
\Driver\Serial
Driver Extension List: (id , addr)
Device Object list:
ffba3040 ff0b4040 ff0b59e0 ff0b5040
!ecb, !ecd, !ecw
(ordinateurs cibles x86 uniquement) Écrit une séquence de valeurs dans l’espace de configuration PCI.
ib, iw, id
Lit les données à partir d’un port d’E/S.
Ces trois commandes sont utiles pour déterminer si une certaine plage d’E/S est revendiquée par un appareil autre que le pilote débogué. Une valeur d’octet de 0xFF à un port indique que le port n’est pas utilisé.
!ioreslist
Affiche le IO_RESOURCE_REQUIREMENTS_LIST spécifié.
!irp
Affiche des informations sur un IRP.
!irpfind
Affiche des informations sur tous les IRP actuellement alloués dans le système cible, ou des informations sur les IRP dont les champs correspondent aux critères de recherche spécifiés.
!Pci
(ordinateurs cibles x86 uniquement) Affiche la status actuelle des bus PCI et de tous les appareils qui y sont attachés. Il peut également afficher l’espace de configuration PCI.
L’exemple suivant affiche les appareils sur le bus principal :
kd> !pci
PCI Bus 0
00:0 8086:1237.02 Cmd[0106:.mb..s] Sts[2280:.....] Device Host bridge
0d:0 8086:7000.01 Cmd[0007:imb...] Sts[0280:.....] Device ISA bridge
0d:1 8086:7010.00 Cmd[0005:i.b...] Sts[0280:.....] Device IDE controller
0e:0 1011:0021.01 Cmd[0107:imb..s] Sts[0280:.....] PciBridge 0->1-1 PCI-PCI
bridge
10:0 5333:8811.43 Cmd[0023:im.v..] Sts[0200:.....] Device VGA compatible controller
The following example displays the devices for the secondary bus, with verbose output:
kd> !pci 1 1
PCI Bus 1
08:0 10b7:5900.00 Cmd[0107:imb..s] Sts[0200:.....] Device Ethernet
cf8:80014000 IntPin:1 IntLine:f Rom:fa000000 cis:0 cap:0
IO[0]:fce1
09:0 9004:8178.00 Cmd[0117:imb..s] Sts[0280:.....] Device SCSI controller
cf8:80014800 IntPin:1 IntLine:f Rom:fa000000 cis:0 cap:0
IO[0]:f801 MEM[1]:f9fff000
0b:0 9004:5800.10 Cmd[0116:.mb..s] Sts[0200:.....] Device SubID:9004:8940
1394 host controller
cf8:80015800 IntPin:1 IntLine:e Rom:fa000000 cis:0 cap:0
MEM[0]:f9ffec00
L’exemple suivant affiche l’espace de configuration PCI pour le contrôleur SCSI (bus 1, appareil 9, fonction 0) :
kd> !pci 100 1 9 0
00: 9004 ;VendorID=9004
02: 8178 ;DeviceID=8178
04: 0117 ;Command=SERREnable,MemWriteEnable,BusInitiate,MemSpaceEnable,IOSpac
eEnable
06: 0280 ;Status=FB2BCapable,DEVSELTiming:1
08: 00 ;RevisionID=00
09: 00 ;ProgIF=00 (SCSI bus controller)
0a: 00 ;SubClass=00
0b: 01 ;BaseClass=01 (Mass storage controller)
0c: 08 ;CacheLineSize=Burst8DW
0d: 20 ;LatencyTimer=20
0e: 00 ;HeaderType=00
0f: 00 ;BIST=00
10: 0000f801;BAR0=0000f801
14: f9fff000;BAR1=f9fff000
18: 00000000;BAR2=00000000
1c: 00000000;BAR3=00000000
20: 00000000;BAR4=00000000
24: 00000000;BAR5=00000000
28: 00000000;CBCISPtr=00000000
2c: 0000 ;SubSysVenID=0000
2e: 0000 ;SubSysID=0000
30: fa000000;ROMBAR=fa000000
34: 00000000;Reserved=00000000
38: 00000000;Reserved=00000000
3c: 0f ;IntLine=0f
3d: 01 ;IntPin=01
3e: 08 ;MinGnt=08
3f: 08 ;MaxLat=08
40: 00001580,00001580,00000000,00000000,00000000,00000000,00000000,00000000
60: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000
80: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000
a0: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000
c0: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000
e0: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000
!pcitree
Affiche des informations sur les objets d’appareil PCI, notamment les bus PCI enfants et les bus CardBus, ainsi que les appareils qui y sont attachés.
!pnpevent
Affiche la file d’attente d’événements d’appareil PnP.
!rellist
Affiche une liste de relations PnP et toutes les structures CM_RESOURCE_LIST et IO_RESOURCE_LIST associées.