COM,魔鬼的藝術

COM,魔鬼的藝術。
真實不好意思,一不小心轉到了COM這裏。COM的工作方式跟計算機芯片或LEGO塊的工作方式類似,互相拼接,然後工作。
我對COM是沒有一點點了解了,只知道大多數的COM就是DLL。COM對象提供給用戶大量的界面,它算是一個用C++集成出來的類。
當然提供界面也就是爲了讓大量的用戶都能夠使用了,提高了代碼的重用性,其實更重要的一個應該是爲無條件升級提高了效率。
呵呵,在這裏虛函數也就派上了用場。
QUERYINTERFACE()對於COM來所非常重要,他是用來申請一個指向你所希望的界面函數的指針。要實現該請求,需要一個界面標識符。
這個標識符是唯一的指定給界面的數字,長度是128位。我想你應該知道能定義多少可能的界面標識符了吧。據說這樣的工作讓地球上所有的人一起
來做,也要花上1億年(那也做不完,沒人去種田,中間都餓死了,呵呵)。
COM的規則是:如果已經存在了一個界面的話,可以一直從該界面中申請其他的界面,條件是該界面來自於同一個COM對象。
ASSREF是一個古怪的函數,COM對象使用參數計數的技術來跟蹤它們的情況。這是由COM的一個聲明決定的:該技術和編程語言無關。
如果COM對象使用MALLOC()活着NEW[]函數的話,那就和C/C++語言有關了。當該引用計數遞減到0的話,該對象就在函數內部消失。
COM對象是和COM對象兼容的。
以一個次序創建對象,以相反的順序釋放對象。GUID跟IID都可以用來引用COM對象跟他的界面。
DIRECTX,OLE,ACTIVEX都是基於COM技術的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章