Technical Document #30

Technical Document #30
What is the development process for the Kernel PlugIn?

First, use WinDriver to develop and debug your driver in the user mode. After everything is working, see if there are performance problems related to user-mode overhead. Normally, the problems arise with interrupt handling and accessing I/O-mapped (not memory-mapped) cards (since memory can be accessed directly from the user model, which is very efficient — see Technical Document #74).

Now, follow the instructions in the WinDriver PCI User's Manual for creating a Kernel PlugIn project and driving it from the user-mode application.
Generally, you have three main options for developing your Kernel PlugIn project (and the corresponding user-mode application that controls it):

  • Use the DriverWizard to generate a skeletal Kernel PlugIn project and user-mode application for your specific device (and then modify it as required). This option is available beginning with version 5.2.0 of WinDriver.

  • Use the source code of the sample WinDriver Kernel PlugIn driver (KP_PCI found in the v7.0.0+ WinDriver/samples/pci_diag/kp_pci directory; or KPTEST from the WinDriver/kerplug/kptest directory — for older versions of WinDriver) as a skeleton for your kernel project; move code from your user-mode driver to your Kernel PlugIn project; and add calls to your Kernel PlugIn driver from your user-mode application.

  • Write your own Kernel PlugIn project "from scratch" (and modify your user- mode application to driver it).