Existe-t-il un moyen de savoir si deux références d’interface COM pointent vers la même instance?

StackOverflow https://stackoverflow.com/questions/323289

  •  11-07-2019
  •  | 
  •  

Question

Étant donné deux références d'interface obtenues de sources différentes. Existe-t-il un moyen programmatique de savoir si elles sont implémentées par la même instance?

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

MODIFIER: de grandes parties de la question initiale, qui se révélait être un problème indépendant, ont maintenant été déplacées vers une nouvelle question .

Était-ce utile?

La solution

Vous pouvez rechercher l'interface IUnknown et comparer ces pointeurs. Il n'est pas garanti que tous les autres pointeurs d'interface renvoient la même valeur à chaque fois.

à partir de Règles du modèle d'objet de composant :

  

Identité d'objet. 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. Ceci permet d'appeler QueryInterface (IID_IUnknown, ...) sur deux interfaces quelconques 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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top