本地过程调用

✍ dations ◷ 2025-12-07 16:51:33 #进程间通信

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

相关

  • 希格斯玻色子125.09 GeV(CMS+ATLAS) (统计误差:±0.21)希格斯玻色子(英语:Higgs boson)是标准模型里的一种基本粒子,是一种玻色子,自旋为零,宇称为正值,不带电荷、色荷,极不稳定,生成后会立刻衰变。希
  • 翁贝托·埃可翁贝托·埃科(意大利语:Umberto Eco,意大利语:,1932年1月5日-2016年2月19日)是一名意大利小说家、文学评论者、哲学家、符号学家和大学教授。除了严肃的学术著作外,著有大量的小说和
  • 微电子微电子学(Microelectronics)是研究在固体(主要是半导体)材料上构成的微小化电路,子系统及系统的电子学分支。微电子学作为电子学的一门分支学科,主要是研究电子或离子在固体材料中
  • 埃及神话人物列表埃及古物学者现今大多支持弗林德斯·皮特里爵士的论点:埃及宗教是多神论的。然而,他同时期的对手华利斯·巴奇,所持观点则是认为埃及宗教起初是一神论,众神皆为神祇拉的延伸,类似
  • 拉什特拉什特(波斯语:رشت‎)位于伊朗西北部,是吉兰省的首府,在伊朗西北部最大的城市,靠近里海。拉什特也是一个主要的旅游中心。2005年人口估计值为560,123。
  • 十二个步骤十二步项目是一个通过一套规定指导原则的行为课程来挽回(治疗)上瘾,强迫症,和其他行为习惯问题的项目。这个项目是由一个名为匿名酗酒者(Alcoholics Anonymous)的戒酒组织所发起的
  • 海沃德海沃德(Hayward),美国加州城市,属于阿拉米达县,位于费利蒙附近,其名字来自于1851年一名著名的淘金客的名字。该城市在2000年的人口调查中,有140030人。
  • 中南大羚中南大羚(学名:Pseudoryx nghetinhensis),又称为武广牛、安南锭角羚、剑角牛、索拉羚等,是偶蹄目下牛科中南大羚属中的单一物种,1992年才被发现,被誉为亚洲麒麟、亚洲独角兽(Asian u
  • 法兰克福证券交易所法兰克福证券交易所(德文:Frankfurter Wertpapierbörse,缩写:FWB;英文:Frankfurt Stock Exchange)。也是德国最大的证券交易所。而其他德国证券交易所是设在柏林(与不来梅在2003年
  • 斯卡尔鲸属斯卡尔鲸属是一属已灭绝的鲸目动物,该属大部分种类在中新世的欧洲生活,但有少数化石于澳大利亚和新西兰发现。