深入解析ALPC系统机制
1. ALPC属性与数据结构
ALPC(Advanced Local Procedure Call)在消息传递过程中使用了多种属性,其中包括直接属性和代表工作属性。直接属性用于发送与同步对象关联的直接消息;代表工作属性则用于编码工作票,以辅助进行更好的电源管理和资源管理决策。部分属性在消息发送时由服务器或客户端传入,并转换为内核内部的ALPC表示。若ALPC用户请求这些数据,系统会安全地返回。
为了管理相关数据,ALPC引入了轻量级对象“blobs”。与常规对象类似,blobs可自动分配和垃圾回收,支持引用跟踪和同步锁定,还能设置自定义的分配和释放回调函数。ALPC使用执行体的句柄表实现了特定的句柄表,为blobs生成私有句柄。常见的ALPC blobs类型如下:
- 连接blob:存储客户端和服务器的通信端口、服务器连接端口以及ALPC句柄表。
- 安全blob:存储允许模拟客户端所需的安全数据和安全属性。
- 节、区域和视图blob:描述ALPC的共享内存模型,视图blob负责存储数据视图属性。
- 保留blob:支持ALPC保留对象。
- 句柄数据blob:包含支持ALPC句柄属性的信息。
由于blobs从可分页内存分配,需要仔细跟踪以确保在适当时间删除。ALPC通过资源的概念来管理blobs的生命周期,每个消息关联一个资源列表,当分配与消息关联的blob时,会将其添加为消息的资源。ALPC库提供了查找、刷新和删除关联资源的功能。
2. 句柄传递机制
Unix Domain Sockets和Mach端口的一个重要特性是能够发送编码文件描述符的消息,接收进程可复制该描述
超级会员免费看
订阅专栏 解锁全文
44

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



