基本信息
客戶同組件的互動都是通過一個接口完成的。在客戶查詢組件的其他接口時,也是通過接口完成的。這個接口就是IUnknown。所有的COM接口都繼承了IUnknown,每個接口的vtbl中的前三個函式都是QueryInterface、AddRef、Release。這樣所有COM接口都可以被當成IUnknown接口來處理。
函式功能
System Interface IUnknown下的一個成員函式,客戶可以通過此函式來查詢某個組件是否支持某個特定的接口。若支持QueryInterface將返回一個指向這些接口的指針,不支持返回值將是一個失敗結果。
函式原型
HRESULT QueryInterface( REFIID iid, void** ppvObject);
參數:
iid
[in] 指明需要查詢的接口的IID.
ppvObject
[out] 按第一個參數查詢後得到的接口指針,該指針指向了這個接口的虛函式表,而在這個虛函式表中存放的就是該接口中函式的指針
示例:
void demo(IUnknown* pI)
{
// 定義一個接口指針
IM* pIM = NULL;
// 查詢接口IM
HRESULThr = pI->QueryInterface(IID_IM, (void**)&pIM);
if (SUCCEEDED(hr))
{
// 通過接口調用函式
pIM->Run();
}
}