2012-06-18 12 views
5

He logrado confundirme si debo devolver E_NOTIMPL o E_NOINTERFACE desde mis métodos de servidor COM.¿Cómo elijo entre E_NOTIMPL y E_NOINTERFACE?

Tengo una clase con dos funciones que he anulado de la clase que heredé, ambas funciones no hacen nada ya que no son realmente compatibles en este momento, entonces pregunto si debería usar "no implementado" o "no implementado" sin interfaz "para estas funciones devolver valores?

¿Alguien tiene una regla general de cuándo usar cada uno?

Respuesta

6

Si no ha podido implementar una interfaz entera, entonces su QueryInterface explícitamente podría volver E_NOINTERFACE, para que nadie intenta llamar a cualquiera de sus métodos, o lo que podría hacer que todos los métodos podría volver E_NOTIMPL (que tiene realmente sentido para hacer esto en algunos casos extremos). Si implementa parcialmente una interfaz, no debe devolver E_NOINTERFACE en absoluto.

3

Si una clase no proporciona una implementación completa de una interfaz solicitada, devuelva E_NOINTERFACE. Si una clase no implementa el cuerpo/lógica de una función de interfaz, entonces devuelva E_NOTIMPL.

2

Usted implementa (formalmente) la interfaz, por lo que E_NOINTERFACE no es para usted. Sucede que tiene métodos no implementados de manera útil, por lo que debe devolver E_NOTIMPL.

Cuestiones relacionadas