新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于COM的輕量級組件技術的簡單實現

        基于COM的輕量級組件技術的簡單實現

        作者: 時間:2010-09-01 來源:網絡 收藏

        2.1 管理的功能

        Com庫中可維護兩個鏈表,分別用于存放插件DLL的信息和接口信息。

        每次使用Com庫加載的DLL信息都將記錄到插件鏈表中。在為用戶創建接口前,還需要查詢插件鏈表,以判斷該插件是否已經被加載,如已加載,便可直接使用,不需要重新加載,這樣可以節省系統開銷。由于在應用中加載的插件數目有限,因此,查詢鏈表花費的時間代價可以忽略,圖4所示為存放插件信息的結構。其中CLASS_TABLE結構存放插件DLL的信息。接口鏈表可用來保存成功返回給用戶的插件接口。用戶申請接口時,Com庫先在接口鏈表中查找該接口,如果已經存在,則直接返回,這樣可以節省創建接口的時間,也可以有效地控制接口對象的數目。

        圖5所示是CIMPL結構用于存放插件接口的信息。

        釋放這兩個鏈表的過程就是釋放資源的過程。在標準中,資源管理是通過一個由接口自己負責的資源計數器完成的。在中,根據應用需要,每個接口只需要一個接口指針,而不需要資源計數器,釋放資源的任務由Com庫完成。當應用程序關閉時,可將兩個資源鏈表中的接口對象刪除,并將組件DLL/SO卸載。

        2.2 創建插件接口指針

        Com庫的核心功能就是創建組件接口指針。

        創建組件接口指針的函數為CoCreateInstance,它具有圖6所示的三個參數。其創建過程如圖7所示。



        2.3 ExtensionSystem靜態庫

        ExtensionSystem靜態庫中已加載了Com庫,并將Com庫的創建接口指針函數封裝成接口。這樣,客戶端在使用時,就不需要關注Com庫的具體位置,而可以直接調用ExtensionSystem的接口來獲取插件接口指針。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大田县| 拉萨市| 牡丹江市| 天水市| 措美县| 峡江县| 苗栗县| 日照市| 平凉市| 临江市| 永修县| 江北区| 嵩明县| 密云县| 清河县| 高阳县| 顺义区| 武强县| 和龙市| 涟水县| 交城县| 金山区| 蚌埠市| 唐山市| 略阳县| 马龙县| 仙居县| 台湾省| 江口县| 红安县| 华安县| 尼勒克县| 宾阳县| 喀喇沁旗| 会东县| 威宁| 宜阳县| 乡城县| 大石桥市| 文登市| 西平县|