WinDriver Kernel PlugIn
A driver written in user-mode, uses WinDriver's functions ("WD_xxx" functions) for the device
access. If a certain function in the user-mode needs to achieve kernel performance
(the interrupt handler for example), that function is moved to the WinDriver Kernel PlugIn.
Generally it should be possible to move code that uses WD_xxx calls from the user-mode to the kernel without modifications, seeing the same WinDriver API is supported both in the user-mode and in the Kernel PlugIn. The kernel PlugIn is available for Windows 2000/XP/Server 2003, Linux and Solaris.
The Kernel PlugIn is of great use in PCI applications (e.g interrupt handling), and is not supported in USB applications.
There are two types of interaction between the WinDriver kernel and the WinDriver Kernel PlugIn:
- Interrupt handling: When WinDriver receives an interrupt, it will activate the interrupt
handler in the user-mode driver by default. However, if the interrupt was set to be handled by
the WinDriver Kernel PlugIn, then once WinDriver receives the interrupt, it will be
processed by your interrupt function in the kernel. This can be the same code that you wrote and debugged in
the user-mode interrupt handler before, though some of the user-mode code should be modified. We recommend you rewrite the interrupt acknowledge and handling code in the Kernel PlugIn to utilize the flexibility offered by Kernel PlugIn. You have the possibility of generating Kernel PlugIn interrupt code with the DriverWizard.
- Message passing: To execute functions in the kernel Mode (such as I/O processing functions),
the user-mode driver simply passes a "message" to the WinDriver Kernel PlugIn. This message is
mapped to a specific function, which is then executed in the kernel. This function can contain the same
code as it did when it was written and debugged in the user-mode.
At the end of your Kernel PlugIn development cycle, you will have the following elements to your driver:
- Your user-mode driver - written with the WD_xxx functions.
- The WinDriver kernel - windrvr6.sys (Windows 2000/XP/Server 2003), windrvr6.o (Linux) or windrvr6 (Solaris).
- Your Kernel PlugIn -
<Your Driver Name>.<extension> (according to the operating system:
<Your Driver Name>.sys, <Your Driver Name>.vxd, <Your Driver Name>.o or <Your Driver Name>) - this is the driver that contains the functionality which you have chosen to bring down to the kernel level.
Kernel PlugIn,kpi,device driver,device drivers,driver development,driver development toolkit,PCI,USB,ISA,PMC,DMA,DDK,NT driver,Linux driver,Solaris driver,CE driver,Windows driver,VxWorks driver,embedded,vxd,sys,USB driver,PCI driver,PnP driver,USB stack,USB NT,PLX,hotswap,high availability,CompactPCI,embedded systems,memory map,kernel mode,USB 2.0,PCI-X,3GIO,Express,NDIS,Network,Ethernet,Storage,9056,9030,cypress,ez-usb,altera,quicklogic,quickpci,atmel,national semiconductor