ATL原始碼學習3 介面的查詢支援

2021-05-05 20:37:05 字數 764 閱讀 9846

1.    atl的queryinte***ce呼叫追蹤

a. 元件的queryinte***ce函式定義

b. _internalqueryinte***ce函式呼叫internalqueryinte***ce函式,定義在begin_com_map巨集內部

#define begin_com_map(x) public: /

typedef x _commapclass; /

static hresult winapi _cache(void* pv, refiid iid, void** ppvobject, dword_ptr dw) throw()/

/__finally /

/return hres;/

}/iunknown* _getrawunknown() throw() /

/_atl_declare_get_unknown(x)/

hresult _internalqueryinte***ce(refiid iid, void** ppvobject) throw() /

/const static atl::_atl_intmap_entry* winapi _getentries() throw() ,

#define com_inte***ce_entry_func_blind(dw, func)/

,這兩個巨集其實是atl的queryinte***ce實現的通用後門,使用者可以自定義func,在func函式中暴露com介面,但需要遵守com實體身份規則。

Linux網路介面的原始碼分析

二.網路介面程式的結構五.網路協議部分 協議層是真正實現是在這一層。在linux include linux socket.h裡面,linux的bsd socket 定義了多至32支援的協議族,其中pf inet就是我們最熟悉的tcp ip協議族 ipv4,以下沒有特別宣告都指ipv4 以這個協議族...

原始碼 callable介面的底層實現

在使用執行緒池的時候,我們需要使用到callable介面,那我們來看一下calllable的底層是怎麼實現,並且有返回值的。首先我們看一下呼叫。threadpoolexcutor並沒有實現 submit 方法,那麼肯定是它的父類實現的。如願以償在abstractexecutorservice中找到了...

C 學習筆記(七) 介面的執行

一 介面的基本概念 介面的定義方式與模擬較相似。inte ce imyinte ce 介面成員的定義與類成員的定義之間的區別 1 不允許使用訪問修飾符 public private protected 或internal 所有的介面成員都是公共的。2 介面成員不能包含 體。3 介面不能定義域成員 屬...