5

我已经设法让自己感到困惑,我应该返回E_NOTIMPL还是E_NOINTERFACE从我的 COM 服务器方法中返回。

我有一个有两个函数的类,我从继承的类中重写了这两个函数,因为它们目前不被真正支持,所以我问我应该使用“未实现”还是“无接口”这些函数返回值?

有没有人有一个关于何时使用每个的一般经验法则?

4

3 回答 3

7

如果您未能实现整个接口,那么您QueryInterface可以显式地 return E_NOINTERFACE,这样没有人会尝试调用它的任何方法,或者您可以让所有方法都可以返回E_NOTIMPL(在某些边缘情况下这样做实际上是有意义的)。如果你部分实现了一个接口,那么你根本不应该返回E_NOINTERFACE

于 2012-06-18T23:27:23.867 回答
3

如果一个类没有提供所请求接口的完整实现,则返回 E_NOINTERFACE。如果一个类没有实现接口函数的主体/逻辑,则返回 E_NOTIMPL。

于 2012-06-18T23:26:56.237 回答
3

您确实(正式)实现了接口,所以E_NOINTERFACE不适合您。碰巧你的方法没有有用地实现,所以你应该 return E_NOTIMPL

于 2012-06-19T05:44:52.883 回答