Aleksey Bragin aleksey at
Mon Jan 18 13:08:45 CST 2010

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)

With the best regards,
Aleksey Bragin.

More information about the wine-devel mailing list