Gibt es eine Möglichkeit zu sagen, ob zwei COM-Schnittstelle Referenzen in der gleichen Instanz verweisen?
-
11-07-2019 - |
Frage
Bei zwei Interface-Referenzen aus verschiedenen Quellen erhalten. Gibt es eine programmatische Möglichkeit zu sagen, ob sie von der gleichen Instanz implementiert werden?
Eine einfache Gleichheitsprüfung der Schnittstelle Referenzen immer versagt.
EDIT: Große Teile der ursprünglichen Frage, die nun verschoben wurden ein unabhängiges Problem entpuppte eine neue Frage .
Lösung
Sie können für die IUnknown-Schnittstelle abzufragen und diese Zeiger vergleichen. Alle anderen Schnittstellenzeiger sind nicht garantiert den gleichen Wert jedes Mal zurück.
Die Regeln des Component Object Model :
Objektidentität. Es ist erforderlich, dass jeder Aufruf an Query-Interface auf jeder Schnittstelle für eine bestimmte Objektinstanz für das jeweilige Schnittstelle IUnknown muss immer den gleichen physikalischen Zeigerwert zurück. Dies ermöglicht Aufruf Query-Interface (IID_IUnknown, ...) auf zwei beliebigen Schnittstellen und die Ergebnisse zu vergleichen, um zu bestimmen, ob sie auf die gleiche Instanz eines Objekts zeigen (die gleiche COM Objektidentität).