在C++中,QueryInterface函數主要用于實現COM接口的查詢功能。它通常用于在一個對象中查詢指定的接口是否存在,并獲取該接口的指針。
接口的定義類似于以下形式:
class IInterface{public: virtual HRESULT queryInterface(REFIID riid, void** ppv) = 0; // 其他接口方法...};
其中,queryInterface函數需要傳入一個REFIID參數,表示要查詢的接口的唯一標識符。另外,還需要傳入一個void** ppv參數,表示用于接收查詢到的接口指針的地址。
在類的實現中,queryInterface函數實現如下:
HRESULT MyClass::queryInterface(REFIID riid, void** ppv){ if (riid == IID_IInterface) // IID_IInterface為待查詢接口的唯一標識符 { *ppv = static_cast<IInterface*>(this); AddRef(); // 如果查詢成功,需要增加引用計數 return S_OK; // 返回成功標志 } else { *ppv = nullptr; // 如果查詢失敗,將接口指針置為空 return E_NOINTERFACE; // 返回接口不存在的錯誤代碼 }}
在使用QueryInterface函數時,可以通過類的指針調用該函數,并傳入待查詢接口的唯一標識符和接收接口指針的地址。如果查詢成功,QueryInterface函數會返回S_OK,同時將接口指針賦值給ppv所指向的地址;如果查詢失敗,QueryInterface函數會返回E_NOINTERFACE,并將接口指針置為空。
示例代碼如下:
IInterface* pInterface = nullptr;HRESULT hr = myObject->queryInterface(IID_IInterface, reinterpret_cast<void**>(&pInterface));if (SUCCEEDED(hr)){ // 成功獲取接口指針,可以使用pInterface調用接口方法}else{ // 查詢接口失敗}
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
中國工商銀行怎么查余額?在工行進行余額查詢的方法有哪些?一起隨小編簡單了解下吧!作為宇宙第一大行,中國工商銀行的客戶有很多,如果你辦理中國工商銀行卡想要查余額,可以通過以下幾種途徑:1、網銀查詢登陸個人工商銀行網銀,通過我的賬戶-余額查詢-余額,便可查詢到銀行卡內的余額。2、微信公眾號查詢關注微信公眾號“中國工商銀行電子銀行”,在我的-余額中可查詢,需要提前綁卡。3、中國工...
什么是農業銀行惠農卡?金穗惠農卡和金穗借記卡有什么區別?金穗惠農卡就是中國農業銀行基于金穗借記卡業務平臺開發的,面向廣大農民的綜合性銀行卡產品,惠農卡作為借記卡產品之一, 具備現金存取、轉賬結算、消費、理財等基礎金融功能,可以在線操作,實時核算。金穗惠農卡和金穗借記卡的區別一、性質不同.1、金穗惠農卡金穗惠農卡是中國農業銀行基于金穗借記卡業務平臺研發的,面向全體農戶發行的綜合性銀行卡產品。2、金穗...
一、股票幾點開盤收盤?A股市場有兩個交易所,非別是上交所和深交所,這兩市的開盤收盤時間是一致的。都是每天的上午9:30正式開盤,11:30收盤,午休1個半小時。下午13:00開盤,15:00收盤。每天的9:15至9:25為滬深兩市集合競價時間,下午14:57-15:00為深市集合競價時間。不過股市并不是每天都交易的,周六和周日,以及法定的節假日時間,股市是不交易的。二、股票收盤時間雖然收盤就代表股...