![]() |
Jungo WinDriver
Official Documentation
|
This chapter outlines general WinDriver information, architecture, supported busses and operating systems, as well as what the toolkit package includes.
ℹ️ Note
This manual outlines WinDriver's support for PCI/ISA/EISA/CompactPCI/PCI Express devices as well as the Universal Serial Bus (USB).
Since its release to the market in 1998, WinDriver has been providing a development solution that dramatically simplifies the task of creating high-performance custom device drivers and hardware-access applications. WinDriver includes a DriverWizard - a graphical diagnostics tool - that automatically detects your hardware, and using which you can generate skeletal diagnostics code for your device, providing you with convenient wrapper functions that utilize WinDriver’s API to communicate with your specific device. Furthermore, you can review various samples provided with WinDriver to see if there is a sample that may serve as a skeletal basis for your driver application. The driver and application you develop using WinDriver are source code compatible across all supported operating systems. WinDriver allows you to create your driver in the familiar user-mode environment, using MS Visual Studio, CMake, GCC, Windows GCC, or any other appropriate compiler or development environment, generating the driver code for the project in C, C#, Java and Python.
WinDriver supports development for all PCI/ISA/EISA/CompactPCI/PCI Express chipsets, along with all USB chipsets, and offers enhanced support for specific chipsets, for instance Xilinx, on Windows, Linux and Mac OS.
WinDriver enables all development to be done in the user mode, utilizing our low-level kernel driver(s), and thus frees you of the need for any kernel and/or OS-specific driver development knowledge, such as familiarity with the Windows Driver Kit (WDK).
Don't let the size of this manual fool you. WinDriver makes developing device drivers an easy task that takes hours instead of months, providing stability and technical support both during and after the development process. A part of this manual deals with the features that WinDriver offers to advanced users. However, most developers will find that reading these chapters and glancing through the DriverWizard and function-reference chapters is all they need to successfully write their driver.
Chapter 2: Understanding Device Drivers gives a general overview of device drivers.
Chapter 3: Installing WinDriver explains WinDriver installation and uninstallation steps.
Chapter 4: PCI Express Overview and Chapter 5: USB Overview - PCIe and USB overview, architecture and other details respectively.
Chapter 6: Using DriverWizard provides detailed driver development guidance using DriverWizard.
Chapter 7: Developing a Driver and Chapter 8: Debugging Drivers deal with driver development and dubbuging.
Chapter 9: Enhanced Support for Specific Chipsets focuses on special support for Altera Qsys, Avalon-MM designs; Xilinx BMD, XDMA, QDMA designs.
Chapter 10: PCI Advanced Features describes special PCI features like DMA transfer, interrup handling and much more.
Chapter 11: Improving PCI Performance talks about performance enhancement for already written and debugged drivers.
Chapter 12: Understanding the Kernel PlugIn and Chapter 13: Creating a Kernel PlugIn Driver - Kernel PlugIn chapter, a special WinDriver feature that allows critical sections of the driver code to be moved to the kernel in order to enhance its performance even more.
Chapter 14: USB Advanced Features dives into USB data transfer matters.
Chapter 15: Distributing Your Driver and Chapter 16: Dynamically Loading Your Driver guide through WinDriver-written drivers distribution process as well as an option of creating a dynamically loadable driver, which enables your customers to start your application immediately after installing it, without the need for reboot a computer.
Chapter 17: Driver Installation — Advanced Issues clarifies important issues such as INF creation, digital signature for drivers and more.
Data Structures and Files are WinDriver APIs information.
Visit [Jungo's] (https://www.jungo.com) website for the latest news about WinDriver and other products that Jungo offers.
WinDriver features include:
PCI WinDriver Architecture
USB WinDriver Architecture
For hardware access, your application calls one of the WinDriver user-mode functions. The usermode function calls the WinDriver kernel module, which accesses the hardware for you through the native calls of the operating system.
WinDriver supports the following operating systems:
The same source code will run on all supported platforms — simply recompile it for the target platform. The source code is binary compatible across Windows 11/10/Server 2016/8.1/Server 2012 R2/8/Server 2012. WinDriver executables can be ported among the binary-compatible platforms without recompilation.
Even if your code is meant only for one of the supported operating systems, using WinDriver will give you the flexibility to move your driver to another operating system in the future without needing to change your code.
⚠ Attention
OS-specific support is provided only for operating systems with official vendor support. In order to see which operating system and its version are supported by the vendor, please refer to the vendor's website respectively.
WinDriver PCI/USB for Linux ARM automates and simplifies the development of Linux ARM device drivers for PCIe/PCI-X/PCI-104/CompactPCI and USB.
WinDriver was built and tested on the following platforms and OSes. Jungo can offer support for other platforms upon request sent to WinDr.nosp@m.iver.nosp@m.@jung.nosp@m.o.co.nosp@m.m
All version information in this document relates to both WinDriver for PCI/ISA and WinDriver for USB, unless otherwise specified.
USB 2.0 is supported beginning with version 5.0.4.
USB 3.0 is supported beginning with version 11.4.0.
USB 3.1 is supported beginning with version 14.2.0.
Operating System | Supported WinDriver Versions |
---|---|
Windows 10 IoT Core | Windows 10 IoT Core (x32/x64/ARM) is supported from version 12.7.0 until version 14.7.0. |
Windows Server 2022 | Windows Server 2022 is supported from version 15.1.0. |
Windows Server 2019 | Windows Server 2019 is supported from version 14.2.1. |
Windows Server 2016 | Windows Server 2016 is supported from version 12.0.0. |
Windows 11 | Windows 11 x64 is supported from version 15.0.0. Windows 11 ARM64 is supported from version 16.1.0. |
Windows 10 | Windows 10 x32 is supported from version 12.0.0 to version 16.2.0. Windows 10 x64 is supported from version 12.0.0 Windows 10 ARM64 is supported from version 16.1.0. Windows 10 Technical Preview build 10162 was supported in version 11.9.0. |
Windows 8.1 | Windows 8.1 x32 and x64 are supported from version 11.4.0 to version 16.0.0. |
Windows Server 2012 R2 | Windows Server 2012 x32 and x64 are supported from version 11.4.0 to version 16.0.0. |
Windows 8 | Windows 8 x32 and x64 are supported from version 11.0.0 to version 14.3.0. |
Windows Server 2012 | Windows Server 2012 x32 and x64 are supported from version 11.0.0 to version 14.3.0. |
Windows 7 | Windows 7 x32 and x64 are supported from version 10.1.0. to version 14.3.0. Windows 7 Service Pack 1 is supported from version 10.3.1 to version 14.3.0. |
Windows Server 2008 R2 | Windows Server 2008 R2 x32 and x64 are supported from version 10.1.0 to version 14.3.0. Windows Server 2008 R2 Service Pack 1 is supported from version 10.3.1 to version 14.3.0. |
Windows Vista | Windows Vista x32 and x64 are supported from version 8.1.0 to version 12.2.1. Windows Vista Service Pack 1 is supported from version 10.0.0 to version 12.2.1. |
Windows Server 2008 | Windows Server 2008 x32 and x64 are supported from version 10.0.0 to version 14.3.0. |
Windows Server 2003 | Windows Server 2003 x64 is supported from version 8.0.0 to version 12.2.1. Windows Server 2003 x32 is supported from version 6.0.2 to version 12.2.1. |
Windows XP | Windows XP x64 is supported from version 8.0.0 to version 12.2.1. Windows XP Service Pack 3 is supported from version 10.0.0 to version 12.2.1. |
Windows CE | Windows Embedded Compact 2013 (a.k.a. Windows CE 8, WEC2013 or Windows CE 2013) is supported on x86 and ARM platforms from version 11.7.0 to version 12.3.0. Windows Embedded Compact 7 (a.k.a. WEC7 or Windows CE 7) is supported from version 10.4.0 to version 12.3.0. Windows Embedded CE 6.0 is supported from version 9.0.0 to version 12.3.0. Windows CE 5.0 is supported from version 6.2.2 to version 12.3.0. Windows CE 4.x is supported from version 6.0.0 to 12.3.0. Windows CE 2.x–3.x is supported for PCI/ISA from version 4.1.2 to 6.0.3. |
MacOS (PCI) | MacOS 10.5 + 10.6 is supported for PCI from version 10.2.0 to version 10.4.0. |
MacOS (PCIe + USB) | MacOS 10.10-10.15 are supported from version 14.5.0. MacOS 10.13-11.0 are supported from version 14.6.0. MacOS 11.0 and MacOS 12.0 (ARM64 M1 version) are supported from version 14.8.0. |
Linux | PCI/ISA is supported on Linux from version 4.1.2. USB is supported on Linux from version 6.0.0. |
Solaris (PCI/ISA) | Solaris is supported for PCI/ISA from version 4.1.4 to version 9.0.1. |
ℹ️ Note
If you have any questions or would like to evaluate WinDriver on a specific operating system that is either not listed above, or is supported until a particular version, please send an e-mail to WinDr.nosp@m.iver.nosp@m.@jung.nosp@m.o.co.nosp@m.m, and our team will assist you.
All evaluation versions of WinDriver are fully featured. No functions are limited or crippled in any way. The evaluation version of WinDriver is different from the registered version in the following ways:
ℹ️ Note
If you are interested in purchasing a WinDriver license, wonder what it includes and its conditions or have any other questions or feedback, please send us an e-mail to sales.nosp@m.@jun.nosp@m.go.co.nosp@m.m, and our team will respond swiftly. Please note that by offering any suggestions to Jungo, you give Jungo full permission to use them freely.
Currently, WinDriver for MacOS does not support the following features:
Jungo strives to support all these features in the nearest future as well.
The main files of the WinDriver toolkit are:
WinDriver/wizard/wdwizard
): a graphical application that diagnoses your hardware and enables you to easily generate code for your driver.WinDriver/util/wddebug_gui
— and as a console-mode application — WinDriver/util/wddebug
.WinDriver/docs
directory.WinDriver also includes the following utilities:
WinDriver/util/usb_diag.exe
): enables the user to view the resources of connected USB devices and communicate with the devices to transfer data to/from the device, set the active alternate setting, reset pipes, etc. On Windows the program identifies all devices that have been registered to work with WinDriver using an INF file. On the other supported operating systems the program identifies all USB devices connected to the target platform.WinDriver/util/pci_dump.exe
): used to obtain a dump of the PCI configuration registers of the installed PCI cards.WinDriver/util/pci_scan.exe
): used to obtain a list of the PCI cards installed and the resources allocated for each card.There are also various code samples available:
WinDriver/samples/c
directory.WinDriver/samples/python
directory.WinDriver/samples/java
directory.WinDriver/samples/csharp.net
directory.WinDriver/samples/powershell
directory.WinDriver/samples/vb.net
directory.In addition to the generic samples described above, WinDriver provides custom wrapper APIs and sample code for major PCI chipsets, as outlined in Chapter 9: Enhanced Support for Specific Chipsets. The relevant files are provided in the following WinDriver installation directories:
For the Xilinx BMD, XDMA, QDMA and Altera Qsys designs there is also an option to generate customized driver code that utilizes the related enhanced-support APIs.