Hello,
I would like to present my project here too, because I think this information will be interesting for Wine developers. At least, I have not seen anyone gone that far using Wine code.

I came up with an idea to create an alternative Win32 subsystem, which would be targeted to NT-alike OSes: Windows NT family and of course ReactOS, based on Wine as much as possible. Detailed presentation with explanations is attached, along with links to some more information.

Briefly, what I did:
gdi32.dll - source code is nearly unmodified from Wine, but compiled in ReactOS tree, into a real PE DLL. user32.dll - source code is nearly unmodified from Wine, but compiled in ReactOS tree, into a real PE DLL. What about Wineserver, you would ask? SERVER_START_REQ and related macros are rewritten to perform a syscall to win32k.sys (more about win32k.sys below). Server protocol is the same, but of course many requests aren't need. winex11.drv - this is the one if you want X Server to be your interface. This is unchanged Wine source code, again compiled inside a ReactOS source tree into a PE DLL winent.drv - an alternative user/gdi driver, which mostly forwards all calls into a kernel mode graphics engine located in win32k.sys (which is compatible with Windows video drivers, so all acceleration could be used). win32k.sys - kernelmode counterpart of the new Win32 subsystem, contains graphics engine, user server which is based on a small part of platform-independent Wineserver source code adapted to kernelmode, and a simple window manager which calculates visible regions for windows and manages window showing/hiding.

All other parts are used from the host OS (be it Windows, or ReactOS).

The most funny thing is that this subsystem actually started to work! (I attached a few screenshots in the presentation). There are still some bugs making Arwinss not really usable at the moment, but I'm inviting all developers to participate and help me bring it to a fully usable condition, so that it supports at least all apps which Wine supports plus those which Wine doesn't support due to problems in other parts.

The presentation: (links to source code and further information are in the presentation)
http://www.reactos.org/media/docs/2010/arwinss.pdf

With the best regards,
Aleksey Bragin.


Reply via email to