WinDriver - No Performance Limitations

Windriver's Architecture
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.
64-bit data transfers

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).