本地过程调用

✍ dations ◷ 2025-12-07 04:35:08 #进程间通信

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

相关

  • 左心室心室(英语:Ventricle)是心脏的组成部分,哺乳动物心脏有四个腔,前下部的为左、右心室(英语:Ventricle),二者之间隔以室中膈;后上部的为左、右心房,之间隔以房中膈。正常心脏左右两半互不
  • 细胞自噬自噬(英语:Autophagy,或称自体吞噬)是一个涉及到细胞自身结构通过溶酶体机制,负责将受损的细胞器、错误折叠的蛋白及其他大分子物质等运送至溶酶体降解并再利用的进化保守过程。
  • 软木塞软木塞指的是用含有软木脂而不渗水、柔软而有浮力的木质制成的木塞。常用作葡萄酒瓶塞,而选材主要是西班牙栓皮栎。葡萄牙的牧场(Dehesa)每年出产全球一半的软木塞,而该国的Cort
  • NaSeCN硒氰酸钠是一种无机化合物,化学式为NaSeCN。硒氰酸钠可由氰化钠溶解硒得到:硒氰酸钠遇酸分解:
  • 优格酸奶(英语:Yogurt,又称老酸奶、优格、乳酪、酸乳、优酪乳)是乳制品的一种,由动物乳汁经乳酸菌发酵而产生。优格一词源自土耳其语的yoğurt(读音:.mw-parser-output .IPA{font-famil
  • 岛津久大岛津久大(島津 久大,1906年5月24日-1990年12月9日),是日本的外交官、第一任迎宾馆馆长。
  • 袁健生袁健生(1942年2月1日-),生于贵州省,中华民国海军中校、外交官、政大硕士,曾任国防部驻美国副武官、外交部驻美国代表、国安会秘书长、总统府资政。毕业于海军官校正期班52年班,与前
  • 棕榈狸亚科棕榈狸亚科(学名:Paradoxurinae)又名椰子猫亚科,是食肉目灵猫科的一个亚科,1864年由约翰·爱德华·格雷首次描述。
  • 高氙酸高氙酸(化学式: H 4 X e
  • 布卡漫画布卡漫画是2011年成立的网上漫画平台,珠海布卡科技有限公司营运,官方吉祥物为“布卡兽”,官方萌拟人化形象为“布卡娘”。首先取得竹书房授权正版简体中文电子漫画,于2015年9月