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
.