是否可以为使用ATL的类提供QueryInterface的实现?

BEGIN_COM_MAP(CConcrete) // Defines _InternalQueryInterface
  COM_INTERFACE_ENTRY(IInterface)
END_COM_MAP() // Defines QueryInterface as a pure virtual function which
              // is overridden in CComObject<CConcrete>

我出于模拟目的而重写,允许用户模拟QueryInterface故障。当我未明确配置时,我想保留默认的ATL QueryInterface功能。

调用堆栈如下所示:
CComObjectRootBase::InternalQueryInterface
CConcrete::_InternalQueryInterface // BEGIN_COM_MAP
CComObject<CConcrete>::QueryInterface // Override of QI from END_COM_MAP

最佳答案

我最终要做的是创建一个不包含BEGIN_COM_MAP实现的新版本_InternalQueryInterface。然后,我将模拟代码放入其中,并将未模拟的调用转发到InternalQueryInterface

09-12 11:32