高级本地过程调用(ALPC)

高级本地过程调用(ALPC)是一种消息传递机制。服务器进程发布全局可见的连接端口对象。当客户端需要来自子系统或服务的服务时,它将打开服务器的连接端口对象的句柄,并将连接请求发送到端口。通道由服务器创建,并向客户端返回一个句柄。该通道由一对专用通信端口组成:一个用于客户端到服务器的消息,另一个用于服务器到客户端的消息。通信通道支持回调机制,因此客户端和服务器通常可以期望答复时可以接受请求。创建ALPC通道时,选择了三种消息传递技术之一-

  • 第一个适用于中小型消息(最大63 KB)。在这种情况下,端口的消息队列用作中间存储,并且消息从一个进程复制到另一个进程。

  • 第二种技术是用于较大的消息。在这种情况下,将为通道创建一个共享内存段对象。通过端口的消息队列发送的消息包含指向节对象的指针和大小信息。这避免了复制大邮件的需要。发送者将数据放入共享部分,接收者直接查看它们。

  • 在第三种技术中,它使用直接读写进程地址空间的API。ALPC提供功能和同步,以便服务器可以访问客户端中的数据。RPC通常使用ALPC在特定情况下获得更高的性能。

Win32窗口管理器使用其自己的消息传递形式,该形式独立于ALPC的执行功能。