Gibt es eine Möglichkeit zu sagen, ob zwei COM-Schnittstelle Referenzen in der gleichen Instanz verweisen?

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

  •  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 .

War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top