COM接口類型
COM內可以定義這三種接口:
● 自定義接口
● 調度接口
● 雙重接口
Custom Interfaces
自定義接口
使用自定義接口時,由接口定義的那些方法都被定義在一個vtable中。對於vtable來說,只有那些方法入口才是有用的。方法的順序被定義在接口中。
圖4-4展示了一個自定義接口。自定義接口總是從接口IUnknown派生。IUnknwon是所有COM接口的基礎接口,定義了三個方法:AddRef、Release和QueryInterface。跟著這些方法之後的是指向接口ICourseManagement所包含方法(GetCourse、SetCourse和GetCustomerControl)的指針。
圖4-4 自定義接口的列表(http://book.csdn.net/bookfiles/179/img/image007.gif)
這種接口的特點在於這是調用方法最快的途徑,但是它會受限於程式語言,接口定義必須在編譯時可見。腳本客戶端(比如VBScript和JavaScript)無法使用這些接口,而Visual Basic 6編寫的客戶端可以使用這種接口
Dispatch Interfaces
調度接口
腳本客戶端不能處理自定義接口,它們只能使用調度接口。一個調度接口是一個
IDispatch接口的實現,它可以被腳本客戶端理解,所以在編譯時不需要知道接口的記憶體布局。
圖4-5展示了IDispatch接口的功能。除了IUnknown的方法外,一個IDispatch接口定義了四個方法。第三個和第四個是最有意思的方法:GetIDsOfNames和Invoke。GetIDsOfNames會被客戶端最先調用以得到一個方法名對應的ID。比如,客戶端傳入方法名“GetCourse”後將在返回值中得到其ID 0x60020000。這個方法的標號或者調度ID將會被傳入到IDispath的Invoke方法,以調用GetCourse這個方法。Invoke方法然後就會使用另一個映射表來根據調度ID得到方法入口,這樣這個方法就可以被調用。
你可以想像到這會比自定義接口慢。從方法名獲得其ID,以及通過ID調用方法的這些映射機制是需要花時間的。而且除了這種映射機制,還有數據轉換的過程。Invoke僅接受一個參數,這個參數內包含的參數需要通過轉換才能用來調用目標方法。
圖4-5 調度方法的一個表格http://book.csdn.net/bookfiles/179/img/image008.gif
Dual Interfaces
雙重接口
自定義接口可以提供最佳的性能,而調度接口可以被腳本客戶端調用。為了兩全其美,微軟設計出了雙重接口。雙重接口從IDispatch接口派生,但是添加了一些新的方法到vtable中(見圖4-6)。只知道IDispatch的客戶端可以使用它的GetIDsOfNames和Invoke方法來得到和訪問那些方法指針,但是可以訪問自定義接口的客戶端也可以直接使用它們。
圖4-6 一個雙重接口的列表http://book.csdn.net/bookfiles/179/img/image009.gif
相關詞條
-
java接口
Java接口是一系列方法的聲明,是一些方法特徵的集合,一個接口只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具...
功能 使用 分類 -
接口協定
接口協定(Interface protocol)指的是需要進行信息交換的接口間需要遵從的通信方式和要求。接口協定的種類非常多。接口協定不僅要規定物理層的...
簡介 PS/2接口協定 EPCALE協定 NetBIOS協定 GSM接口協定 -
雙重匯流排
在雙重匯流排結構中,主MPU通過局部匯流排訪問局部M和局部I/O,這時的工作方式與單匯流排情況是一樣的。也經常作為主設備訪問全局M和全局I/O。當其他並列微處...
概念 雙重匯流排錯誤周期 -
面向接口編程
我們在一般實現一個系統的時候,通常是將定義與實現合為一體,不加分離的,我認為最為理想的系統設計規範應是所有的定義與實現分離,儘管這可能對系統中的某些情況有點麻煩。
博文轉載 -
MMCX接口
MMCX接口是一種同軸射頻連線器,遵照歐洲電子元器件委員會22000傳輸規範。 MMCX接口於1990年代研發,採用插入卡緊的連線方式,可以360度旋轉...
簡介 同軸電纜 同軸電纜的套用 射頻 -
雙重宿主主機體系結構
雙重宿主主機體系結構是圍繞具有雙重宿主的主機計算機而構築的提體系。
-
雙重拼接液晶拼接屏
雙重拼接液晶拼接屏,是螢幕的一種類型,主要型號TM-4040;TM-4046;TM-4046-SNB等,能實現M*N最大255個一級單元的有縫大拼接外,...
主要特點 型號類型 樣例 技術參數 顯示功能概述 -
微型計算機原理與接口技術基礎教程
1.2 1.3 1.4
圖書信息 內容簡介 目錄