Wenn ich eine Methode auf einer COM-Schnittstelle aufrufen, die eine andere Schnittstelle zurückgibt, ist die PunkVal jedes Mal anders.Warum gibt die COM-Schnittstelle unterschiedliche Werte für dieselbe Aufrufmethode zurück?
Aber wenn ich die alten PunkVal verwenden, um diese Schnittstellenmethoden aufzurufen, funktioniert es auch. Es sieht so aus, als würden viele unnötige Objekte (oder wahrscheinlich Zeiger auf Objekte) erzeugt, aber ich brauche irgendwie, um festzustellen, ob die zurückgegebene Schnittstelle eindeutig ist. Alles, was ich weiß, ist, dass ich eine Schnittstelle (PunkVal) zurückgebe, und der Wert ist in jeder Instanz unterschiedlich. Der Wert, auf den dieser Wert zeigt, ist immer derselbe, aber ich denke, weil er auf die vtable oder etwas verweist, scheint das keine zuverlässige Überprüfung zu sein. Das oder sogar scheinbar getrennte Schnittstellen sind alle die gleiche Schnittstelle.
Um klar sein:
someCOMInterface foo();
ich auf foo aufrufen rufen und erwarten punkVal someCOMInterface zu sein, die ich auf Abfrage später muss es Methoden aufrufen aufrufen verwenden. Aber jedes Mal, wenn ich den ersten Aufruf aufruft, bekomme ich ein anderes someCOMInterface (das "gleiche" aber "anders" in dem der Wert, der von invoke zurückgegeben wird).