wine / Linux kernel, TWAIN and STI: explained

Dan Kegel daniel.r.kegel at
Fri Oct 21 01:04:45 CDT 2005

On 10/20/05, Damjan Jovanovic <dj015 at> wrote:
> *Changed CreateFile() to check for \\.\USBSCAN..., and
> if so open /dev/USBSCAN... instead of calling
> VXD_Open(). Then it does wine_server_fd_to_handle().
> ...
> The kernel module behaves just like USBSCAN.SYS,
> reading and writing do raw USB bulk pipe reads and
> writes, and the ioctl's mostly do USB control pipe
> operations.
> And I made a thin little STI.DLL, just the bare
> minimum (my scanner driver only uses
> IStillImage::GetDeviceList() and
> IStillImage::GetDeviceValue()).

Sounds pretty cool!  When will you post the sources?

> Now, back to my original questions: how do I
> generalise the kernel module to work with more
> scanners (it's currently hardcoded for my scanner)? I
> need access to wine's registry / SetupAPI to know
> which scanners are installed.

You might have to have a userspace winelib daemon
listening for requests from the kernel, and fulfilling
them by calling the registry API.

More information about the wine-devel mailing list