8.2. WinDriver for PCI Express

WinDriver fully supports backward compatibility with the standard PCI features on PCI Express boards. The wide support provided by WinDriver for the standard PCI bus — including a rich set of APIs, code samples and the graphical DriverWizard for hardware debugging and driver code generation — is also applicable to PCI Express devices, which by design are backward compatible with the legacy PCI bus.

You can also use WinDriver's PCI API to easily communicate with PCI devices connected to the PC via PCI Express-to-PCI bridges and switches (e.g., the PLX 8111/8114 bridges or the PLX 8532 switch, respectively).

In addition, WinDriver provides you with a set of APIs for easy access to the PCI Express extended configuration space on target platforms that support such access (e.g., Windows and Linux) — see the description of the WDC_PciReadCfgXXX() and WDC_PciWriteCfgXXX() functions in Sections B.3.25–B.3.32 of the present manual, or the description of the lower-level WD_PciConfigDump() function in the WinDriver PCI Low-Level API Reference.

On Linux and Windows 7 and higher, the WinDriver interrupt handling APIs also support Message-Signaled Interrupts (MSI) and Extended Message-Signaled Interrupts (MSI-X), as detailed in Section 9.2 of the manual.

WinDriver also features enhanced support for PCI Express cards that are based on the Xilinx Bus Master DMA (BMD) design or the Altera Qsys design. The WinDriver WinDriver/xilinx/bmd_design and WinDriver/altera/qsys_design directories each contain library APIs and a sample user-mode diagnostic applications for communicating with the respective device type, including DMA and MSI handling code. The Xilinx BMD directory also contains sample Kernel PlugIn driver code [11]. In addition, the DriverWizard can be used to generate customized code for such cards [7].