Obtains and decodes extended BAR address space information from a PCI device.
The PCIDEV structure should be fully initialized, as returned from a call to PciFindDevice, PciFindClass or PciReadHeader.
BOOLEAN PciGetExtendedAddressSpace(
    PCIDEV *pPciDevice, 
    PCISPACE *space, 
    LPDWORD pdwCount);
Parameters
pPciDevice 
- A pointer to a PCIDEV structure, initialized as described above. 
 pSpace 
- A pointer to an array of PCISPACE structures which will be filled with the extended BAR information for the device. 
 pdwCount 
- A pointer to the count of the elements referenced by pSpace. After a successful call returns the number of extended address spaces found. 
 
Example
Use this call before calling PciReadHeader, as follows:
| PciGetExtendedAddressSpace sample | 
 Copy Code   | 
| 
 PCIDEV pci; #define PCISPACE_CNT 6 #define MYBAR 4 PCISPACE sp[PCISPACE_CNT]; LPDWORD regs; // read the header info for device @ PCI 2:0.0 pci.wBusNum = 2; pci.wDeviceNum = 0; pci.wFunction = 0; // Read the device header information PciReadHeader(&pci); // in this example, BAR 4 has a 64-bit memory space DWORD flags = PciSpaceFlags(&pci, MYBAR); if (flags & IOSPACE_64BIT){     DWORD count = PCISPACE_CNT;     if (PciGetExtendedAddressSpace(&pci, sp, &count)) {         // find the entry for BAR MYBAR         for (int i = 0; i < count; i++) {             if (((sp[i].flags & IOSPACE_BAR_INDEX_MASK) >> IOSPACE_BAR_INDEX_SHIFT) == MYBAR) {                 // map the 64-bit physical address of the first extended BAR range                 regs = MapRtPhysicalAddress64(sp[i].start, (DWORD)sp[i].size, 0);                 break;             }         }     } }  | 
 
Return Values
TRUE, if the device exists. Otherwise FALSE.
Requirements
| Versions | 
Defined in | 
Include | 
Link to | 
| INtime 6.3 | 
intime/rt/include/pcibus.h | 
pcibus.h | 
pcibus.lib | 
      
            
            See Also