我已经设法让自己感到困惑,我应该返回E_NOTIMPL
还是E_NOINTERFACE
从我的 COM 服务器方法中返回。
我有一个有两个函数的类,我从继承的类中重写了这两个函数,因为它们目前不被真正支持,所以我问我应该使用“未实现”还是“无接口”这些函数返回值?
有没有人有一个关于何时使用每个的一般经验法则?
如果您未能实现整个接口,那么您QueryInterface
可以显式地 return E_NOINTERFACE
,这样没有人会尝试调用它的任何方法,或者您可以让所有方法都可以返回E_NOTIMPL
(在某些边缘情况下这样做实际上是有意义的)。如果你部分实现了一个接口,那么你根本不应该返回E_NOINTERFACE
。
如果一个类没有提供所请求接口的完整实现,则返回 E_NOINTERFACE。如果一个类没有实现接口函数的主体/逻辑,则返回 E_NOTIMPL。
您确实(正式)实现了接口,所以E_NOINTERFACE
不适合您。碰巧你的方法没有有用地实现,所以你应该 return E_NOTIMPL
。