本地过程调用

✍ dations ◷ 2025-07-23 14:52: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作为本地通信的方式。

相关

  • 火灾暴风火灾暴风(英语:Firestorm),又称火风暴或火灾风暴,是大范围火灾本身所创造和维持的风力系统,是严重野火或山火中的一种自然现象。也会用来描述一般的巨型火灾 ,火灾风暴的确定特征必
  • 咒可以指:
  • 国际乐谱典藏计划国际乐谱典藏计划 (英语:International Music Score Library Project,缩写:IMSLP)是一个以Wiki为基础,集合公共领域的乐谱的虚拟乐谱数据库计划。从2010年6月6日开始,国际乐谱典藏
  • 辛未洋扰辛未洋扰为1871年6月10日至11日美国与朝鲜王朝之间的战争。这是继丙寅洋扰之后的另一个朝鲜与外国的冲突事件。兴宣大院君执政能够成功解决两次洋扰,对巩固王朝有很大的作用
  • 特丁净2-tert-Butylamino-4-ethylamino-6-methylthio-1,3,5-triazin特丁净(英语:Terbutryn)是一种含硫三嗪类除草剂,带有一个1,3,5-三嗪环和一个叔丁基,能控制农田中杂草的生长,也可以作
  • 副部级国务院直属事业单位是直属中华人民共和国国务院的事业单位。它不是国家行政机关,但中华人民共和国国务院授权其中一些单位行使一定的行政职能。《国务院关于国家行政机关和企
  • 危险情人《肆无忌惮》(英语:Outrageous),是美国女歌手布兰妮·斯皮尔斯的一首歌曲,收录于她的第4张录音室专辑《流行禁区》中。歌曲2004年7月20日由Jive唱片作为专辑的第4支也是最后一支
  • 自由意志主义共和党人自由意志主义共和党人(libertarian Republican)是美国共和党内支持自由意志主义政策并投票支持共和党的人。据皮尤研究中心的调查显示,12%的共和党人认为他们自己是自由意志主
  • 洛特卡-沃尔泰拉方程洛特卡-沃尔泰拉方程(Lotka-Volterra equation)别称掠食者—猎物方程。是一个二元一阶非线性微分方程组成。经常用来描述生物系统中,掠食者与猎物进行互动时的动态模型,也就是两
  • 岩下润岩下润(1973年4月8日-),前日本足球运动员。