真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

DCOM(分布式組件對象模型)原理淺析(二)-創(chuàng)新互聯(lián)

今天我們來分析QueryInterface函數(shù)。

為陽原等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及陽原網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、陽原網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

 DCOM(分布式組件對象模型)原理淺析(二)

HRESULT CDictionary::QueryInterface(const IID& iid, void **ppv)
{
	if(iid == IID_IUnknown)
	{
		*ppv = (IDictionary*)this;
		((IDictionary*)(*ppv))->AddRef();		
	}elseif(iid == IID_Dictionary)
	{
		*ppv = (IDictionary*)this;
		((IDictionary*)(*ppv))->AddRef();
	}elseif(iid == IID_SpellCheck)
	{
		*ppv = (ISpellCheck*)this;
		((ISpellCheck*)(*ppv))->AddRef();
	}
	else
	{
		*ppv = NULL;
		return E_NOINTERFACE;
	}
	
	return S_OK;	
}

根據(jù)COM接口的內(nèi)存接口以及C++語言中類多重繼承的內(nèi)存結(jié)構(gòu),我們實現(xiàn)QueryInterface函數(shù)。

QueryInterface函數(shù)對于iid的三種可能值分別進行了處理,不管客戶要想查詢字典對象所支持的哪個接口,QueryInterface都會返回相應(yīng)的接口指針,如圖,當(dāng)我們將this指針轉(zhuǎn)換為基類指針時,所得到的指針正好指向接口的vtable,所以我們用類型轉(zhuǎn)換函數(shù)就可以得到每個接口的vtable,也就是接口指針。

在第一個if語句塊中,我們并沒有把this指針直接轉(zhuǎn)換為IUnknown指針,根據(jù)C++語法,由于在CDictionary的基類樹中,有兩個IUnknown節(jié)點,因此直接把this指針轉(zhuǎn)換成IUnknown指針存在二義性。

先把this指針轉(zhuǎn)換成IDictionary或者ISpellCheck,再轉(zhuǎn)換成IUnknown,但必須保證每次查到的IUnknown接口完全一致。

這個程序直接把IDictionary接口指針當(dāng)做IUnknown接口指針,這樣的轉(zhuǎn)換是符合COM規(guī)范的。

根據(jù)CDictionary的基類樹,這里的繼承關(guān)系不能用虛擬繼承,否則就不能保證IDictionary和ISpellCheck的vtable與COM接口的vtable的一致性。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文題目:DCOM(分布式組件對象模型)原理淺析(二)-創(chuàng)新互聯(lián)
URL分享:http://weahome.cn/article/pjhpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部