Funções globais de mapa COM
Essas funções são compatíveis com as implementações de IUnknown
de mapa COM.
Função | Descrição |
---|---|
AtlInternalQueryInterface | Delega para o IUnknown de um objeto não agregado. |
InlineIsEqualIUnknown | Gera um código eficiente para comparar interfaces com IUnknown . |
Requisitos
Cabeçalho: atlbase.h
AtlInternalQueryInterface
Recupera um ponteiro para a interface solicitada.
HRESULT AtlInternalQueryInterface(
void* pThis,
const _ATL_INTMAP_ENTRY* pEntries,
REFIID iid,
void** ppvObject);
Parâmetros
pThis
[in] Um ponteiro para o objeto que contém o mapa COM de interfaces expostas a QueryInterface
.
pEntries
[in] Uma matriz de estruturas _ATL_INTMAP_ENTRY
que acessa um mapa de interfaces disponíveis.
iid
[in] O GUID da interface que está sendo solicitado.
ppvObject
[out] Um ponteiro para o ponteiro de interface especificado em iid ou NULL se a interface não for encontrada.
Valor de retorno
Um dos valores HRESULT padrão.
Comentários
AtlInternalQueryInterface
somente lida com interfaces na tabela de mapa COM. Se o objeto for agregado, AtlInternalQueryInterface
não delegará ao desconhecido externo. Você pode inserir interfaces na tabela de mapa COM com a macro COM_INTERFACE_ENTRY ou uma de suas variantes.
Exemplo
// 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
Chame essa função especialmente para teste de IUnknown
.
BOOL InlineIsEqualUnknown(REFGUID rguid1);
Parâmetros
rguid1
[in] O GUID a ser comparado a IID_IUnknown
.