這些函式提供 COM 對應 IUnknown 實作的支援。
| 函式 | 描述 |
|---|---|
| AtlInternalQueryInterface | 委派給 IUnknown 非匯總物件的 。 |
| InlineIsEqualIUnknown | 產生有效率的程式代碼,以便比較介面與 IUnknown。 |
需求
標頭: atlbase.h
AtlInternalQueryInterface
擷取所要求介面的指標。
HRESULT AtlInternalQueryInterface(
void* pThis,
const _ATL_INTMAP_ENTRY* pEntries,
REFIID iid,
void** ppvObject);
參數
pThis
[in]物件的指標,其中包含公開至 QueryInterface之介面的 COM 對應。
pEntries
[in]結構陣列 _ATL_INTMAP_ENTRY ,可存取可用介面的對應。
iid
[in]所要求介面的 GUID。
ppvObject
[out]在 iid 中指定的介面指標指標,如果找不到介面,則為 NULL。
傳回值
其中一個標準 HRESULT 值。
備註
AtlInternalQueryInterface 只處理 COM 對應表格中的介面。 如果您的對象已匯總, AtlInternalQueryInterface 則不會委派給外部未知。 您可以使用巨集 COM_INTERFACE_ENTRY 或其其中一個變體,在 COM 對應數據表中輸入介面。
範例
// MyTimerProc is a callback function passed to SetTimer()
VOID CALLBACK MyTimerProc(HWND /*hwnd*/, UINT /*uMsg*/, UINT /*idEvent*/,
DWORD /*dwTime*/)
{
LPDISPATCH pDisp = NULL;
// gpMyCtrl is a global variable of type CMyCtrl*
// _GetEntries() is a static function you get with BEGIN_COM_MAP()
AtlInternalQueryInterface (gpMyCtrl, CMyCtrl::_GetEntries(), IID_IDispatch,
(LPVOID*)&pDisp);
//...
pDisp->Release ();
}
InlineIsEqualIUnknown
針對的特殊測試 IUnknown案例呼叫此函式。
BOOL InlineIsEqualUnknown(REFGUID rguid1);
參數
rguid1
[in]要與比較的 IID_IUnknownGUID。