2008-11-27 25 views
2

Étant donné deux références d'interface obtenues à partir de différentes sources. Existe-t-il une manière programmatique de dire si elles sont implémentées par la même instance?Est-il possible de dire si deux références d'interface COM pointent sur la même instance?

Une vérification d'égalité simple des références d'interface échoue toujours.


EDIT: Une grande partie de la question initiale, qui se est avéré être un problème indépendant ont été déplacés à a new question.

Répondre

8

Vous pouvez effectuer une requête pour l'interface IUnknown et comparer ces pointeurs. Tous les autres pointeurs d'interface ne sont pas garantis de renvoyer la même valeur à chaque fois.

de The Rules of the Component Object Model:

identité de l'objet. Il est requis que tout appel à QueryInterface sur une interface pour une instance d'objet donnée pour l'interface spécifique IUnknown doit toujours renvoyer la même valeur de pointeur physique. Cela permet d'appeler QueryInterface (IID_IUnknown, ...) sur deux interfaces et de comparer les résultats pour déterminer s'ils pointent vers la même instance d'un objet (la même identité d'objet COM).