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

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



