[0/5] beginnings of USB support

Damjan Jovanovic damjan.jov at gmail.com
Sun Apr 18 03:18:00 CDT 2010

This patchset adds the basic architecture for USB kernel drivers in Wine.

mountmgr.sys detects new device events from *nix's HAL, and checks if
the device is a USB device. If so it sends a special Wine-proprietary
DeviceIoControl to usbhub.sys's \\.\WINE_USB_MASTER device.

usbhub.sys then checks if the device is drivable by Wine - it has to
have at least 1 interface unclaimed by any *nix kernel driver - and if
so, it spawns a special child process of itself, passing it
environment variables identifying the USB device, and the child
process will in future patches look up and load the Windows driver(s),
create PDOs and handle I/O requests.

USB device management is thus one device per child usbhub.sys process.
A USB device can have multiple interfaces, and a driver generally
binds to 1 interface, thus we may end up loading multiple drivers into
the same process, but this is a good idea since the drivers may need
to communicate among themselves.

Damjan Jovanovic

More information about the wine-patches mailing list