本地过程调用

✍ dations ◷ 2025-04-04 22:48:34 #进程间通信

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

相关

  • 汉文教育用基础汉字汉文教育用基础汉字是韩国教育中规定的标准汉字,皆为与繁体字大致相同的韩文汉字。于1972年8月16日首次发表,2000年12月30日重定修订并发表,数量约1800字,在中高等院校进行普及
  • 急性肾衰竭急性肾损伤(Acute kidney injury、AKI、以前称为"急性肾衰竭"(acute renal failure、ARF)、急性肾功能衰竭),通常在7天内肾脏发展为肾功能突然损失掉。其原因是多方面的。通
  • 升力升力(英语:Lift)。当流体流经一个物体的表面时会对其产生一个表面力,而则这个力垂直于流体流向的分力即为升力,与之相对的则是平行于流体流向的阻力。如果流体是空气时,它产生的升
  • 伪基因假基因(Pseudogenes,Pseudo-意为“假”)是一类染色体上的基因片段。假基因的序列通常与对应的基因相似,但至少是丧失了一部分功能,如基因不能表达或编码的蛋白质没有功能。一般认
  • 威廉·卡特罗尔威廉·艾伯特·卡特罗尔(英语:William Albert Catterall,1946年10月12日-),出生于罗德岛州普罗维登斯,美国药理学家和神经学家,华盛顿大学医学院教授。他的主要贡献是阐明兴奋细胞离
  • 经度经度是一种用于确定地球表面上不同点东西位置的地理坐标。经度是一种角度量,通常用度来表示,并被记作希腊字母λ(lambda)。子午线穿过南极和北极并把相同经度的点连起来。按照
  • 福建台湾承宣布政使司福建台湾等处承宣布政使司简称台湾布政使司或台湾布政司,成立于光绪十三年(1887年);台湾正式建省后。台湾布政使司实为清治时期此阶段之台湾省的最高财政、民政统治衙门,隶属于建
  • 未成年怀孕未成年怀孕是指是指未达当地法定成年标准的少女有了身孕,女性只要在开始排卵之后有进行性行为就有可能怀孕,未成年怀孕多半是在第一次月经之后,但也有可能在第一次月经之前就怀
  • 国会大厦美国国会大厦(英语:United States Capitol),别称国会山庄,是美国国会所在地,位于美国首都华盛顿特区的国会山,坐落在华盛顿特区国家广场东端。在地理上,美国国会大厦位于华盛顿特区
  • 希波克拉底誓词希波克拉底誓词(希腊语:Όρκος του Ιπποκράτη,英语:Hippocratic Oath),俗称医师誓词,是西方医生传统上行医前的誓言,希波克拉底乃古希腊医者,被誉为西方“医学之父”