A driver written in user-mode, uses WinDriver's functions ("WDC_xxx/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
There are two types of interaction between the WinDriver kernel and the
- 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
Kernel PlugInto utilize the flexibility offered by Kernel PlugIn. You have the possibility of generating Kernel PlugIninterrupt 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
- Your user-mode driver — written with the WDC_xxx/WD_xxx functions.
- The WinDriver kernel — windrvr6.sys (Windows), 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.
NOTE: The Kernel PlugIn is not backwards compatible. Therefore, when
switching to a different version of WinDriver, you need to rebuild your