久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: com組件的繼續淺談 [打印本頁]

作者: liuyang    時間: 2012-1-11 20:30
標題: com組件的繼續淺談
   com組件關于以DLL形式的編寫 有以下幾塊。 

                   客戶端調用CoCreateInstance,導致調用CoGetClassObject,CoGetClassObject通過查找注冊表,得知 DLL位置,文件名,然后調用DLL中DllGetClassObject,DllGetClassObject的功能是返回CFactory的實例.返 回后,回到CoCreateInstance,通過CFactory的指針,調用pClassFactory->CreaetInstance() 創建組件實例 。   

          上面告訴你客戶端獲取COM組件一些實現接口對象的2個API函數具體內部實現流程。 從這里我們就可推測出有個工廠類用來創建接口實現類對象。整個框架就可以出來了:

                 COM組件中又一系列自定以的接口繼承了IUnKown 接口,這個接口里有3個方法  QueryInterface()查詢并返回接口的實現類的指針  AddRef ()自增加計數  Release()自減計數 。  所有接口類的實現類都必須實現這個3個方法。                           

              一個COM組件會有多個類工產,所有使用DllGetClassObject()來產生相應的類工廠,類工廠古名思議就是用來生產接口實現類的類,當然類 工廠也繼承了IFactroy的接口CreateInstance()創建接口對象  LockServer()同時IFactroy也繼承了IUnKown 接口所有還有前3個接口 QueryInterface()AddRef ()Release()共有6個接口。   

             COM組件是需要注冊的,因為它需要把16*8位的全局唯一標示符、一個字符串命名、路徑一起保存到注冊表里,程序可以通過一個一個字符串命名到注冊表中找到相應的128位標示符與路徑,來加載DLL。

所有這里就必須需要寫個(函數名不能更改)

DllRegisterServer ()注冊com組件 里面的代碼就是上面寫的吧相應的信息用注冊WINAPI吧相應的信息注冊到注冊表中 resgvr32那個注冊器的實現代碼我也可以簡單說下,其實那個只不過是傳個DLL路徑和DLL命名,然后調用加載dll的 LoadLibrary()  然后再嗲用GetProcAddress("","DllRegisterServer "),按此你可以自己寫個resgvr32。

DllUnregisterServer()卸載 里面寫的卸載剛才注冊的信息

 DllCanUnloadNow() 這個是判斷是否可以卸載這個COM組件的引用,估計是定時去檢測的。里面的代碼就是2個計數變量的判斷是否不再使用即=0;

    所有綜上所述,COM組件只需輸出4個函數 

DllGetClassObject @1 PRIVATE
 DllRegisterServer @2 PRIVATE
 DllUnregisterServer @3 PRIVATE
 DllCanUnloadNow   @4 PRIVATE

    呵呵,至此我吧自己研究的全部貼了出來。這只是簡單的COM組件的框架。呵呵,還有其他的我沒有時間深入研究了,奉獻出來給大家一起探討。






歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品一区二区久久 | 国产精品日韩欧美一区二区三区 | 国产精品a一区二区三区网址 | 九九热免费视频在线观看 | 精品久久中文字幕 | 91精品国产一区 | 国产精品久久久久久二区 | 四虎永久免费地址 | 成人精品久久 | 精品日韩一区二区三区av动图 | 日本三级电影在线观看视频 | 91视频网址| 国产精品久久久乱弄 | 亚洲精品一二三 | 亚洲一区二区三区在线视频 | 欧美嘿咻| 精品视频国产 | 亚洲色综合 | 国产欧美一区二区三区久久人妖 | 欧美不卡一区二区 | 草久网 | 欧美h视频 | 亚洲97 | 久草网址 | 蜜桃五月天 | 岛国av免费看| h视频免费在线观看 | 中文字幕在线观看日韩 | 色欧美片视频在线观看 | 日韩av啪啪网站大全免费观看 | 午夜av成人 | 精品欧美黑人一区二区三区 | 亚洲视频手机在线 | 天天拍天天操 | 91美女在线观看 | 一区二区三区中文字幕 | 国产精品久久久久久久毛片 | 欧美色欧美亚洲另类七区 | 全部免费毛片在线播放网站 | 国产精品视频久久久 | 成在线人视频免费视频 |