1.10. What Does the WinDriver Toolkit Include?

1.10.1. WinDriver Modules

  • WinDriver (WinDriver/include) — the general purpose hardware access toolkit. The main files here are
    • windrvr.h: Declarations and definitions of WinDriver's basic API.
    • wdc_lib.h and wdc_defs.h: Declarations and definitions of the WinDriver Card (WDC) library, which provides convenient wrapper APIs for accessing PCI/ISA/EISA/CompactPCI/PCI Express devices (see Section B.2).
    • windrvr_int_thread.h: Declarations of convenient wrapper functions to simplify interrupt handling.
    • windrvr_events.h: Declarations of APIs for handling Plug-and-Play and power management events.
    • utils.h: Declarations of general utility functions.
    • status_strings.h: Declarations of API for converting WinDriver status codes to descriptive error strings.
  • DriverWizard (WinDriver/wizard/wdwizard) — a graphical application that diagnoses your hardware and enables you to easily generate code for your driver (refer to Chapter 4 for details).
  • Debug Monitor — a debugging tool that collects information about your driver as it runs. This tool is available both as a fully graphical application — WinDriver/util/wddebug_gui — and as a console-mode application — WinDriver/util/wddebug.
    For details regarding the Debug Monitor, refer to Section 6.2.
  • WinDriver distribution package (WinDriver/redist) — the files you include in the driver distribution to customers.
  • WinDriver Kernel PlugIn — the files and samples needed to create a kernel-mode Kernel PlugIn driver (refer to Chapter 11 for details.)
  • This manual — the full WinDriver manual (this document), in different formats, can be found under the WinDriver/docs directory.

1.10.2. Utilities

  • pci_dump.exe (WinDriver/util/pci_dump.exe) — used to obtain a dump of the PCI configuration registers of the installed PCI cards.
  • pci_diag.exe (WinDriver/util/pci_diag.exe) — used for reading/writing PCI configuration registers, accessing PCI I/O and memory ranges and handling PCI interrupts.
  • pci_scan.exe (WinDriver/util/pci_scan.exe) — used to obtain a list of the PCI cards installed and the resources allocated for each card.

1.10.3. Samples and Enhanced-Support Chipset APIs

WinDriver includes a variety of samples that demonstrate how to use WinDriver's API to communicate with your device and perform various driver tasks.

  • C samples: found under the WinDriver/samples directory.
    These samples also include the source code for the utilities listed above [1.10.2].
  • Python samples: found under the WinDriver/samples/python directory.
    These samples also include the source code for the utilities listed above [1.10.2].
  • Java samples: found under the WinDriver/samples/java directory.
    These samples also include the source code for the utilities listed above [1.10.2].
  • .NET C# samples (Windows): found under the WinDriver\csharp.net directory. Enhanced Chipset Support

In addition to the generic samples described above, WinDriver provides custom wrapper APIs and sample code for major PCI chipsets, as outlined in Chapter 7. The relevant files are provided in the following WinDriver installation directories:

  • PLX 6466, 9030, 9050, 9052, 9054, 9056, 9080 and 9656 — WinDriver/plx
  • Altera Qsys design — WinDriver/altera/qsys_design
  • Xilinx Bus Master DMA (BMD) design — WinDriver/xilinx/bmd_design
  • Xilinx XDMA design — WinDriver/xilinx/XDMA_design

For the Xilinx BMD, Xilinx XDMA and Altera Qsys designs there is also an option to generate customized driver code that utilizes the related enhanced-support APIs.