Once your user-mode driver has been written and debugged, you might find that certain modules in your code do not operate fast enough (for example: an interrupt handler or accessing I/O-mapped regions). If this is the case, try to improve performance in one of the following ways:
Create a Kernel PlugIn driver
![]() | |
|
Kernel PlugIn is not implemented under Windows CE. In this operating system
there is no separation between kernel mode and user mode, therefore top
performance can be achieved without using the Kernel PlugIn. To improve the
interrupt handling rate on Windows CE, follow the instructions in
|
Use the following checklist to determine how to best improve the performance of your driver.
The following checklist will help you determine how to improve the performance of your driver:
| Problem | Solution |
|---|---|
| ISA Card — accessing an I/O-mapped range on the card |
When transferring a large amount of data, use block (string) transfers
and/or group several data transfer function calls into a single
multi-transfer function call, as explained in
If this does not solve the problem, handle the I/O at kernel mode by
writing a Kernel PlugIn driver, as explained in
|
| PCI Card — accessing an I/O-mapped range on the card | Avoid using I/O ranges in your hardware design. Use Memory mapped ranges instead as they are accessed significantly faster. |
| Accessing a memory-mapped range on the card |
Try to access memory directly instead of using function calls, as explained
in If the problem persists, then there is a hardware design problem. You will not be able to increase performance by using any software design method, writing a Kernel PlugIn, or even by writing a full kernel driver. |
| Interrupt latency — missing interrupts, receiving interrupts too late |
Handle the interrupts in the kernel mode by writing a Kernel PlugIn
driver, as explained in |
| PCI target access vs. master access |
PCI target access is usually slower than PCI master access (bus-master
DMA). For large data transfers, bus-master DMA access is preferable.
|