WinDriver's unique
architecture
features Kernel Mode performance while maintaining all development in User-mode.
How WinDriver Works
WinDriver eliminates the need for you to
write a kernel mode device driver, by providing you with a complete hardware access API
in the user-mode, with which you can control any type of hardware. This WinDriver user
mode API calls the WinDriver kernel agent, which then controls your hardware (see the
WinDriver architecture).
"...The user thread does a kp_call to unqueue the data. By reducing the delay between
writes to the doorbell register, I was able to achieve bursts of
100,000 interrupts
per second without loosing data.
When I first read your claim that this was possible, I was skeptical. I am impressed."
Jim Brooks
Tektronix
Kernel Mode Performance!
WinDriver’s API is optimized for minimal performance
overhead. For the drivers that need kernel mode performance, WinDriver offers the "Kernel
PlugIn". This powerful feature enables you to create and debug your code in the user
mode, and run the performance critical parts of your code in kernel mode, thereby
achieving kernel mode performance (zero performance degradation).
Using the WinDriver Kernel PlugIn, you first develop and
debug your driver code in the User Mode with the standard WinDriver tools. After
identifying the performance critical modules of the code (such as the interrupt handler,
or access to I/O mapped memory ranges), you can simply ‘drop’ these parts of
code into the WinDriver’s Kernel PlugIn. These modules then run in the Kernel Mode,
thereby eliminating any calling overhead. This unique feature allows the developer to run
his user-mode code in the OS kernel without having to learn how the kernel
works.
The Kernel PlugIn is of great use in PCI applications (e.g interrupt handling), and is not supported in USB applications.
How fast can WinDriver go?
Using the WinDriver
Kernel PlugIn you can
expect the same throughput of a custom Kernel Driver. You are confined only by your OS
and hardware limitations. A ball park figure of the throughput you can reach using the
Kernel PlugIn would be more then 100,000 interrupts per second.
64-bit data transfers
WinDriver allows utilizing the additional bandwidth provided by 64-bit hardware and enable 64-bit data transfers on x86 platforms running 32-bit operating systems. Drivers developed with WinDriver will attain significantly better performance results than drivers written with the DDK or other driver development tools that do not support this feature.
The graph shows that a driver written with WinDriver using 64-bit data transfers (QuadWord) attained improved data transfer rates over a regular driver using memcpy() to transfer data. The data transfer rate for read operations has improved over 22% when using WinDriver's QuadWord, and for write operations has improved over 31%.
More performance information
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 IO mapped regions). If this is the
case, try to improve the performance by one of the these two ways:
To determine which approach is best for you click
here.
Technical Reference
WinDriver products are accompanied with highly detailed technical references that are designed to assist you in various stages of the development process.
If you have just started evaluating or using WinDriver, you may find our Quick Start Guides helpful.
Should you require more in-depth information, or would like to know more about the technical aspects of WinDriver, please refer to our Online Manual.
For other technical resources, such as FAQs and technical documents — see WinDriver's Support Page.
Purchasing
See
our
How to Order page.
You can also download our Order Form
and email it: sales@jungo.com,
or fax it: 1-877-514-0538 (+972-74-721-2122).