I am writing my first WDF device driver. The goal is to design an interface between SW and a FPGA board over PCIe.
After a bit of reading I decided to start with the sample KMDF driver under:
<ddk_path>\7600.16385.1\src\general\pcidrv\kmdf<br>
After a bit of work I got a driver that loads and starts. The problem I have is that the enumerator is root not PCI.
From what I read in another post this may be the reason why when I call WdfCmResourceListGetCount the result is always zero.
Can any one provide some advice that will help me move forward.
Thanks</ddk_path>
How did you install the driver? If you installed it with
Devcon install …
That creates a root enumerated device. You want
Devcon update …
d
debt from my phone
From: xxxxx@hotmail.com
Sent: 8/19/2012 8:24 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] My device drivers Enumerator should be pci but is root
I am writing my first WDF device driver. The goal is to design an interface between SW and a FPGA board over PCIe.
After a bit of reading I decided to start with the sample KMDF driver under:
<ddk_path>\7600.16385.1\src\general\pcidrv\kmdf<br>
After a bit of work I got a driver that loads and starts. The problem I have is that the enumerator is root not PCI.
From what I read in another post this may be the reason why when I call WdfCmResourceListGetCount the result is always zero.
Can any one provide some advice that will help me move forward.
Thanks
—
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer</ddk_path>
I have tried Devcon update but the enumerator still comes up as root. What exactly determines what the enumerator is.
I can’t seem to figure out how to change this. Is it determined by something in the .inf file or does the device driver have to in some way register to enumerate as PCI.
devcon update testdrv.inf “PCI\VEN_10EE&DEV_6024&SUBS
S_000710EE&REV_00\4&20BDBE28&0&00E0”
Updating drivers for PCI\VEN_10EE&DEV_6024&SUBSYS_000710EE&REV_00\4&20BDBE28&0&0
0E0 from C:\Project\devicedriver\testdrv.inf.
Drivers installed successfully.
devcon find PCI*
PCI\VEN_8086&DEV_0150&SUBSYS_84CA1043&REV_09\3&11583659&0&00: Xeon(R) processor
E3-1200 v2/3rd Gen Core processor DRAM Controller - 0150
PCI\VEN_8086&DEV_1E22&SUBSYS_84CA1043&REV_04\3&11583659&0&FB: Intel(R) 7 Series/
C216 Chipset Family SMBus Host Controller - 1E22
PCI\VEN_8086&DEV_0151&SUBSYS_84CA1043&REV_09\3&11583659&0&08: Xeon(R) processor
E3-1200 v2/3rd Gen Core processor PCI Express Root Port - 0151
PCI\VEN_8086&DEV_1E26&SUBSYS_84CA1043&REV_04\3&11583659&0&E8: Intel(R) 7 Series/
C216 Chipset Family USB Enhanced Host Controller - 1E26
PCI\VEN_8086&DEV_0162&SUBSYS_84CA1043&REV_09\3&11583659&0&10: Intel(R) HD Graphi
cs 4000
PCI\VEN_8086&DEV_1E2D&SUBSYS_84CA1043&REV_04\3&11583659&0&D0: Intel(R) 7 Series/
C216 Chipset Family USB Enhanced Host Controller - 1E2D
PCI\VEN_10DE&DEV_05E6&SUBSYS_11713842&REV_A1\4&BAB4994&0&0008: NVIDIA GeForce GT
X 275 (Microsoft Corporation - WDDM v1.1)
PCI\VEN_8086&DEV_1E02&SUBSYS_84CA1043&REV_04\3&11583659&0&FA: Intel(R) 7 Series/
C216 Chipset Family SATA AHCI Controller
PCI\VEN_8086&DEV_1E31&SUBSYS_84CA1043&REV_04\3&11583659&0&A0: Intel(R) USB 3.0 e
Xtensible Host Controller
PCI\VEN_10EC&DEV_8168&SUBSYS_85051043&REV_09\4&11EB9DBD&0&00E4: Realtek PCIe GBE
Family Controller
PCI\VEN_8086&DEV_1E10&SUBSYS_84CA1043&REV_C4\3&11583659&0&E0: Intel(R) 7 Series/
C216 Chipset Family PCI Express Root Port 1 - 1E10
PCI\VEN_8086&DEV_1E3A&SUBSYS_84CA1043&REV_04\3&11583659&0&B0: Intel(R) Managemen
t Engine Interface
PCI\VEN_10EE&DEV_6024&SUBSYS_000710EE&REV_00\4&20BDBE28&0&00E0: PCI standard RAM
Controller
PCI\VEN_8086&DEV_1E18&SUBSYS_84CA1043&REV_C4\3&11583659&0&E4: Intel(R) 7 Series/
C216 Chipset Family PCI Express Root Port 5 - 1E18
PCI\VEN_8086&DEV_1E44&SUBSYS_84CA1043&REV_04\3&11583659&0&F8: Intel(R) Z77 Expre
ss Chipset LPC Controller - 1E44
PCI\VEN_1B21&DEV_1042&SUBSYS_84881043&REV_00\4&3927C719&0&00E7: ASMedia XHCI Con
troller
PCI\VEN_8086&DEV_1E1E&SUBSYS_84CA1043&REV_C4\3&11583659&0&E7: Intel(R) 7 Series/
C216 Chipset Family PCI Express Root Port 8 - 1E1E
PCI\VEN_8086&DEV_244E&SUBSYS_84CA1043&REV_C4\3&11583659&0&E5: Intel(R) 82801 PCI
Bridge - 244E
PCI\VEN_1B21&DEV_1080&SUBSYS_84891043&REV_03\4&17F33A27&0&00E5: PCI standard PCI
-to-PCI bridge
PCI\VEN_8086&DEV_1E20&SUBSYS_841B1043&REV_04\3&11583659&0&D8: High Definition Au
dio Controller
ROOT\testclass\0000 : test driver
21 matching device(s) found.
ROOT\testclass\0000 : test driver
testclass is my drivers device class
I noticed that the board still shoes up as follows:
PCI\VEN_10EE&DEV_6024&SUBSYS_000710EE&REV_00\4&20BDBE28&0&00E0: PCI standard RAM
Controller
I must be missing something. But I don’t know what?
So you’ve goofed somewhere. It happens.
Open the Device manager and remove your root enumerated device.
Then scan for hardware changes.
If this doesn’t make your PCIe device to appear in Dev. manager, reboot.
Now when you see it in Device manager, click on it and do “Update
driver”. Point it to the location of your driver files (the inf, the sys
and whatever else).
Then it should install properly (be prepared to a crash 
– pa
First thanks Doron & Pavel you helped a lot.
The problem seems to be that my .inf file
was using: PCI\VEN_10EE&DEV_6024&SUBSYS_000710EE&REV_00\4&20BDBE28&0&00E0
as the HW ID. I noticed that when I checked the HW ID for PCI standard RAM
Controller it showed:
PCI\VEN_10EE&DEV_6024&SUBSYS_000710EE&REV_00
PCI\VEN_10EE&DEV_6024&SUBSYS_000710EE
PCI\VEN_10EE&DEV_6024&CC_050000
PCI\VEN_10EE&DEV_6024&CC_0500
So I used these and got it to work.
Now whenever I completely remove the device driver I have to use devcon rescan then
devcon update.
devcon rescan //restores the generic device driver(PCI standard RAM Controller)
devcon update testdrv.inf “PCI\VEN_10EE&DEV_6024&SUBSYS_000710EE” //updates that device driver with mine.
My device driver enumerates as PCI rather than ROOT thanks. Now I can proceed to crash my box repeatedly in the pursuit of a working device driver 