[ros-dev] WIN32K: LPC use

Robert Köpferl rob at koepferl.de
Tue Jan 18 21:51:51 CET 2005


Ey, rather interesting all this.
Leads directly to questions: Why is it needed to maintain compatibility 
with NT. Either API and Semantics are used just and only in ROS. OK, 
some never seen sub systems exist, but will they ever run on ROS or wil 
new ROS-ss ever run on NT?

Emanuele Aliberti wrote:
> Hi Alex,
> I hope you are fine now, after the party and a restful night... ;-)
> 
>> I'm currently working/researching on the LPC implementation and I'm 
>> about to soon start reworking some of our code. Just to avoid any 
>> duplication, are you also working on such a thing, or simply exploring?
> 
> 
> David Welch wrote our initial LPC code to resemble the BSD sockets 
> general design (an LPC port behaves exactly like a BSD socket; there are 
> ports in listening state and connected ports to send/receive datagrams). 
> That is, of course, not the way NT LPC works, but at the time David 
> wrote the code, we knew almost nothing about LPC, but the incomplete 
> information Prasad Dabak wrote in "Undocumented Windows NT" (1999). That 
> code was good enough to start with user mode subsystem servers, but till 
> now it has prevented us from testing real system components like the SM, 
> CSR and friends etc. for compatibility in ROS. This is what I have done 
> for the last three years. What I got from the researching is some better 
> understanding of how LPC works, but not a complete picture. I am glad to 
> see you are working or planning to work on LPC, because there is at 
> least one API that is incompatible with NT's, and the general semantics 
> of the path connect->request->reply is wrong. In short, it is the the 
> listening port that receives the messages from the clients even after 
> the connection happens and not the server side connected port). This 
> could be deducted by studing more carefully the sample code provided by 
> Dabak, but I found it indipendently with some simple c/s test code. I 
> told it to David, Eric and others and they agreed that should be 
> correct. I will share what I know and I can send my unfinished code if 
> it may be of interest (not that I am that a skilled coder, but you could 
> just tour it for fun).
> Recalling what David Welch told me in many occasions, NT LPC has many 
> flaws, many are security related (this led Microsoft to introduce secure 
> ports with NT 5.0, mostly to armour the LSA). The overall problem with 
> the real LPC is that it looks like really old, not well understood in 
> Microsoft and almost untouched for years (many unfixed LPC bugs still 
> plague Windows). You could even imagine it was part of the Prism project 
> at DEC, in the '80s, perhaps with the name "Channel" for what we now 
> know as "port" (undocumented and unimplemented APIs existed in NT 3.1, 
> NT 3.5, NT 3.51, NT 4.0 and NT 5.0, but disappeared in NT 5.1 and NT 
> 5.2). It seems that only lately (1999+) Microsoft forced the NT kernel 
> team to face the old LPC code to improve it.
> Alex, what are your plans for rewriting the LPC code?
> 
> Emanuele
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.com
> http://reactos.com:8080/mailman/listinfo/ros-dev
> 


More information about the Ros-dev mailing list