天天看點

《BREW進階與精通——3G移動增值業務的營運、定制與開發》連載之81——BREW應用間通信之共享記憶體

版權聲明:本文為半吊子子全棧工匠(wireless_com,同公衆号)原創文章,未經允許不得轉載。 https://blog.csdn.net/wireless_com/article/details/5914155

實際上,事件傳遞本質上就是一種共享記憶體的通信方式。ICLIPBOARD可以用于實作 AEE 層中的剪切和粘貼功能,是共享記憶體通信的另一種重要形式。由于剪貼闆資料在應用程式結束後仍可能存在,因而此函數會配置設定新記憶體并将内容複制到新的緩沖區,也就是說ICLIPBOARD_Set() 配置設定的記憶體在系統記憶體裡,是以可以被其他的應用所使用。如果傳遞指針為 NULL 或大小為 0 的參數,将會釋放現有的剪貼闆資料。

目标應用希望從剪貼闆獲得通信内容的時候,需要使用ICLIPBOARD_EnumInit()初始化剪貼闆中各格式的枚舉上下文,然後調用ICLIPBOARD_GetData()将指定格式的剪貼闆資料複制到目标緩沖區,如果剪貼闆中的資料不是目标應用所需要的,需要調用ICLIPBOARD_EnumNext()傳回下一個可用/注冊的剪貼闆格式進一步處理,以此類推。在目标應用處理完畢後,可以調用ICLIPBOARD_Empty()從剪貼闆中删除所有格式的所有資料。如果最後一個應用程式沒有調用 ICLIPBOARD_Empty 來釋放剪貼闆,并且 BREW 在手持裝置關機後退出,則剪貼闆上的所有資料均将丢失。

需要注意的是,剪貼闆上的資料将在有資料加入的情況下予以更新,有可能随時更新,這時要調用ICLIPBOARD_GetSequence()讓調用程式确定剪貼闆是否進行過更新,序列号隻會在有資料加入時增加計數,資料删除對序列号沒有影響。手持裝置關機再開機後,序列号将會被重置。

繼續閱讀