AtlGetObjectSourceInterface
Llame a esta función para recuperar información sobre la interfaz predeterminada del origen de un objeto.
Importante |
---|
Esta función no se puede utilizar en las aplicaciones que se ejecutan en Windows en tiempo de ejecución. |
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor
);
Parámetros
punkObj
[in] Un puntero al objeto para el que la información debe volver.plibid
[out] Un puntero al LIBID de la biblioteca de tipos que contiene la definición de la interfaz de origen.piid
[out] Un puntero al identificador de la interfaz de la interfaz predeterminada del origen de objetos.pdwMajor
[out] Un puntero al número de la biblioteca de tipos que contiene la definición de la interfaz de origen.pdwMinor
[out] Un puntero al número de versión secundaria de la biblioteca de tipos que contiene la definición de la interfaz de origen.
Valor devuelto
Un valor estándar de HRESULT.
Comentarios
AtlGetObjectSourceInterface puede proporcionarle con el identificador de la interfaz de la interfaz predeterminada de origen, junto con el LIBID y números de versión principal y secundaria de la biblioteca de tipos que describen la interfaz.
[!NOTA]
Para que esta función recupere correctamente la información solicitada, el objeto representado por punkObj debe implementar IDispatch (y la información de tipo de valor devuelto con IDispatch:: GetTypeInfo) más debe implementar también IProvideClassInfo2 o IPersist.La información de tipo para la interfaz de origen debe estar en la misma biblioteca de tipos que la información de tipo para IDispatch.
Ejemplo
El ejemplo siguiente muestra cómo se puede definir una clase de receptor de eventos, CEasySink, lo que reduce el número de argumentos de plantilla que se puede pasar a IDispEventImpl el esencial naked.EasyAdvise y EasyUnadvise utilizan AtlGetObjectSourceInterface para inicializar los miembros de IDispEventImpl antes de llamar a DispEventAdvise o DispEventUnadvise.
template <UINT nID, class T>
class CEasySink : public IDispEventImpl<nID, T>
{
public:
HRESULT EasyAdvise(IUnknown* pUnk)
{
AtlGetObjectSourceInterface(pUnk,
&m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum);
return DispEventAdvise(pUnk, &m_iid);
}
HRESULT EasyUnadvise(IUnknown* pUnk)
{
AtlGetObjectSourceInterface(pUnk,
&m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum);
return DispEventUnadvise(pUnk, &m_iid);
}
};
Requisitos
encabezado: atlcom.h