日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Andorid Binder进程间通信---总结

發布時間:2023/12/9 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Andorid Binder进程间通信---总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Server和Service Manager進程間通信

? ? ? ? Service Manager進程啟動時,已經創建了Service Manager實體對象,沒有Service Manager本地對象。

? ? ? ? Server首先獲取了Server代理對象,句柄值為0。沒有Server引用對象。

? ? ? ? Server----->Service Manager

? ? ? ??Server找到目標進程:依據Server代理對象的句柄值0,找到Service Manager實體對象,然后找到Service Manger進程,也就是目標進程。

? ? ? ? Server傳遞的數據:包括flat_binder_object結構體,當中handle為Service Manager的引用對象的句柄值,Service Manager的引用對象引用了Server的實體對象,Server的實體對象又引用了Server的本地對象。(binder_transaction函數case?BINDER_TYPE_BINDER)。

? ? ? ? Service Manager處理數據:svcinfo結構體ptr為Servicer Manager的引用對象句柄值,name為傳遞進來的字符串。

? ? ? ? Service Manager----->Server

? ? ? ? Service Manager找到目標進程:依據thread->transaction_stack->from找到目標進程,即Server進程。

? ? ? ? Service Manager傳遞的數據:返回正確值0。

? ? ? ? Server處理數據:Server循環等待。


二、Client和Service Manager進程間通信

? ? ? ? Service Manager進程啟動時,已經創建了Service Manager實體對象,沒有Service Manager的本地對象。

? ? ? ? Client首先獲取了Client代理對象,句柄值為0。沒有Client引用對象。

? ? ? ??Client----->Service Manager

? ? ? ??Client找到目標進程:依據Client進程代理對象的句柄值0,找到Service Manager實體對象,然后找到Service Manger進程,也就是目標進程。

? ? ? ??Client傳遞的數據:svcinfo 結構體name那個字符串。

? ? ? ? Service Manager處理數據:獲得binder_object結構體,當中pointer指向了Service Manager的引用對象(引用了Server的實體對象)的句柄值。

? ? ? ? Service Manager----->Client

? ? ? ??Service Manager找到目標進程:依據thread->transaction_stack->from找到目標進程,即Client進程。

? ? ? ??Service Manager傳遞的數據:傳遞的內容flat_binder_object結構體,handle為Client的引用對象(引用了Server的實體對象)的句柄值。(binder_transaction函數case?BINDER_TYPE_HANDLE)。

? ? ? ??Client處理數據:返回Client代理對象(句柄值是上面Client引用對象的句柄值)。


三、Client和Server進程間通信

? ? ? ?眼下已經獲取了Client代理對象,Client引用對象,Server實體對象,Server本地對象。

? ? ? ?Client----->Server

? ? ? ?Client找到目標進程:依據Client代理對象的句柄值,首先找到Client引用對象,通過Client引用對象再找到Server的實體對象,通過Server實體對象,找到Server進程,也就是目標進程。

? ? ? ?Client傳遞的數據:一個用于匹配的描寫敘述符。和比如GET_VALUE命令。

? ? ? ?Server處理數據:依據找到的Server實體對象,找到Server本地對象,利用Server本地對象來運行GET_VALUE命令獲取值。

? ? ? ?Server----->Client

? ? ? ?Server找到目標進程:依據thread->transaction_stack->from找到目標進程,即Client進程。

? ? ? ?Server傳遞的數據:傳遞的數據返回值是getVal獲取的值(利用Server本地對象來運行GET_VALUE命令獲取值)。

? ? ? ?Client處理數據:把上面返回的結果讀取出來。

轉載于:https://www.cnblogs.com/bhlsheji/p/4280362.html

總結

以上是生活随笔為你收集整理的Andorid Binder进程间通信---总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。