get function offset (class)



  • hallo,

    seit ein paar Stunden Frage ich mich, wie ich an das Offset einer Member-Function gelange.
    An der Address &ClassName::MemberFunction steht ja mov eax,ecx; JMP dword ptr ds:[eax+OFFSET];
    das bedeutet DWORD* pOffset = &ClassName::MemberFunction + 4
    Jedoch kann ich &ClassName::Memberfunction nicht als dword casten bzw. als pointer (zumindest weis ich nicht wie 😞

    Beispiel Compiler Error:
    HRESULT (__stdcall ClassName::* )(params und so)' kann nicht in 'DWORD'

    Habt ihr eine Idee, wie man diesen Fehler beheben kann?



  • Die Frage ist: WARUM Du das wissen willst?
    Es lässt sich vermutlich eine einfachere Lösung finden... je nach Konstelation kann der Compiler bis zu 16 Bytes benötigen um den korrekten Offset zu ermitteln... das ganze ist auch noch Compiler-Spezifisch... somit bringt es Dir nicht wirklich was, wenn Du es für Copmpiler Version x, SP y weisst... es kann sich im nächsten SP wieder ändern....

    I.d.R. lässt sich Dein Vorhaben vermutlich mit templates einfach lösen...

    Poste doch mal Dein eigentliches Problem...

    Siehe dazu auch mal:
    http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible


Anmelden zum Antworten