Damjan Jovanovic damjan.jov at
Sat Dec 30 10:46:39 CST 2006

On 12/30/06, Andrew Neil Ramage <nrsc16850 at> wrote:
> A franklin eBookMan using the provided Windows Software.

(By the way, it's bad practice to top-post bottom-posted emails.)

What interface does the device provide? Is it a mass-storage device?
Or some vendor-specific protocol? Do "lsusb -v" and see the class and
subclass -if they're 0xFF (vendor-specific), you're probably out of
luck, because:

If the Windows software includes .SYS files, wine can't load those yet
(although wine's NTOSKRNL.EXE is coming soon, right?)

Since wine is largely designed for running Windows applications on
Linux, a lot of the hardware support infrastructure (SETUPAPI, CFGMGR,
...) is still missing. At present, a Windows app cannot directly
access the hardware, only indirectly (for example, it can save a file
to a mass-storage device supported by Linux, or communicate through a
USB ethernet controller supported by Linux).

Now in Windows, applications don't access USB directly either (Windows
only allows USB control packets from user-space, not bulk, interrupt
or isochronous, and no app I know uses that interface anyway). What
apps usually do is open a .SYS device driver (eg. \\.\USBSCAN0\2) and
use ReadFile to send bulk data, WriteFile to receive bulk data, and
DeviceIoControl for everything else. So in theory if you figure out
the interface between the application and the driver in Windows, you
can write a kernel module for Linux that does the same, and your app
can communicate with the hardware. Wine currently doesn't do this at
all, although I've written a semi-complete implementation of STI and
USBSCAN.SYS this way, and it works with native TWAIN drivers.


> Andrew
> > On 12/30/06, Andrew Neil Ramage <nrsc16850 at> wrote:
> >> How do you get a Windows program access to the USB port ?
> >
> > What are you trying to do? What device are you accessing?
> >
> >> Andrew
> >
> > Damjan
> >
> >
> --
> Andrew Ramage

More information about the wine-devel mailing list