2012-06-18 21 views
5

Sono riuscito a confondermi se dovrei restituire E_NOTIMPL o E_NOINTERFACE dai miei metodi del server COM.Come scegliere tra E_NOTIMPL e E_NOINTERFACE?

Ho una classe con due funzioni che ho sovrascritto dalla classe da cui sono stato ereditato, entrambe queste funzioni non fanno nulla poiché non sono realmente supportate al momento, quindi chiedo se dovrei usare "non implementato" o " nessuna interfaccia "per queste funzioni restituiscono valori?

Qualcuno ha una regola generale di quando utilizzare ciascuno?

risposta

6

Se non siete riusciti a implementare una intera interfaccia, allora il vostro QueryInterface potrebbe tornare esplicitamente E_NOINTERFACE, in modo che nessuno tenta di chiamare uno dei suoi metodi, o si può solo fare tutti i metodi potrebbe tornare E_NOTIMPL (lo fa in realtà ha senso per farlo in alcuni casi limite). Se si implementa parzialmente un'interfaccia, non si dovrebbe restituire E_NOINTERFACE affatto.

3

Se una classe non fornisce un'implementazione completa di un'interfaccia richiesta, il ritorno E_NOINTERFACE. Se una classe non implementa il corpo/la logica di una funzione di interfaccia, restituisce E_NOTIMPL.

2

Si esegue (formalmente) l'implementazione dell'interfaccia, quindi E_NOINTERFACE non fa per voi. Accade che i metodi non siano stati implementati in modo utile, pertanto è necessario restituire E_NOTIMPL.

Problemi correlati