headers suggestion

Jonathan Wilson jonwil at tpgi.com.au
Fri Nov 19 10:18:18 CST 2004

In light of e.g. 
I would like to suggest the following header ideas.

Currently MingW has:
1.A set of headers that contain a copy of part of the platform SDK
2.Some extra stuff (like that ntdll.h)
3.A set of headers that contain a copy of part of the windows DDK
4.Mabie again some extra stuff MS doesnt have (I dont know)
5.A set of headers that contain a copy of part of the visual C++ runtime 
6.Some extra stuff (mainly bits required to deal with differences between 
GCC and Visual C I think)

WINE has:
1.A set of headers that are supposed to contain a copy of part of the 
platform SDK (although some things have been claimed to be wrong)
2.A set of headers that are supposed to contain a copy of part of the 
visual C++ runtime library (although again there may be things that are wrong)
and 3.Extra definitions for stuff in both header sets microsoft doesnt 
define in the platform SDK (e.g. internal bits, functions microsoft doesnt 
document etc)

ReactOS has:
w32api (the ROS import of it)
include/ddk (the ReactOS version of the windows DDK)
include/wine (the WINE windows API headers)
include/msvcrt (the MSVCRT headers ROS uses to build and link with msvcrt)
include (various misc ReactOS specific headers)

What I suggest for ReactOS (and I think some of this is already being done) 
is as follows:
grab any headers from include/* that are public DDK headers (if there are 
any) and make sure they are all in include/ddk
grab everything from the current WINE headers MingW is missing. Check that 
its all correct and stuff and add it to the ReactOS import of w32api. (if 
anything is found to be wrong in the wine headers, it should be fixed)
grab anything from include itself and add to w32api as needed
Get permission to relicence the stuff and contribute back to the main 
w32api tree.
grab contents of include/msvcrt on ReactOS plus include/msvcrt on WINE and 
also mingw-runtime.
Create one set of header files from the 3 sets such that it matches the 
microsoft headers as closely as possible.
Merge w32api DDK headers with ROS DDK headers and create one set that, 
again, matches the MS headers.

For w32api/mingw-runtime, the suggestion is that they look at all the "new 
stuff" generated by the merging of the 3 sets of msvcrt headers plus the 
ROS/WINE/w32api merger plus the DDK merger and look at acccepting it.

For WINE, I suggest they start using the new "merged" headers if at all 

Basicly, the idea is that mingw-runtime would become the "definitive" set 
of msvcrt.dll headers out there and that ReactOS, MingW and WINE would 
start using it for any case where you are talking to msvcrt.dll from the 
public side.
both ROS and WINE would then have their own internal msvcrt headers as 
necessary to build their msvcrt* builds
Then, w32api would become the "definitive" set of win32 api headers and 
would contain as much of the Microsoft Platform SDK as people have legally 
cloned. All userland components of ReactOS (as well as kernel-side bits 
that need the stuff in the userland headers e.g. win32k.sys) would use 
this. Be nice if WINE were to use this too but because of what WINE is and 
how it is built/used, there may be reasons for the WINE team not to use 
w32api as the build headers used to build WINE.
And, there would be one "definitive" set of DDK headers which would be good 
enough for building ReactOS with. And for building any kernel-side stuff 
WINE decides to add (e.g. that stuff to load the device drivers for 
vaerious copy protection systems that was being worked on). And for anyone 
using MingW and MingW GCC to build kernel-mode stuff.
Anything private or project specific would go into a set of private headers 
as needed for the different projects and sub-sections (dlls etc) within them
Anything exported by microsoft but undocumented would go into a set of 
"undocumented" headers (which could then be shared between ReactOS and WINE 
  since I dont think w32api would accept anything not documented in MSDN)

Just suggestions btw, if they are good, say so
If they are bad, say so (and say why)
If there are issues with my idea, say what they are.

More information about the wine-devel mailing list