高级本地过程调用 (ALPC)
高级本地过程调用 (ALPC) 是一种消息传递机制。服务器进程发布一个全局可见的连接端口对象。当客户端需要子系统或服务的服务时,它会打开服务器连接端口对象的句柄,并向端口发送连接请求。服务器创建一个通道,并向客户端返回一个句柄。该通道由一对私有通信端口组成:一个用于客户端到服务器的消息,另一个用于服务器到客户端的消息。通信通道支持回调机制,因此客户端和服务器可以在通常期望回复时接受请求。创建 ALPC 通道时,会选择三种消息传递技术之一:
第一种技术适用于小型到中型消息(最多 63 KB)。在这种情况下,端口的消息队列用作中间存储,消息从一个进程复制到另一个进程。
第二种技术适用于大型消息。在这种情况下,为通道创建一个共享内存段对象。通过端口的消息队列发送的消息包含指向该段对象的指针和大小信息。这避免了复制大型消息的需要。发送方将数据放入共享段,接收方直接查看它们。
第三种技术使用直接读写进程地址空间的 API。ALPC 提供函数和同步机制,以便服务器可以访问客户端中的数据。ALPC 通常由 RPC 用于在特定情况下实现更高的性能。
Win32 窗口管理器使用其自身的某种消息传递方式,这独立于执行 ALPC 功能。
广告