Глобальные функции сопоставления 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
с .