本地过程调用

✍ dations ◷ 2025-09-04 21:54:08 #进程间通信

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

相关

  • 柯欧普神殿考姆翁布是埃及的城镇,由阿斯旺省负责管辖,位于该国东南部尼罗河东岸,距离首府阿斯旺40公里,主要农产品有甘蔗和玉米,2010年人口75,128。
  • 大纪元大纪元可以指:
  • 苏肇冰苏肇冰(1937年6月21日-),生于江苏苏州,中国物理学家,中国科学院理论物理研究所研究员,曾任该所所长。1958年毕业于北京大学物理系。1991年当选为中国科学院学部委员(院士)。2000年当
  • 兰德纸草书莱因德数学纸草书(又译作林德数学手卷;Rhind Mathematical Papyrus),也称阿姆士(Ahmose)纸草书,或者大英博物馆10057和10058号纸草书,是古埃及第二中间期时代(约前1650年)由僧侣阿姆士
  • 约瑟夫森布赖恩·约瑟夫森(英语:Brian Josephson,1940年1月4日-),英国物理学家,犹太人,生于威尔士卡地夫。在22岁,尚是一个博士生时,他就提出约瑟夫森结这一概念,并凭此赢得1973年诺贝尔物理学
  • 阿尔费德·比奈阿尔弗雷德·比奈(法语:Alfred Binet,1857年7月8日-1911年10月18日),比奈生于法国尼斯;是一位法国心理学家,智力测验的发明者。1889年在巴黎大学创立法国第一个心理实验室;1905年与泰
  • 东森戏剧台EBC东森戏剧,为东森电视旗下的频道之一。
  • 塞巴斯蒂安·科塞巴斯蒂安·纽博尔德·科,科男爵,CH,KBE(英语:Sebastian Newbold Coe, Baron Coe,1956年9月29日-),生于英格兰伦敦,英国前田径运动员,保守党成员,伦敦奥运委员会主席。科是伦敦申办2012
  • Σ粒子在粒子物理中,Σ粒子一类由三个夸克组成的重子。两个上夸克(或两个下夸克)和一个奇夸克组成Σ;两个上夸克(或两个下夸克)和一个粲夸克组成Σ c;两个上夸克(或两个下夸克)和一个底夸克
  • 集体发明物集体发明物(英语:Collective Invention)是由比利时超现实主义画家雷内·弗朗索瓦·吉兰马格利特于1935年创作的。此画的尺寸的尺寸是长73公分,宽116公分,现为私人收藏品。1934年,