Udostępnij za pośrednictwem


Funkcje globalne mapy interfejsu COM

Te funkcje zapewniają obsługę implementacji map IUnknown COM.

Function opis
AtlInternalQueryInterface Delegaty do IUnknown obiektu nieagregowanego.
InlineIsEqualIUnknown Generuje wydajny kod do porównywania interfejsów z IUnknown.

Wymagania

Nagłówek: atlbase.h

AtlInternalQueryInterface

Pobiera wskaźnik do żądanego interfejsu.

HRESULT AtlInternalQueryInterface(
    void* pThis,
    const _ATL_INTMAP_ENTRY* pEntries,
    REFIID iid,
    void** ppvObject);

Parametry

pThis
[in] Wskaźnik do obiektu, który zawiera mapę COM interfejsów uwidocznionych na QueryInterface.

PEntries
[in] Tablica _ATL_INTMAP_ENTRY struktur, które uzyskują dostęp do mapy dostępnych interfejsów.

identyfikator iid
[in] Identyfikator GUID żądanego interfejsu.

ppvObject
[out] Wskaźnik do wskaźnika interfejsu określony w identyfikatorze iid lub null, jeśli interfejs nie zostanie znaleziony.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

AtlInternalQueryInterface obsługuje tylko interfejsy w tabeli mapy COM. Jeśli obiekt jest agregowany, AtlInternalQueryInterface nie deleguje do zewnętrznej nieznanej. Interfejsy można wprowadzać do tabeli mapy COM przy użyciu makra COM_INTERFACE_ENTRY lub jednego z jego wariantów.

Przykład

// 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

Wywołaj tę funkcję, aby uzyskać specjalny przypadek testowania dla elementu IUnknown.

BOOL InlineIsEqualUnknown(REFGUID rguid1);

Parametry

rguid1
[in] Identyfikator GUID do porównania z IID_IUnknown.

Zobacz też

Funkcje
Makra mapy modelu COM