Dela via


Tillägg för felsökning av Plug and Play-drivrutiner

När du felsöker Plug and Play-drivrutiner kan följande felsökningstillägg vara användbara.

!arbiter
Visar de aktuella systemresurss arbiters. En skiljedomare är en kod som exponeras av busschauffören som godtyckligt hanterar begäranden om resurser och försöker lösa resurskonflikterna mellan de enheter som är anslutna på bussen.

!cmreslist
Visar CM_RESOURCE_LIST för det angivna enhetsobjektet.

Du måste känna till adressen till CM-resurslistan.

Här är ett exempel:

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

Detta visar att enheten med den här CM-resurslistan använder I/O Range 3F8-3FF och IRQ 4.

!dcs
This extension is obsolete -- its functionality has been subsumed by !pci. Se !pci 100-exemplet senare i det här avsnittet.

!devext
Visar information om bussspecifikt enhetstillägg för en mängd olika enheter.

!devnode
Visar information om en nod i enhetsträdet.

Enhetsnod 0 (noll) är roten i enhetsträdet.

Här är ett exempel:

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
Visar detaljerad information om en DEVICE_OBJECT.

Här är ett exempel:

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.

!drivers
The !drivers command is no longer supported. Använd kommandot lm t n i stället.

!drvobj
Visar detaljerad information om en DRIVER_OBJECT.

Visar en lista över alla enhetsobjekt som skapats av den angivna drivrutinen.

Här är ett exempel:

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
(endast x86-måldatorer) Skriver en sekvens med värden i PCI-konfigurationsutrymmet.

ib, iw, id
Läser data från en I/O-port.

Dessa tre kommandon är användbara för att avgöra om ett visst I/O-intervall begärs av en annan enhet än drivrutinen som debuggas. Ett bytevärde på 0xFF vid en port anger att porten inte används.

!ioreslist
Visar den angivna IO_RESOURCE_REQUIREMENTS_LIST.

!irp
Visar information om en IRP.

!irpfind
Visar information om alla IRP:er som för närvarande har allokerats i målsystemet, eller information om de IP-adresser vars fält matchar de angivna sökvillkoren.

!pci
(endast x86-måldatorer) Visar aktuell status för PCI-bussarna och alla enheter som är anslutna till dem. Den kan också visa PCI-konfigurationsutrymmet.

I följande exempel visas enheterna på den primära bussen:

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

I följande exempel visas PCI-konfigurationsutrymmet för SCSI-styrenheten (buss 1, enhet 9, funktion 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
Visar information om PCI-enhetsobjekt, inklusive underordnade PCI-bussar och CardBus-bussar, samt de enheter som är anslutna till dem.

!pnpevent
Visar PnP-enhetens händelsekö.

!rellist
Visar en PnP-relationslista och eventuella relaterade CM_RESOURCE_LIST och IO_RESOURCE_LIST strukturer.