整个binder框架有2部分组成一个是ipc通信一个是rpc通讯.
ipc通信机制的一般套路
源:a(client)
目的:b (server)
- b向servicemanager注册xx服务
- a向servicemanager查询xx服务,得到一个handle(handle就是指向的进程b)
数据本身:数据就是一个buffer,char[512] buffer
rpc通信:远程函数调用
- 调用哪一个函数:server的函数编个号
- 传给它什么参数:传递server的参数就放在ipc的buffer中
- 返回值:同样也是通过buffer传给client
client(bctest.svcmgr_lookup)
- open驱动
- 获取服务:向servicemanager查询服务得到一个指向目标进程的handle(这个handle就是目标进程server),target = 0 (表示目标进程是servicemanager)name就是client想要调用的服务 (函数)
同时SVC_MGR_GET_SERVICE也会被调用
通过handle发送数据,这个时候就会导致server从驱动中读取到数据