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