I have a PCI device that controls two memory ranges. 0x000c8000 is the physical address in the devices entry in Device manager.
The other physical address in 0xf1000000.
My question is that during the setup of the driver agent using the device manager it simply asks for a name for range 1 and a name for range 2. How do I know what physical address corresponds to each range which I name.
DriverAgent will assign on ordinal value to the "named" range. So, if there is more than one memory range, the ordinal is critical. The resources must appear in Device Manager in the same order as they appear in the device's configuration space. This is how Agent assigns the ordinal.
The first BAR of type Mem Range will be assigned to the first named mem range in Device Manager. The second BAR of type Mem Range will be assigned to the second named mem range in Device Manager. You can see the ordinal in
the registry in the device database for each i/o or memory range.
So when agentcd.sys claims the resource, the first "named" mem range in
DeviceManager will get the first memory range on the card.