It is generally recommended to use WinDriver whenever possible, since it
enables you to develop and debug your code entirely in the user mode (without
any need for kernel development knowledge), it supports more operating systems,
and the driver you develop will be portable across all the supported operating
systems.
NOTE: When using WinDriver to develop for PCI/ISA, you can also move
performance critical sections of your code to the kernel, by using the Kernel PlugIn feature (which
is an inherent part of the WinDriver tool-kit, and is not be confused
with the KernelDriver tool-kit). The selection between WinDriver and KernelDriver should depend on the required architecture: If your application needs to talk to your hardware, choose WinDriver. If your hardware needs to be accessed by many applications as a standard device driver, or if your driver needs to communicate with the operating system or must be implemented in the kernel, choose KernelDriver. |