本地过程调用

✍ dations ◷ 2025-09-18 11:12:45 #进程间通信

本地过程调用(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作为本地通信的方式。

相关

  • 精神分析精神分析学(英文:Psychoanalysis)或称心理分析学,是于19世纪末期由奥地利神经学家西格蒙德·弗洛伊德的创立的一门学科。当时精神病学普遍受生物学的影响,对于心理现象的构成、发
  • 精子发生精子发生(英语:spermatogenesis)是有性生殖的雄性动物的睾丸中,生殖细胞从精原细胞一直发育到成熟的精子的过程。这一过程始于精原干细胞的有丝分裂,邻近生精小管的基底膜。繁殖
  • 世界杯橄榄球赛橄榄球世界杯赛(Rugby World Cup)是一项由国际橄榄球理事会(IRB)四年一度举行的最高级别的国际性国家级联合式橄榄球赛事。现今已举办的9届赛事中,共有4个国家曾赢得冠军。新西兰
  • 莫尔登市莫尔登(英语:Malden)是美国马萨诸塞州米德尔塞克斯县的一座城市。据2010年美国人口普查结果显示,该市人口为59,450人。2009年,莫尔登市被彭博商业周刊评为马萨诸塞州“最适合养育
  • 郑志明郑志明可以指:
  • 第二次荒漠远征沙漠征服(西班牙语:Conquista del desierto)也称为第二次荒漠远征,是1878年至1885年间由阿根廷政府组织的一个军事行动,以借由此行动将领土扩张到马普切人、兰盖尔人(西班牙语:Pueb
  • 查菲县查菲县 (Chaffee County, Colorado)是美国科罗拉多州中西部的一个县。面积2,629平方公里。根据美国2000年人口普查,共有人口16,242人。县治萨利达 (Salida)。成立于1879年2月
  • 21世纪2001年1月1日至2100年12月31日的这一段期间称为21世纪。随着冷战结束,世界格局出现了显著变化:美国依然是世界强国,但要面对俄罗斯则是军事挑战。第一世界与第二世界的国家分别
  • 各国铝产量列表这是一个各国2014年的铝产量列表,大部分数据基于2014年12月的Altech 。
  • 新森林国家公园新森林国家公园: 566 km2(219 sq mi) 新森林国家公园管理处新森林(英语:New Forest)地处英国南部地区,在人口聚集的西南英格兰保留着大量的无围栏牧场,低矮灌木丛和森林。它包括