From: Dmitry F. <dm...@da...> - 2015-12-06 15:11:47
|
Hello libusb-devel, Following is the next version of UsbDk backend patches. The same patches are also available at https://github.com/dmitryfleytman/libusb/tree/usbdk-backend-v5 Thanks, Dmitry ===================================================================================== Changes since v4: 1. Rebased to the latest master 2. Patch set reorganised, some functions renamed as suggested by Chris Changes since v3: 1. Added processing of USBD errors supplied by UsbDk Changes since v2: 1. UsbDk clear_halt callback implementation fixed Changes since v1: 1. Project files for Visual Studio 2013 added 2. DDK/WDK build files updated to support builds with UsbDk backend 3. File names changed as agreed (windows_usb.* -> windows_winusb.*) 4. Function names in windows_nt_common.c changed as areed ("nt" dropped) 5. UsbDk headers merged as agreed, no subfolder, one file only (windows_usbdk.h) 6. Build tested and fixed for different MinGW versions Adding dynamic backend selection for UsbDk/libusb*/WinUsb configuration turned out to be too tricky for a number of reasons, so we would like to postpone this feature for now and return to it later along with support for attach/detach mode. We will also release a new usbDk version in a few days with support for persistent hide rules feature as suggested on this list before. ===================================================================================== This series contains patches that extend Windows backend to support UsbDk. Switch between UsbDk and WinUSB/LibusbK/Libusb0 is done at compile time with --enable-usbdk configuration option (off by default). UsbDk (USB Development Kit) is a set of software components meant to provide Windows user mode applications with direct and exclusive access to USB devices. Some distinctive UsbDk properties are: 1. UsbDk supports all types of devices and interfaces - bulk, isochronous, composite, HID etc. 2. Device capture process is totally dynamic, i.e. no inf files and self-signing needed, any device can be captured. 3. UsbDk co-exists with original device driver, when the device is not captured original driver is loaded by the system automatically. 4. If user mode client terminates unexpectedly for any reason system reverts to original device driver immediately. 5. Being USB filter driver UsbDk doesn't require WHQL-ing as per Microsoft requirements. UsbDk supports all Windows OS versions staring from Windows XP, i.e. XP/Vista/7/8/8.1/2003/2008/2008R2/2012/2012R2. Both 32 and 64 bit architectures are supported. UsbDk is fully open source and distributed under Apache 2.0 license. UsbDk project is hosted at spice-space.org, source code repository available at: http://cgit.freedesktop.org/spice/win32/usbdk Latest source tarball is at: http://www.spice-space.org/download/windows/usbdk/spice-usbdk-win-1.0-2-sources.zip UsbDk releases come with precompiled and signed by Red Hat binaries: 1. 32 bit: http://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.8_x86.msi 2. 64 bit: http://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.8_x64.msi UsbDk documentation: 1. Short presentation: http://www.spice-space.org/docs/usbdk/UsbDk_at_a_Glance.pdf 2. SDM: http://www.spice-space.org/docs/usbdk/UsbDk_Software_Development_Manual.pdf 3. UsbDk architecture specificatin (part of source tree): http://cgit.freedesktop.org/spice/win32/usbdk/tree/ARCHITECTURE UsbDk is maintained by Dmitry Fleytman (dm...@da...). I'll be glad to answer your questions sent to me directly or via this mailing list. What do you think about this series? We will be glad to have it accepted into libusb upstream. Best Regards, Dmitry Dmitry Fleytman (4): windows: Move common definitions to a separate file windows: Rename windows_usb.h/c windows_winusb.h/c usbdk: Introduce usbdk backend build: Integrate usbdk backend configure.ac | 9 + libusb/Makefile.am | 16 +- libusb/core.c | 6 + libusb/libusbi.h | 1 + libusb/os/windows_nt_common.c | 581 ++++ libusb/os/windows_nt_common.h | 73 + libusb/os/windows_usb.c | 4645 ------------------------------- libusb/os/windows_usb.h | 973 ------- libusb/os/windows_usbdk.c | 958 +++++++ libusb/os/windows_usbdk.h | 126 + libusb/os/windows_winusb.c | 4149 +++++++++++++++++++++++++++ libusb/os/windows_winusb.h | 947 +++++++ msvc/ddk_build.cmd | 9 + msvc/libusb_2013.sln | 20 + msvc/libusb_dll.dsp | 4 +- msvc/libusb_dll_2005.vcproj | 4 +- msvc/libusb_dll_2010.vcxproj | 4 +- msvc/libusb_dll_2010.vcxproj.filters | 4 +- msvc/libusb_dll_2012.vcxproj | 4 +- msvc/libusb_dll_2012.vcxproj.filters | 4 +- msvc/libusb_dll_2013.vcxproj | 6 +- msvc/libusb_sources | 10 +- msvc/libusb_static.dsp | 4 +- msvc/libusb_static_2005.vcproj | 4 +- msvc/libusb_static_2010.vcxproj | 4 +- msvc/libusb_static_2010.vcxproj.filters | 4 +- msvc/libusb_static_2012.vcxproj | 4 +- msvc/libusb_static_2012.vcxproj.filters | 4 +- msvc/libusb_static_2013.vcxproj | 6 +- msvc/libusb_usbdk_dll_2013.vcxproj | 178 ++ msvc/libusb_usbdk_static_2013.vcxproj | 162 ++ 31 files changed, 7271 insertions(+), 5652 deletions(-) create mode 100644 libusb/os/windows_nt_common.c create mode 100644 libusb/os/windows_nt_common.h delete mode 100644 libusb/os/windows_usb.c delete mode 100644 libusb/os/windows_usb.h create mode 100644 libusb/os/windows_usbdk.c create mode 100644 libusb/os/windows_usbdk.h create mode 100644 libusb/os/windows_winusb.c create mode 100644 libusb/os/windows_winusb.h create mode 100644 msvc/libusb_usbdk_dll_2013.vcxproj create mode 100644 msvc/libusb_usbdk_static_2013.vcxproj -- 2.4.3 |