Поделиться через


Глобальные функции сопоставления COM

Эти функции обеспечивают поддержку реализаций COM Map IUnknown .

Function Description
AtlInternalQueryInterface Делегирует IUnknown негрегатный объект.
InlineIsEqualIUnknown Создает эффективный код для сравнения интерфейсов с IUnknown.

Требования

Заголовок: atlbase.h

AtlInternalQueryInterface

Извлекает указатель на запрошенный интерфейс.

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

Параметры

pThis
[in] Указатель на объект, содержащий com-карту интерфейсов, предоставляемых QueryInterface.

PEntries
[in] Массив _ATL_INTMAP_ENTRY структур, обращаюющихся к карте доступных интерфейсов.

Iid
[in] Идентификатор GUID запрашиваемого интерфейса.

ppvObject
[out] Указатель на указатель интерфейса, указанный в iid или NULL, если интерфейс не найден.

Возвращаемое значение

Одно из стандартных значений HRESULT.

Замечания

AtlInternalQueryInterface обрабатывает интерфейсы только в таблице сопоставлений COM. Если объект агрегирован, AtlInternalQueryInterface не делегирует внешнему неизвестному объекту. Интерфейсы можно ввести в таблицу карты COM с помощью макроса COM_INTERFACE_ENTRY или одного из его вариантов.

Пример

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

Вызовите эту функцию для специального случая тестирования IUnknown.

BOOL InlineIsEqualUnknown(REFGUID rguid1);

Параметры

rguid1
[in] GUID для сравнения IID_IUnknownс .

См. также

Функции
Макросы сопоставления COM