本地过程调用

✍ dations ◷ 2025-11-24 23:58:29 #进程间通信

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

相关

  • 细胞生物学细胞生物学(英语:cell biology)旧称细胞学(cytology),是研究细胞的形态结构、生理机能、细胞周期、细胞分裂、细胞自噬、细胞凋亡, 以及各种胞器及讯息传递路径的学科。研究范围专
  • 霍华德·泰勒·立克次霍华德·泰勒·立克次(英语:Howard Taylor Ricketts,1871年2月9日-1910年5月3日),生于美国俄亥俄州芬德利(Findlay),著名病理学家,为立克次体的发现者。他最早在西北大学研究芽生菌病
  • QD-LED量子点显示器("Quantum dot display")是一种借由量子点(Quantum dot, QD)或半导体奈米晶体其之特殊光电性质可产生纯色之红、绿和蓝光之三原色以作为显示应用的技术。在于现今显
  • 莱奥波尔多·卡尔沃-索特洛莱奥波尔多·卡尔沃-索特洛·布斯特洛(西班牙语:Leopoldo Calvo Sotelo y Bustelo,1926年4月14日-2008年5月3日),在1981年至1982年担任西班牙首相。
  • 李兆洛李兆洛(1769年-1841年),原姓王,字申耆,号养一,江苏阳湖(今属常州)人,清朝政治人物、地理学家、文学家,进士出身。嘉庆九年(1804年)甲子科江南乡试第一名举人(解元)。嘉庆十年(1805年)登乙丑科
  • 上海滩上海滩可以指:
  • 卢卡·西诺莱利卢卡·西诺莱利(Luca Signorelli,约1445 – 1523年10月16日)是一位意大利文艺复兴时期的画家,他是当时托斯卡纳地区的重要画家之一,但也在罗马及翁布里亚绘制作品。卢卡·西诺莱
  • 林格拉语林加拉语(林加拉语:Lingála、Ngala)是班图语支的一种语言,主要分部在刚果民主共和国(刚果-金沙萨)的西北部和刚果共和国 (刚果-布拉柴维尔)的大部,安哥拉和中非共和国局部。使用这
  • 拉廊府拉廊府(泰语:จังหวัดระนอง,皇家转写:Changwat Ranong,泰语发音:)在泰国南部,她座落在安达曼海滂。西面是缅甸德林达依省的高当(Kawthaung),东到南分别是泰国的春蓬府、素叻
  • 磷酸钚(III)磷酸钚(III)是一种无机化合物,为钚的磷酸盐之一,化学式PuPO4。磷酸钚(III)可由二氧化钚和磷酸氢二铵在1000 °C反应得到,产物可能由于原料241Pu的衰变而带有很少的镅。磷酸硼和