Implémentation de CComObjectRootEx
CComObjectRootEx est essentiel ; tous les objets ATL doivent avoir une instance ou CComObjectRootEx
CComObjectRoot dans leur héritage. CComObjectRootEx
fournit le mécanisme QueryInterface
par défaut en fonction des entrées de la mappe COM.
Via sa mappe COM, les interfaces d'un objet sont exposées à un client quand celui-ci émet une requête pour une interface. La requête est effectuée via CComObjectRootEx::InternalQueryInterface
. InternalQueryInterface
gère seulement des interfaces dans le tableau de mappage COM.
Vous pouvez entrer des interfaces dans la table de mappage COM avec la macro COM_INTERFACE_ENTRY ou l’une de ses variantes. Par exemple, le code suivant entre les interfaces IDispatch
, IBeeper
et ISupportErrorInfo
dans le tableau de mappage COM :
BEGIN_COM_MAP(CBeeper)
COM_INTERFACE_ENTRY(IBeeper)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()