本地过程调用

✍ dations ◷ 2025-11-30 17:51:50 #进程间通信

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

相关

  • 心血管检查心血管检查是有关心血管的身体检查,可能包括心前区检查(英语:precordial examination)及周边血管检查(英语:peripheral vascular examination)。有些部分的检查可能在坐姿比较容易
  • Beilstein拜耳斯坦数据库(Beilstein database,亦被译为“拜尔斯坦”)是重要的化学数据库之一,以有机化学资料见长。它分为拜耳斯坦文摘数据库和拜耳斯坦有机化学结构及数据两部分,涵盖自17
  • 本列表列出各国银年产量(2013年),根据美国地质调查局统计资料。
  • 伦敦大学圣乔治学院伦敦大学圣乔治学院(St George's, University of London,法定名:St George's Hospital Medical School,非正式:St George's或SGUL) 是位于英国伦敦的一所医学院,是伦敦大学下属学院
  • 守恒力假设一个受到某作用力的粒子,从初始位置移动到终结位置,而此作用力所做的功跟移动路径无关,则称此力为保守力(conservative force),又称为守恒力。等价地说,假设一个粒子从某位置,移
  • 长期的长期变化是时间系列在长时期的非周期变化(参见分解时间系列)。无论何者被查觉是长期变化或是与时间尺度无关:在超越世纪的时间尺度上,长期变化在数百万年的时间尺度下可能是周期
  • 金钱薄荷金钱薄荷(学名:Glechoma hederacea),又名连钱草、欧活血丹、大马蹄草、虎咬黄,是唇形科植物中的一个种,多年生草本,株高约10-20cm,主要生长于亚热带如台湾地区之海拔2600m以下的开阔
  • 阿纳科特斯阿纳科特斯(英语:Anacortes)位于美国华盛顿州的斯卡吉特县。它的名字“Anacortes”是来自安娜·柯提斯(Anna Curtis)--早期费多戈岛(Fidalgo Island)移民阿莫斯·鲍曼(Amos Bowman)的妻
  • 胆 (脏腑)据中医脏象学说,胆与、胃、小肠、大肠、膀胱、三焦合称“六腑”;与“肝”互为表里。主要功能为贮藏和排泄精汁(胆汁)、主决断和调节脏腑气机。胆与其他腑器不同之处,是不会和食物
  • 非洲森林象非洲森林象(学名:)又名圆耳象,主要分布于非洲刚果盆地一带。从前,非洲森林象被视为普通非洲象(学名:)的亚种,但透过基因分析之后,被认为可能是一支独立物种。然而,自然保护联盟(IUCN)的非