3.8. WinDriver USB

WinDriver USB enables developers to quickly develop high-performance drivers for USB-based devices without having to learn the USB specifications and operating system internals, or use the operating system development kits. For example, Windows drivers can be developed without using the Windows Driver Kit (WDK) or learning the Windows Driver Model (WDM).

The driver code developed with WinDriver USB is binary compatible across the supported Windows platforms — Windows 10/8.1/Server 2012 R2/8/Server 2012/7/Server 2008 R2/Server 2008 — and source code compatible across all supported operating systems — Windows 10/8.1/Server 2012 R2/8/Server 2012/7/Server 2008 R2/Server 2008, Embedded Windows 8.1/8/7, and Linux. For an up-to-date list of supported operating systems, visit Jungo's web site — http://www.jungo.com.

WinDriver USB is a generic tool kit that supports all USB devices from all vendors and with all types of configurations.

WinDriver USB encapsulates the USB specification and architecture, letting you focus on your application logic. WinDriver USB features the graphical DriverWizard utility [5], which enables you to easily detect your hardware, view its configuration information, and test it, before writing a single line of code: DriverWizard first lets you choose the desired configuration, interface and alternate setting combination, using a friendly graphical user interface. After detecting and configuring your USB device, you can proceed to test the communication with the device — perform data transfers on the pipes, send control requests, reset the pipes, etc. — in order to ensure that all your hardware resources function as expected.

After your hardware is diagnosed, you can use DriverWizard to automatically generate your device driver source code in C, Visual Basic .NET, or C#. WinDriver USB provides user-mode APIs, which you can call from within your application in order to implement the communication with your device. The WinDriver USB API includes USB-unique operations such as reset of a pipe or a device. The generated DriverWizard code implements a diagnostics application, which demonstrates how to use WinDriver's USB API to drive your specific device. In order to use the application you just need to compile and run it. You can jump-start your development cycle by using this application as your skeletal driver and then modifying the code, as needed, to implement the desired driver functionality for your specific device.

DriverWizard also automates the creation of an INF file that registers your device to work with WinDriver, which is an essential step in order to correctly identify and handle USB devices using WinDriver. For an explanation on why you need to create an INF file for your USB device, refer to Section 11.1.1 of the manual. For detailed information on creation of INF files with DriverWizard, refer to Section 5.2 (see specifically Step 3).

With WinDriver USB, all development is done in the user mode, using familiar development and debugging tools and your favorite compiler or development environment (such as MS Visual Studio, C++, GCC, Windows GCC).

For more information regarding implementation of USB transfers with WinDriver, refer to Chapter 8 of the manual.