B.2. WDC Library Overview

The "WinDriver Card"WDC — API provides convenient user-mode wrappers to the basic WinDriver PCI/ISA/CardBus WD_xxx API, which is described in the WinDriver PCI Low-Level API Reference.

The WDC wrappers are designed to simplify the usage of WinDriver for communicating with PCI/ISA/CardBus devices. While you can still use the basic WD_xxx PCI/ISA WinDriver API from your code, we recommend that you refrain from doing so and use the high-level WDC API instead.

NOTE: Most of the WDC API can be used both from the user mode and from the kernel mode (from a Kernel PlugIn driver [11]).

The generated DriverWizard PCI/ISA diagnostics driver code, as well as the PLX sample code, and the pci_diag, Kernel PlugIn pci_diag and pci_dump samples, for example, utilize the WDC API.

The WDC API is part of wdapi1230 DLL/shared object:
WinDriver\redist\WINCE\<TARGET_CPU>\wdapi1230.dll (Windows CE) / WinDriver/lib/libwdapi1230.so (Linux).
The source code for the WDC API is found in the WinDriver/src/wdapi directory.

The WDC interface is provided in the wdc_lib.h and wdc_defs.h header files (both found under the WinDriver/includes directory).

The WinDriver PCI/ISA samples and generated DriverWizard code that utilize the WDC API, for example, consist of a "library" for the specific device, and a diagnostics application that uses it. The high-level diagnostics code only utilizes the wdc_lib.h API, while the library code also uses the low-level API from the wdc_defs.h file, thus maintaining the desired level of encapsulation.

The following sections describe the WDC high-level [B.3] and low-level [B.4] API.

[Note]
  • CardBus devices are handled via WinDriver's PCI API; therefore PCI references in this section apply also to CardBus, on the operating systems on which it is supported [1.1].