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.