documentation for SERVER_START_REQ

James Hawkins truiken at
Mon Mar 7 15:21:45 CST 2005

On Mon, 7 Mar 2005 11:51:53 -0600, James Hawkins <truiken at> wrote:
> Hi,
> I'm implementing NtLoadKey, but I can't find any documentation on
> making server requests, ie SERVER_START_REQ, the different tracing
> abilitites such as using fprintf(stderr,...) instead of the known
> TRACE, style of code etc.  The latter two are not as important to me
> because I've picked them up while perusing the code, but it might be
> important to someone who hasn't looked through it before.  I do need
> the semantics for SERVER_START_REQ, so if you could point me in the
> right direction or tell me I would really appreciate it.

I've looked deeper into this and found include/wine/server.h and the
SERVER_START_REQ define.  So this define is a method of communication
between the client(?) and server?  One thing I don't understand is why
we put the request in two do...while(0) loops.  Won't they just run
once anyway?

Concerning Reg/NtLoadKey, load_key (in the server) looks implemented
to me.  NtLoadKey is not is not implemented.  RegLoadKeyW/A is
implemented, but it opens the file containing the hive to load to the
registry and then calls load_registry which loads a part of the
registry from a file.  While this probably does work, I think the
correct thing to do is:

* Implement NtLoadKey, having it call load_key in the server
* Rewrite RegLoadKey to call NtLoadKey

What do you think?

James Hawkins

More information about the wine-devel mailing list