Globální funkce mapy modelu COM
Tyto funkce poskytují podporu pro implementace modelu COM Map IUnknown
.
Function | Popis |
---|---|
AtlInternalQueryInterface | Deleguje na IUnknown neagregovaný objekt. |
InlineIsEqualIUnknown | Generuje efektivní kód pro porovnávání rozhraní s IUnknown . |
Požadavky
Hlavička: atlbase.h
AtlInternalQueryInterface
Načte ukazatel na požadované rozhraní.
HRESULT AtlInternalQueryInterface(
void* pThis,
const _ATL_INTMAP_ENTRY* pEntries,
REFIID iid,
void** ppvObject);
Parametry
PThis
[v] Ukazatel na objekt, který obsahuje mapu modelu COM rozhraní vystavených QueryInterface
.
PEntries
[v] Pole _ATL_INTMAP_ENTRY
struktur, které přistupují k mapě dostupných rozhraní.
iid
[v] Identifikátor GUID požadovaného rozhraní.
ppvObject
[ven] Ukazatel na ukazatel rozhraní zadaný v iid nebo NULL, pokud rozhraní není nalezeno.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
AtlInternalQueryInterface
zpracovává pouze rozhraní v tabulce mapování modelu COM. Pokud je objekt agregovaný, AtlInternalQueryInterface
neleguje na vnější neznámý objekt. Rozhraní můžete zadat do tabulky mapování modelu COM s makrem COM_INTERFACE_ENTRY nebo některou z jejích variant.
Příklad
// 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
Volejte tuto funkci pro speciální případ testování pro IUnknown
.
BOOL InlineIsEqualUnknown(REFGUID rguid1);
Parametry
rguid1
[v] Identifikátor GUID pro porovnání s IID_IUnknown
.