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