Okay, I've thought about how to make the wine kernel module easier to use for Wine, and I've started adding another API to it - one that interprets Wine server messages. When I designed the module initially, I decided to make it possible to add as many API's as I liked, so in theory it's not too difficult.
I'm currently performing a major rearrangement of the files that comprise the module:
* Splitting the current win32 API bits out of the same files that contain the actual object class implementations.
* Putting the core and the API's in separate subdirectories.
* Abstracting name support, so that the internal API takes an "object name" which the user API is responsible for extracting from userspace and converting from WCS/MBS as necessary.
* Fixing introduced bugs.
This does not mean that I'm getting rid of the Win32 API I've already got! It will just be optional.
Calling the new API will be by means of either:
union generic_request msg; syscall(__NR_win32,WINESERVER_WINE_SERVER_MESSAGE,&msg);
Or:
union generic_request msg; int fd = open("/proc/wineserver"); struct WineserverIoctl wioc = { WINESERVER_WINE_SERVER_MESSAGE, &msg }; ioctl(fd,WINESERVER_IOCTL,&wioc);
David