On Thu, Mar 20, 2008 at 10:26:20AM +0100, Martin Hinner wrote: > Hi, > > I am solving problem how to get one Win32 app (for which I have > source code) running under Wine. The biggest issue is drivers and > ioctls. Linux has driver support for what we need and provides similar > ioctls for some stuff, but it differs from Windows. > > The difference is *so big* that I would prefer to modify our source > code to use different pieces of code when it detects Wine. I > understand, that this is *against* Wine policy and generally should > not be used. But writing built-in replacement for some DLLs (hack > Linux-style drivers into Windows-style) would be a nightmare, so > having small mods to Win code would be much easier. I am not talking > about "generic" functions, but about specific drivers/etc. > > Imagine this: Under windows you get usb driver with some ioctl-based > interface, sometimes with DLL or without it (vendor provides only .lib > file that gets statically linked). Under Linux there is libusb used. > Difference between these two ways of driver implementation is *huge* > and making libusb driver compatible with Win32 driver is almost > impossible (in Win you have a real file handle, under libusb only > pointer, etc.). > > It would greatly help for this case to be able to: > > - detect wine and platform from Win32 app (.exe)
Best bet is to just check for the registry key HKLM\Software\Wine > - load native Linux library and perform ioctls (ioctl(2), not Windows > IOCTL!) on file handles Needs code in your application, but is technically possible. > - get somehow access to files in Linux filesystem (i.e. in /dev) Same as above. No need for any specific code if you map Z: to / for instance. > This would allow to easily modify our source code in a few places > (i.e. hardware routines) and get it quickly running under Linux. > > I can do all above by writing some built-in dll that would work just > for my case, but I think *maybe* it's worth it to provide some generic > interface in Wine?? Hmm. We might be able to do this via msvcrt ioctl perhaps? No idea. Ciao, Marcus
