本地过程调用

✍ dations ◷ 2025-11-28 19:25:30 #进程间通信

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

相关

  • 老年老年(英语:old age),一般指生物的生命周期一个阶段,即中年到死亡的一段时间不同的文化圈对于老年人有着不同的定义。由于生命的周期是一个渐变的过程,壮年到老年的分界线往往是很
  • 职业病游戏职业病游戏是一个集体游戏。不限,多人为佳这游戏可以训练玩家的急才,亦可以训练玩家的创意。
  • 油酸油酸(英语:Oleic acid)是一种单不饱和Omega-9脂肪酸,存在于动植物体内。化学式C18H34O2 ,结构简式 CH3(CH2)7CH = CH(CH2)7COOH。 英文名称“oleic acid”源自“橄榄”(Olive)。油
  • 程璧光程璧光(1861年-1918年2月26日),字恒启,号玉堂,广东香山人;清末至民国初年中国海军将领。程璧光原为广东水师广丙号舰管带,曾参加甲午战争。北洋舰队覆没后,由程向日军提交降书。事后
  • 梅耶贝尔《耶弗塔的誓言》,1812年首演。《格拉纳达的流亡》,1822年首演《十字军在埃及》,1824年首演《恶魔罗勃》,1831年首演《胡格诺教徒》,1836年首演《西里西亚军营》,1844年首演《先知
  • 奥拉西奥·卡尔特奥拉西奥·曼努埃尔·卡特斯·哈拉(西班牙语:Horacio Manuel Cartes Jara,1956年7月5日-)为巴拉圭政治家、拥有数家公司的企业家和体育活动领导人,前任巴拉圭总统。卡特斯的父亲为
  • Laurenti约瑟夫斯·尼古劳斯·劳伦蒂(德语:Josephus Nicolaus Laurenti,1735年12月4日-1805年2月17日)是意大利裔奥地利博物学家、动物学家和医生。劳伦蒂在1768年发表了关于爬虫两栖类动
  • 拉希德·苏尼亚耶夫拉希德·阿利耶维奇·苏尼亚耶夫(俄语:Рашид Алиевич Сюняев,1943年3月1日-),俄国天体物理学家,鞑靼人,吸积盘理论的开拓者,并在1972年和雅可夫·泽尔多维奇一起提
  • INFICONINFICON(Instruments For Intelligent Control),中译英福康,是总部位于瑞士巴德拉加兹的一家专门研发、制造及供应半导体和真空镀膜产业的仪器、侦测器与控制软件公司。在制冷、
  • 笔尾树鼠笔尾树鼠(学名:)为鼠科笔尾树鼠属的动物,分布于中国、印度、印尼、老挝、马来西亚、缅甸、泰国和越南。在中国大陆,分布于广西等地,一般栖息于热带、亚热带丛林。该物种的模式产地