Nee, es geht einfach darum rauszufinden was darin ist ... man kann schlecht prüfen ob es sich um eine Referenz auf eine Prozedur, auf eine Methode, eine Klassenmethode oder eine anonyme Methode handelt und wenn, auf welche gezeigt wird
und dementsprechend kann man diese referenzen auch nicht direkt vergleichen. (außer man hat zwei gleiche Referenzen, aber eben nicht "zeigt Referenz auf meine Methode?")
Schade ist aber, daß
- dieses Interface wirklich nur 4 Funktionen, bzw. eine Funktion exportiert ... die Call-Methode, _AddRef, _Release, QueryInterface
(hätte ja sein können, daß es da noch geheime "Vergleichs-/Prüffunktionen" gibt)
- daß zu dem Interface zwar eine TypeInfo zu finden ist, aber dort nur deklariert ist, daß es keine näheren Infos (
RTTI) zu den Methoden gibt, also weder Name noch Parameterliste (aber das läßt sich halbwegs leicht rausfinden)
Delphi-Quellcode:
methCnt := ReadU16(P); // 4 = 3 des Vorfahren + 1 Eigene
hasRtti := ReadU16(P); // $FFFF = hab nix weiter
- und das Objekt innerhalb dieses Interfaces besitzt nur ein Feld, das ebefalls nicht in der
RTTI aufgelistet wird und welches (vermutlich) ein Pointer ist ... aber was genau in dem Pointer liegt, bleibt ebenfalls geheim und man kann nur Vermutungen anstellen.
Genauere Infos wären schon schön gewesen.
- Zu dem Objekt in dem Interface gibt es zwar eine kleine
RTTI, aber dort fehlen viele Dinge, das Feld wird nicht erwähnt und auch nicht die Call-Methode, bzw. ob es weitere Methoden gibt.
Nja, von den Call-Methoden gibt es drei Arten ... da müßte man jetzt analysieren was die machen.
Darüber hatte wohl jemand schonmal rausgefunden, wie man den Methodenzeiger wieder extrahiert (wenn man genau weiß, daß eine Methode ist in der Referenz steckt).