亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ COM編程之QueryInterface函數(二)

2020-05-23 14:21:01
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++ COM編程之QueryInterface函數(二),本文是第二篇,第一篇請參閱相關文檔,需要的朋友可以參考下
 
 

前言

COM編程——認識組件中也總結了,COM是一個說明如何建立可動態互變組件的規范,它提供了為保證能夠互操作,客戶和組件應遵循的一些標準。而在實現和使用QueryInterface時,就需要去遵守一些規則,只有遵守了這些規則,才能是一個正確的COM組件;只有了解了這些規則,才能會真正的了解COM開發。

QueryInterface的實現規則

實現QueryInterface需要遵從以下五條規則:

1.QueryInterface總是返回同一IUnknown指針

組件的實例只有一個IUnknown接口。因為當查詢組件實例的IUnknown接口時,不論通過哪個接口,所得到的均將是同一指針值。為確定兩個接口是否指向同一個組件,可以通過這兩個接口查詢IUnknown接口,然后將返回值進行比較。

這條規則是非常重要的,如果QueryInterface的實現不遵循這條規則的話,則將沒法決定兩個接口是否指向同一組件;

2.如果客戶曾經獲取過某個接口,那么它將總能獲得該接口

這條規則限定了對于一個組件實例,它的QueryInterface的不變性;你可以想象,如果組件實例的接口集不是固定的,客戶將無法通過編程的方法來決定一個組件到底具有一些什么樣的功能;客戶就會對你的COM組件失去耐心,你的COM組件都沒有人去使用了,這還有什么意義。

3.客戶可以再次獲取已經擁有的接口

如果客戶擁有一個IX接口,則可以通過它來再次查詢IX接口指針,并且一定可以成功的。通過自己查詢自己,聽起來多少有點奇怪,但是這是必須可以的。

4.客戶可以從任何接口返回到起始接口

如果客戶擁有一個IX接口指針,并成功地使用它來查詢了一個IY接口,那么它將可以使用這個IY接口來查詢一個IX接口,這條規則在實際的項目開發時很有用。

5.如果能夠從某接口獲取某特定接口,則從任意接口都將能獲取此接口

如果能夠從某個組件獲取某特定接口,那么客戶將可以通過此組件所支持的任意接口獲取此接口。例如:如果可以通過接口IX得到接口IY,通過IY可以得到IZ,那么通過IX也將可以得到IZ。這條規則使得QueryInterface是可用的。

綜上所有規則,其內在的重點在于不管組件實現了多少個接口,組件都只實現了一個QueryInterface,所以,在所有的接口的vtbl中,對應的QueryInterface都是組件實現的QueryInterface的地址,所有接口指針調用QueryInterface進行查詢時,都是調用的同一個QueryInterface,所以,這就滿足了上述的規則。大家在閱讀上面的這些規則時,難免會有些無所謂的感覺,覺得都是文字,很枯燥,我開始的時候也是這樣的;就是因為如此,在實際的開發中,吃過不少的苦頭,所以,今天又在這里把這些規則重新的整理一遍,希望大家不要在實際的項目中栽了跟頭再回來尋找原因,何不防范于未然呢?

添加新的接口

以前的博文也總結過了,COM中接口是不會發生變化的。當組件發布一個接口并被某個客戶使用之后,此接口將決不會發生任何變化,而將永遠保持不變。這里說的不變,具體是什么意思呢?由于每一個接口都有一個唯一對應的接口標識符IID。一般情況下,我們不會改變接口,而可以建立一個新接口并為之指定一個新的IID。當QueryInterface接收到對老的IID的查詢時,它將返回老的接口;而當它收到對新的IID的查詢時,它將返回新的接口。對于QueryInterface而言,一個IID就是一個接口。

所以同某個IID相應的接口將絕不會發生變化。新接口可以繼承老的接口,它也可以同老接口完全不同。由于老的接口仍然保持不變,已有客戶的運行將不會受到任何影響。而新客戶則可以自行決定是使用老接口還是新接口,因它可以自由決定到底是查詢哪個接口。

新接口命名

雖然每個人的命名規則,每個公司命名規則都是要求不同的,但是對于COM接口的命名大體上都是一致的,例如:原來的接口名為IX,則新的接口名為IX2,而不是IXEx之類的。我經歷了這么多的項目,寫過、也調用過很多的COM組件,基本都是遵循的這個規則,即在老名稱的后面加上一個數字。

總結

這篇文章總結的是理論,讓那些不喜歡理論的人會有點失望。但是,道理就是那樣的,沒有理論作為基礎的實踐,都是亂搞。做什么事情,都要有一定的理論基礎,所以,我通過了兩篇博文,對QueryInterface進行詳細的總結。希望對大家有一定的幫助,最后,也希望大家提出你的想法和我分享。我堅信,交流是一種非常給力的學習方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区久久久| 国产精品av在线播放| 欧日韩不卡在线视频| 热门国产精品亚洲第一区在线| 色哟哟入口国产精品| 狠狠色香婷婷久久亚洲精品| 欧美日韩日本国产| 日韩欧美亚洲成人| 国产主播在线一区| 中文字幕精品一区久久久久| 日韩免费av在线| 国产999精品视频| 黑人狂躁日本妞一区二区三区| 国产99久久精品一区二区| 永久免费精品影视网站| 国产视频亚洲视频| 国产精品男人爽免费视频1| 国产精品天天狠天天看| 丝袜一区二区三区| 97在线免费观看视频| 亚洲二区中文字幕| 亚洲日本欧美中文幕| 亚洲人高潮女人毛茸茸| 日韩高清免费观看| 亚洲精品第一国产综合精品| 久久这里有精品视频| 国产精品jizz在线观看麻豆| 中文字幕一区二区精品| 亚洲国产欧美在线成人app| 亚洲国产成人精品久久久国产成人一区| 中文字幕不卡在线视频极品| 久久成年人免费电影| 91在线观看免费网站| 亚洲国产三级网| 亚洲精品欧美极品| 大胆欧美人体视频| 精品国产91乱高清在线观看| 亚洲精品免费av| 国产精品高潮呻吟视频| 亚洲视频在线免费看| 国产视频精品一区二区三区| 亚洲国产欧美精品| 久久网福利资源网站| 久久精品国产一区二区电影| 91在线高清免费观看| 久久久久久久一区二区| 久久久久久这里只有精品| 欧美最顶级丰满的aⅴ艳星| 中文字幕在线看视频国产欧美在线看完整| 亚洲精品99999| 国产人妖伪娘一区91| 亚洲欧美日韩视频一区| 日韩av影片在线观看| 国产精品电影网| 成人做爰www免费看视频网站| 日韩欧美亚洲国产一区| 欧美另类69精品久久久久9999| 亚洲精品久久久久久下一站| 久热在线中文字幕色999舞| 久久精品视频在线观看| 丝袜情趣国产精品| 国产在线精品成人一区二区三区| 国产91在线视频| 亚洲xxx视频| 中文字幕日韩欧美在线| 久久人人97超碰精品888| 国模吧一区二区| 国模精品视频一区二区| 亚洲欧洲偷拍精品| 欧美激情视频给我| yellow中文字幕久久| 欧美专区在线视频| 国产精品夜间视频香蕉| 亚洲欧美在线免费观看| 亚洲精品91美女久久久久久久| 久久综合伊人77777蜜臀| 日韩av综合中文字幕| 一区二区三区美女xx视频| 久久免费精品日本久久中文字幕| 亚洲三级黄色在线观看| 欧美性生活大片免费观看网址| 国产亚洲一区二区精品| 国产成人精品网站| 日韩av一卡二卡| 亚洲黄色www| 欧美日韩在线免费| 热99精品里视频精品| 欧美黑人极品猛少妇色xxxxx| 欧美精品在线免费| 亚洲国产一区二区三区在线观看| 欧美激情视频三区| 午夜精品福利电影| 国产最新精品视频| 欧洲一区二区视频| 91超碰caoporn97人人| 国产一区二区三区在线| 欧美激情图片区| 久久99国产综合精品女同| 久久天天躁夜夜躁狠狠躁2022| 中文字幕av一区二区三区谷原希美| 久久亚洲电影天堂| 欧美精品一区三区| 国产精品视频色| 亚洲一区二区久久久| 欧美日韩在线另类| 国产精品丝袜久久久久久高清| 亚洲精品suv精品一区二区| 欧美极品少妇全裸体| 国产成人拍精品视频午夜网站| 久久久中精品2020中文| 在线视频日韩精品| 国产精品免费福利| 日韩av观看网址| 亚洲一级一级97网| 欧美性猛交99久久久久99按摩| 欧美在线视频一区| 亚洲欧美国产一区二区三区| 国产精品久久久久福利| 欧美又大粗又爽又黄大片视频| 欧美大片网站在线观看| 91丝袜美腿美女视频网站| 久久99久久99精品中文字幕| 欧美专区在线观看| 亚洲热线99精品视频| 欧美电影免费在线观看| 亚洲精品乱码久久久久久按摩观| 一区二区欧美在线| 在线成人激情视频| 亚洲欧美精品一区二区| 日韩激情在线视频| 欧美精品在线免费播放| 日本中文字幕不卡免费| 国产99久久精品一区二区 夜夜躁日日躁| 中文字幕在线精品| 91精品国产乱码久久久久久蜜臀| 7777精品久久久久久| 亚洲欧美一区二区三区四区| 丁香五六月婷婷久久激情| 国产玖玖精品视频| 欧美日韩中文字幕综合视频| 理论片在线不卡免费观看| 亚洲综合第一页| www.午夜精品| 久久成人国产精品| 国产精品成人在线| 韩国欧美亚洲国产| 国产精品va在线| 亚洲国产天堂久久综合| 国产精品欧美久久久| 欧美性少妇18aaaa视频| 国内精品中文字幕| 国产精品久久久久免费a∨大胸| 欧美一级成年大片在线观看| 97香蕉超级碰碰久久免费软件| 久久精品99久久久香蕉| 日韩精品小视频| 欧美日韩一区二区免费视频| 欧美激情国产精品| 亚洲一区二区三区久久| 91爱视频在线| 91久久精品在线| 欧美交受高潮1| 欧美日韩日本国产| 亚洲精品小视频在线观看|