Alex Ionescu wrote:
No problem for
me. I didn't even know there was one. What puzzles me
is the ANSI signature for the main function. NT is almost everywhere
Unicode, but in the entry point of a native process...
That's because _wmain didn't really appear until much later. Vista's
nt.lib now implements NtStartupProcess (calls _main) and
NtStartupProcessW (calls _wmain). I didn't implement it yet because
I'm waiting for Thomas's patch to make mingw support _wmain.
That explains this oddity.
Also, speaking of mu-sessions and smss, you might be interested to
know that Vista now has a completely re-designed LPC called ALPC (you
can email me if you want more info), as well as a much more "open" and
public SMSS, now accessible through functions like RtlConnectToSm and
RtlSendMsgToSm. I'm going to guess that some of the features regarding
mu-sessions you've wanted will actually be done right this time:)
My English must be really bad, because I totally dislike μSessions and
the way the SM is implemented in 2k/XP/2k3 (which is the design that
inspired you in writing the new CSR). The main problem is Win32
polluting everything in MS design: from kernel up. SM and CSR aren't
exceptions. My goal was drawing a sharp line between the ROS core and
any personality subsystem: cloning the MS CSR (and modifying the SM to
work with it) will bind ROS to Win32 and leave other personality
subsystems no run-time to grow upon. Thightly binding ROS to Win32 means
problems in Win32 may propagate deep down in the system and vice versa
(the well known example is win32k.sys, which can not be removed though).
RtlConnectToSm!? Well, it seems that MS eventually cloned our smdll.dll :)
--
:Emanuele Aliberti