本地过程调用

✍ dations ◷ 2025-10-29 15:39:56 #进程间通信

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

相关

  • 词类词类(part of speech、PoS、POS)是一个语言学术语,是一种语言中词的语法分类,是以语法特征(包括句法功能和形态变化)为主要依据、兼顾词汇意义对词进行划分的结果。从组合和聚合关
  • 书写书写是人类有意识地使用文字来记录资讯、表达意向。纪录资讯的工具和方法数之不尽,一般会用笔在纸上书写,但过去也有人在石版、竹简、龟壳、墙壁等材质上写作。随着科技发展,使
  • 语素构词学语素构词学(英语:Morpheme-based morphology)是一种具有如下三个基本公理的构词学观点:语素构词学有两种主要的学理,一个是布鲁费尔德的,而另一个是霍克特的。对布鲁费尔德来说,“
  • 中华 (消歧义)地理上的中华可指中原或中国的代称,详见中国的称号#中华。古代政权上的中华指中夏,中华或中夏为封建制下的天子所在国,诸候所在国为诸夏或称诸华。中华和诸华(中夏和诸夏)统称华
  • 怀圣寺怀圣寺又称光塔寺、怀圣光塔寺、龙凤寺、礼拜寺等,位于中国广州越秀区光塔路56号,始建于唐代,是中国现存最早的清真寺,甚至是世界最早的清真寺之一。怀圣寺光塔为中华人民共和国
  • 前导链DNA复制是指DNA双链在细胞分裂分裂间期进行的以一个亲代DNA分子为模板合成子代DNA链的过程。复制的结果是一条双链变成两条一样的双链(如果复制过程正常的话),每条双链都与原来
  • 鼹形鼠科鼹形鼠科(学名:Spalacidae),或称瞎鼠科,属于哺乳纲啮齿目。其外形像老鼠,体长10多厘米,头尖,眼睛已基本退化。擅长挖洞,以果类,昆虫等为食。广泛分布于欧洲及北美洲。有时被人称作“鼹
  • 2005年2005年被中华人民共和国处决的死刑犯列表,旨在列出2005年被中华人民共和国处决的死刑犯。
  • 坠落陨石陨星坠落,又称观测坠落,是人类或自动化设备观测到的陨星坠落后所收集的陨石。所有其他的陨石都被称为“发现”。坠落陨石(英语:Meteorite fall)也称为坠落观察(英语:observed falls
  • 拉欣·拉赫曼拉欣·拉赫曼(英语:Rashin Rahman,1967年5月23日-),或直称拉赫曼,印度男演员。他曾出演过超过150部电影,其中以马拉雅拉姆语、泰米尔语和泰卢固语电影最多。在后两种电影中,他亦以艺