UsbDk is an open-source library designed to provide user-mode applications with direct and exclusive access to USB devices on Windows. By detaching devices from the Windows PNP manager and existing drivers, UsbDk enables developers to perform low-level operations directly on the hardware.
Key Features:
Supports all types of USB devices, including bulk and isochronous transfers.
Compatible with composite devices and works across multiple Windows OS versions starting from XP/2003.
Includes tools like UsbDkController.exe for installation/uninstallation and verification.
Can be installed via winget.
Audience & Benefit:
Ideal for developers requiring low-level access to USB devices, UsbDk allows bypassing Windows drivers for direct communication. This is essential for specific hardware interactions and testing scenarios where control over the device is critical.
README
UsbDk
UsbDk (USB Development Kit) is a open-source library for Windows meant
to provide user mode applications with direct and exclusive access to
USB devices by detaching those from Windows PNP manager and device drivers
and providing user mode with API for USB-specific operations on the device.
The library is intended to be as generic as possible, support all types of
USB devices, bulk and isochronous transfers, composite devices etc.
Library supports all Windows OS versions starting from Windows XP/2003.
Documentation
See ARCHITECTURE document in the source tree root.
See Documentation folder in the source tree root.
See UsbDkHelper\UsbDkHelper.h UsbDkHelper\UsbDkHelperHider.h for API documentation
Building
Tools required:
Visual Studio 2015/Visual Studio 2015 Express update 3 or newer
WDK 10
Windows 10 SDK
Wix Toolset V3.8 (for building MSI installer)
WDK 7.1 (for Windows XP/2003/Vista/2008 builds)
Compilation
Just open UsbDk.sln from the source tree root in Visual Studio 2015 and compile
desired configuration.
Installing and running
Use UsbDkController.exe to install/uninstall and verify basic operation.
Run UsbDkController.exe without parameters for command line options.
Known issues
Installation on 64-bit versions of Windows 7 fails if security update
3033929
is not installed. Reason: UsbDk driver is signed by SHA-256 certificate. Without this update
Windows 7 does not recognize the signature properly and fails to load the driver.
UsbDk's compatibility across various OS versions underscores its versatility, making it a valuable tool for developers working with older systems as well.