Menu

WinDriver for PCI/PCIe/SoC/USB

WinDriver™ v16.7.0 is a powerful device development tool that empowers businesses to create custom drivers quickly. Learn More

Supported operating systems:
Windows | Windows ARM | Linux |
Linux ARM | macOS | RTOS Zephyr

Full Benefits | Guidance | Features | Technical

WinDriver Features

WinDriver provides a range of tools and features to help you develop, test and debug your driver code
Easy User-Mode Driver Development
Supports any PCIe/Soc/USB Device
Cross Platform Compatible
Immediate Hardware Access and Debugging
DMA Samples for Altera, AMD & Lattice
More About WinDriver

Frequently Asked Questions

PCI Overview
Can I develop one driver for Windows, Linux, and macOS?
+
Enabling legacy PCI configuration space read/write for identifying PCI devices on Windows
+
How do I access the memory on my PCI card using WinDriver?
+
How do I use WinDriver for PCI Express over Thunderbolt?
+
What is the significance of marking a resource as 'shared' with WinDriver, and how can I verify the 'shared' status of a specific resource on my card?
+
Can I access the same device, simultaneously, from several WinDriver applications?
+
How can I read the value of the PCI interrupt status register from my WinDriver ISR, in order to determine, for example, which card generated the interrupt when the IRQ is shared between several devices?
+
How do I perform system or slave DMA using WinDriver?
+
I have locked a memory buffer for DMA on Windows. Now, when I access this memory directly, using the user-mode pointer, it seems to be 5 times slower than accessing a “regular” memory buffer, allocated with malloc(). Why?
+
My attempt to allocate and lock a 1GB DMA buffer with WinDriver on Windows fails. Is this a limitation of the operating system?
+
How do I perform PCI DMA Writes from system memory to my card, using WinDriver?
+
How do I perform Direct Block transfers from one PCI card to another?
+
USB Overview
How do I reset my USB device using WinDriver?
+
Buffer Overrun Error: WDU_Transfer() sometimes returns the 0xC000000C error code. What does this error code mean? How do I solve this problem?
+
How do I extract the string descriptors contained in the Device and Configuration descriptor tables?
+
How do I detect that a USB device has been plugged in or disconnected?
+
How do I setup the transfer buffer to send a null data packet through the control pipe?
+
Can I write a driver for a USB hub or a USB Host Controller card using WinDriver?
+
Does WinDriver USB support isochronous streaming mode?
+
DriverWizard
If a variable requires a pointer to be assigned to it, as in pBuffer = &dwVal, how do I do it in C# dotNET/Java/Python?
+
Developing a Driver
Using WinDriver to build a GUI Application
+
How long does PCIe driver development typically take?
+
What industries use WinDriver?
+
Can WinDriver handle multiple devices, of different or similar types, at the same time?
+
Can I run two different device drivers, both developed with WinDriver, on the same machine?
+
Can WinDriver group I/O and memory transfers?
+
I have a WinDriver based application running on a certain operating system, how do I port my code to a different operating system?
+
Debugging Drivers
Should I use wddebug_gui or wddebug?
+
Can I debug WinDriver-based code easily using MS Visual Studio (Visual C++)?
+
How would you recommend debugging a WinDriver-based application?
+
Kernel PlugIns
Why does my WD_KernelPlugInOpen() call fail?
+
When handling my interrupts entirely in the Kernel PlugIn, can I erase the interrupt handler in the user mode?
+
How can I print debug statements from the Kernel PlugIn that I can view using a kernel debugger, such as WinDbg?
+
My PC hangs while closing my application. The code fails in WD_IntDisable(). Why is this happening? I am using the Kernel PlugIn to handle interrupts.
+
I would like to execute in the kernel some pieces of code written in languages other than C/C++ (Python/Java/C#/Visual Basic.NET), using the Kernel PlugIn. Is it possible?
+
How do I allocate locked memory in the kernel that can be used inside the interrupt handler?
+
How do I handle shared PCI interrupts in the Kernel PlugIn?
+
What is pIntContext in the Kernel PlugIn interrupt functions?
+
I need to call WD_Transfer() in the Kernel PlugIn. From where do I get hWD to pass to these functions?
+
A restriction in KP_IntAtIrql is to use only non-pageable memory. What does this mean?
+
How do I call WD_Transfer() in the Kernel PlugIn interrupt handler?
+
How do I share a memory buffer between Kernel PlugIn and user-mode projects for DMA or other purposes?
+
If I write a new function in my SYS Kernel PlugIn driver, must it also be declared with __cdecl?
+
WinDriver, Within Minutes Of Work
The WinDriver Wizard provides immediate hardware access and easily generates a skeletal code for your device - all this within minutes of work!
*Windows only
PCI/PCIe Device Driver
USB Device Driver

Markets & Industries

WinDriver has been successfully deployed in various industries across the globe.

WinDriver Partners

As a partner of Jungo's WinDriver software toolkit, you have access to a powerful and reliable solution for creating custom device drivers for a wide range of hardware platforms. Whether you are developing drivers for USB, PCI, PCI Express, or other platforms, WinDriver can provide you with the tools and support you need to create high-quality drivers that meet the specific needs of your application.

With WinDriver, you can take advantage of a wide range of features and benefits, including support for a wide range of operating systems, a user-friendly interface, and a comprehensive set of development tools. You can also count on Jungo's team of experienced engineers for expert guidance and support throughout the development process.

Whether you are a seasoned driver developer or new to the field, WinDriver can provide you with the tools and support you need to create effective and reliable drivers for your application. We are excited to be working with you as a partner and look forward to helping you succeed with your driver development projects.
AMD
WinDriver is the market leading driver development toolkit for PCI. WinDriver includes ready-made custom libraries designed especially for Xilinx development boards.
Read More
Altera FPGA
WinDriver features a set of ready-made libraries and hardware access functions that provides enhanced support for Altera FPGA’s PCI and PCI Express.
Read More

WinDriver News & Events

The latest news and events from our global activities.
March 16, 2027
Meet WinDriver at Embedded World, Germany, 16-18 March, 2027
November 10, 2026
Meet WinDriver at electronica, Germany, 10-13 November, 2026
October 22, 2026
Webinar: Peer-to-Peer DMA for PCI/PCIe
July 1, 2026
Webinar: Implementing DMA Drivers for SoC Platform Devices with WinDriver
March 10, 2026
Meet WinDriver at Embedded World in Nuremberg, Germany, 10-12 March, 2026
February 23, 2026
Webinar: Altera FPGA SoC Development
January 26, 2026
Webinar: FPGA & Driver Development on PCIe, SoC, and Cloud AWS
November 17, 2025
Webinar: PCIe / USB Driver Development with WinDriver
August 4, 2025
Webinar: PCIe Driver Development for FPGA with WinDriver
June 11, 2025
Webinar: WinDriver Introduction Webinar – FPGA, PCIe, USB
May 19, 2025
Webinar: Keep Your PCIe and USB Drivers Aligned with OS Evolution
April 23, 2025
Webinar: Implementing Kernel Plugin in PCIe Device Drivers
Full Benefits
Guidance
Features
Technical Data

Accessibility Toolbar