WinDriver Architecture Diagram

Windriver's Architecture
WinDriver Architecture Diagram
With WinDriver, your device driver is developed in the user-mode (as part of your application or as a separate DLL). This dramatically shortens development time, and makes debugging the driver simple. For PCI development, after your driver is complete, you can easily transfer the performance critical sections of your driver code to WinDriver's "Kernel PlugIn", which runs those sections at maximum performance in ring 0 (See the WinDriver Performance Page).

The WinDriver Kernel PlugIn supports Windows 8 / Windows 7 / Vista / Server 2008 / Server 2003 / XP / XP Embedded, Linux and Solaris (for PCI/PCI-Express).

The device driver application produced with WinDriver (YourApp.EXE) accesses your hardware through the WinDriver kernel agent (windrvr6.sys/vxd/o or windrvr.sys/vxd/o - depending on the operating system and WinDriver version that you are using), using the standard WinDriver functions.

For PCI, the performance critical sections of your code (interrupt handlers, I/O handlers, etc.) can be handled in the Kernel PlugIn (your own driver module - YourDriver.sys/vxd/o) and executed in the kernel mode, thereby eliminating the overhead of the context switches between user and kernel mode.

This architecture enables you to develop and debug all of your driver code in the user-mode, using the WinDriver functions, and to migrate only the performance critical sections of the code to the kernel mode, via the simple Kernel PlugIn mechanism - without any changes in the code (for PCI).

At the end of your Kernel PlugIn development cycle, your driver will include the following elements:

  1. Your User Mode driver - .EXE written with the WD_XXX functions.
  2. The WinDriver Kernel Agent - windrvr6.sys/vxd/o or windrvr.sys/vxd/o(depending on your operating system and WinDriver version).
  3. Your Kernel PlugIn driver - MyDriver.sys/vxd/o - this is the driver that contains the functionality that you have chosen to bring down to the kernel level.