[PATCH 00/17] Initial implementation of a USB kernel driver

Zebediah Figura z.figura12 at gmail.com
Tue Apr 14 22:28:29 CDT 2020


This is enough to allow CASIO FA-124 to function, tested here with an fx-9750GII
graphing calculator.  The software must be installed in a 32-bit Windows XP
prefix to work around bug 45455, and also requires native mfc42, but works
nicely afterwards.

Linux does not make USB devices writable by default, so users will need to set
udev rules, or perform some other configuration, for devices which they wish to
use through Wine.

The code supports hotplugging in theory, but I ran into a problem where udev
rules race with libusb discovery, such that libusb will pick up a device before
udev has granted us write permissions.  I'm not sure how to resolve this;
possibly it's something that can be fixed on the host side.

Zebediah Figura (17):
  wineusb.sys: New stub driver.
  wineusb.sys: Implement AddDevice().
  wineusb.sys: Implement basic IRP_MJ_PNP requests for the bus FDO.
  wineusb.sys: Start an event handler thread.
  wineusb.sys: Create USB devices.
  wineusb.sys: Implement IRP_MN_QUERY_DEVICE_RELATIONS.
  wineusb.sys: Implement device and instance IDs.
  wineusb.sys: Implement hardware IDs.
  wineusb.sys: Return compatible IDs.
  wineusb.inf: Add new INF file.
  wineboot: Install wineusb as a root-enumerated PnP service.
  wineusb.sys: Implement URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE.
  wineusb.sys: Stub URB_FUNCTION_SELECT_CONFIGURATION.
  wineusb.sys: Implement URB_FUNCTION_VENDOR_INTERFACE.
  wineusb.sys: Implement URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER.
  wineusb.sys: Implement URB_FUNCTION_ABORT_PIPE.
  wineusb.sys: Implement URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL.

 configure.ac                      |  13 +
 dlls/wineusb.sys/Makefile.in      |   8 +
 dlls/wineusb.sys/wineusb.c        | 759 ++++++++++++++++++++++++++++++
 dlls/wineusb.sys/wineusb.sys.spec |   1 +
 include/ddk/usbioctl.h            |   2 +
 loader/Makefile.in                |   3 +-
 loader/wine.inf.in                |   3 +
 loader/wineusb.inf.in             |  22 +
 programs/wineboot/wineboot.c      |   1 +
 9 files changed, 811 insertions(+), 1 deletion(-)
 create mode 100644 dlls/wineusb.sys/Makefile.in
 create mode 100644 dlls/wineusb.sys/wineusb.c
 create mode 100644 dlls/wineusb.sys/wineusb.sys.spec
 create mode 100644 loader/wineusb.inf.in

-- 
2.26.0




More information about the wine-devel mailing list