本地过程调用

✍ dations ◷ 2025-12-06 22:29:47 #进程间通信

本地过程调用(LPC,Local Procedure Call,通常也被称为轻量过程调用或者本地进程间通信) 是一种由Windows NT内核提供的内部进程间通信方式。通过这一方式,同一计算机上的进程可以进行轻量的通信。在Windows Vista中,ALPC(Advanced Local Procedure Call,高级本地进程通信)替代了LPC。ALPC提供了一个高速可度量的通信机制,这样便于实现需要在用户模式下高速通信的用户模式驱动程序框架(UMDF,User-Mode Driver Framework)。

本地过程调用接口是Windows NT未公开原生API的一部分。这样的API不能够直接使用,但是可以通过如下方式间接使用:

LPC由内核的“端口”对象实现,这样可以确保安全(由访问控制表规定持有特定的安全标识符才可以访问)并可以验证链接另一端进程的身份。程序也可以对每一个信息设定安全标识符,并测试对应信息的变化,以实现每一条消息的安全性。

服务端和客户端之间典型的连接由下列过程表示:

本地过程调用支持以下三种交换信息的方式:

高级本地过程调用(ALPC)拥有比以往的本地过程调用(LPC)更优的性能。因为LPC只能通过同步请求/应答机制通信,而ALPC还可以使用IOCP实现通信。这样,ALPC就可以在消息数量和进程数量间保持一定平衡,保证了端口的高速通信。此外,ALPC还允许信息的批量传输,减少了进程在用户模式和内核模式之间的切换次数。

本地过程调用在Windows NT及其衍生系统中得到了广泛应用。在Win32子系统中,LPC应用于客户端和子系统服务器之间的通信(CSRSS)。在Windows NT 3.51版本中引入了快速LPC以提高调用速度。然而由于NT4.0中将部分关键服务端移入内核模式(win32k.sys)以提高系统效能,这一方法已基本被摒弃。

本地安全认证子系统服务(LSASS),会话管理器(SMSS)以及服务控制管理器均使用LPC端口和客户进程直接通信。Winlogon和安全引用监视器与LSASS进程之间的通信同样使用了LPC。

正如前文提到的,当消息在同一计算机内传输时,Microsoft RPC将调用LPC进行通信。许多仅在同一计算机内进行通信的服务采用LPC作为唯一的通信方式。远程对象连接与嵌入和分布式组件对象模型的实现也在很多地方使用了LPC作为本地通信的方式。

相关

  • 卡卢加州卡卢加州(俄语:Калужская область,罗马化:Kaluzhskaya oblast)是俄罗斯联邦的主体之一,属中央联邦管区。卡卢加州位于俄罗斯欧洲部分的中心,具有发达的交通系统和
  • 爱德华·马基爱德华·约翰·“埃德”·马基(英语:Edward John "Ed" Markey、1946年7月11日-),是一位美国民主党政治人物,自2005年成为马萨诸塞州联邦参议院议员。他在美国参议院的2013年特别选
  • 98年
  • 韩国核能韩国核能自20世纪50年代以来经过迅速的发展,已经成为世界核能的后起之秀。2007年,韩国成为世界上第三个具备自行研发第三代核电技术的国家。韩国是个能源资源贫乏的国家。发展
  • 创造亚当《创造亚当》 是米开朗基罗创作的西斯汀小堂天顶画《创世纪》的一部分,创作于1511至1512年间的文艺复兴全盛期。这幅壁画描绘的是《圣经·创世纪》中上帝创造人类始祖亚当的
  • 苏联卢布苏联卢布 (俄语:советский рубль 或 рубль СССР)是苏联发行的货币。辅币单位戈比,1卢布=100戈比。在1950年代到苏联解体前,苏联卢布和美元一样,也是一种储
  • 河南高速公路河南高速公路是中国国家高速公路网的重要组成部分,截止2013年底,河南省境内建成的高速公路通车里程达5858公里,位居全中国第一位。
  • 丝路 (购物网站)silkroadvb5piz3r.onion.to reloadxnkwi5nsbg.onion(3.0) silkroad7rn2puhj.onion(3.1) 丝路(Silk Road)是一个利用Tor的隐密服务来运作的黑市购物网站,Tor的服务保证了网站用
  • 白部白部,为汉字索引中的部首之一,康熙字典214个部首中的第一百〇六个(五划的则为第十二个)。就繁体和简体中文中,白部归于五划部首。白部通常是从上、下、左方均可为部字。且无其他
  • 火花塞火花塞(英语:Spark Plug),又称为火星塞或火嘴,通常是指汽油引擎内一个用于点燃油气产生动力的零件。1858年,法国工程师洛纳因发明了世界上第一只用陶瓷绝缘制成的电点火火花塞。火