本地过程调用

✍ dations ◷ 2025-07-02 09:49:18 #进程间通信

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

相关

  • HbHB可以指下列事物:
  • 罗德西亚人罗得西亚人(学名:Homo rhodesiensis)是可能的人族。其他在形态上相似的遗骸亦在南部非洲、东非及北非发现。罗得西亚人的遗骸估计属于12.5-60万年前。在非洲于60万年前后的阿舍
  • 科科斯群岛科科斯(基林)群岛(英语:Cocos (Keeling) Islands)是澳大利亚位于印度洋的海外领地,位于澳大利亚本土与印尼之间的南纬12°0′00″ 东经96°30′00″。群岛面积达14.2平方公里;人口
  • 麦克德尔米德艾伦·格雷厄姆·麦克德尔米德,ONZ(英语:Alan Graham MacDiarmid,1927年4月14日-2007年2月7日),或译“艾伦·麦克迪尔米德”,化学家,具有美国和新西兰双重国籍。由于在导电聚合物领域
  • 全息存储激光全息存储技术是一种利用激光全息摄影原理将图文等信息记录在感光介质上的大容量信息存储技术,它有可能取代磁存储和光学存储技术,成为下一代的高容量数据存储技术。传统的
  • 索利斯戴维·詹姆斯·索利斯,FRS(英语:David James Thouless,1934年9月21日-2019年4月6日),英国凝聚体物理学家,与邓肯·霍尔丹及约翰·科斯特利茨因“在物质的拓扑相变和拓扑相领域的理论
  • 国立台湾史前文化博物馆国立台湾史前文化博物馆(简称史前馆)位于台湾台东县台东市,是台湾主要的公立人类学与自然史博物馆之一,也是台湾东部唯一的国家级博物馆,以台湾史前文化和台湾原住民族文化的文物
  • 刘 敏刘敏可以指:
  • 南昌话赣语南昌话是赣语昌都片的一种方言。由于赣语内部的复杂性,真正意义上的南昌话只局限在南昌市区及南昌县管辖的地区,而不包括南昌市管辖的其他县。自上古至有周一代,江西一直都
  • 内地 (大日本帝国)内地(日语:内地/ないち  */?)是日本在大日本帝国时期使用的专有名词,意指本土区域,等同于现今的日本列岛。其对应词为外地。出生于内地者为大日本帝国国民,或称“内地人”;反之,出