Technical Document #1

Technical Document #1
What is WinDriver?

The WinDriver toolkit is ideal for PCI/cPCI/CardBus/PCMCIA/PCI-X/PCI Express/ISA/ISA PnP/EISA and USB device-driver development. (References to "PCI" in this document should be taken to refer also to the cPCI, CardBus, PCMCIA (Windows), PCI-X and PCI Express buses).

WinDriver supports I/O operations, access to memory mapped cards, hardware interrupts handling, DMA transfers, read/writes from USB pipes, Plug and Play and power management events handling and multi-board handling.

The code you develop with WinDriver will be cross-platform compatible across all the supported operating systems for the version that you are using. For a list of the supported operating systems for each version, please refer to Technical Documents #4 and #50.

WinDriver supports development for ALL PCI chip-sets and USB devices. In addition, it features enhanced support for major PCI chip vendors (such as PLX, Altera, and Xilinx), and earlier versions also include enhanced support for major USB development board manufacturers (such as Cypress), thereby hiding most of the intrinsic bus details from the user and allowing you to concentrate on your device-specific logic. For more information regarding this enhanced support, refer to the WinDriver product page and to the WinDriver User's Manuals for your version of WinDriver.

You can use WinDriver's powerful graphical DriverWizard utility to easily detect/define the hardware's resources and debug your hardware, by transferring data to/from the hardware, listening to interrupts, etc., without writing a single line of code.

You can also use the DriverWizard to generate skeletal diagnostics code for your device, which will provide you with convenient wrapper functions that utilize WinDriver's API to communicate with your specific device. Furthermore, you can review the various samples provided with WinDriver to see if there is a sample that may serve as a skeletal basis for your driver application.

WinDriver enables all development to be done in the user mode and frees you of the need for any kernel and/or OS-specific driver development knowledge, such as familiarity with the Windows Driver Kit (WDK). For a description of WinDriver's basic architecture, refer to the WinDriver User's Manual.

For PCI/ISA development, after you develop your application in the user mode, you will also be able to use WinDriver's special Kernel PlugIn feature (described in the WinDriver User's Manual) to simply move performance-critical parts of your code from your application or DLL (in Ring 3) to the kernel level (Ring 0) for optimal performance.

To help you in your initial steps with WinDriver, visit the WinDriver Support page for online tours and quick-start guides as well as other useful information, which can facilitate your development process.