Sdílet prostřednictvím


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.

Viz také

Functions
Makra map COM