深入解析高级本地过程调用(ALPC)
1. 高级本地过程调用简介
现代操作系统需要一种机制,用于在用户模式下的一个或多个进程之间,以及内核中的服务与用户模式下的客户端之间安全高效地传输数据。常见的 UNIX 机制(如邮件槽、文件、命名管道和套接字)可用于实现可移植性,开发者也可以使用特定操作系统的功能,例如 Win32 图形应用程序中常用的窗口消息。
Windows 实现了一种内部的进程间通信(IPC)机制,称为高级(或异步)本地过程调用(Advanced Local Procedure Call,ALPC)。它是一种高速、可扩展且安全的设施,用于传递任意大小的消息。需要注意的是,ALPC 取代了早期 Windows NT 内核设计中最初使用的旧 IPC 机制 LPC。如今,为了兼容性,LPC 在 ALPC 之上进行模拟,并且已从内核中移除(但遗留的系统调用仍然存在,它们会被包装成 ALPC 调用)。
ALPC 在 Windows 的各个部分得到了广泛应用:
- 远程过程调用(RPC) :使用 RPC 的 Windows 应用程序,当通过 ncalrpc 传输指定本地 RPC 时,会间接使用 ALPC。现在,ncalrpc 几乎是所有 RPC 客户端的默认传输方式。此外,Windows 驱动程序在利用内核模式 RPC 时,也会隐式使用 ALPC。
- 进程和线程启动及子系统操作 :Windows 进程和/或线程启动时,以及任何 Windows 子系统操作期间,ALPC 用于与子系统进程(CSRSS)进行通信。所有子系统都通过 ALPC 与会话管理器(SMSS)进行通信。
-
超级会员免费看
订阅专栏 解锁全文
9

被折叠的 条评论
为什么被折叠?



