Assembly.GetTypes für unmanaged DLLs?



  • Gibt es eine mit Assembly.GetTypes() vergleichebare Funktion, die mir alle Klassen/Funktionen aus einer unmanaged DLL liefert?
    Ich habe bis jetzt nur LoadLibrary und GetProcAdress gefunden, um unmanaged Dlls dynamisch zu laden, aber keine Möglichkeit, die Namen aller Funktionen aus einer Dll zu kriegen.
    Falls es keine fertige Funktion gibt (was ich mal annehme), was wäre der beste Weg, an dieses Problem heranzugehen?
    Ist dies überhaupt möglich ohne die .lib-Datei, nur mit der .dll?

    Um vielleicht noch einmal zu versuchen, klarheit zu schaffen: Ich möchte die Funktionsnamen der exportierten Funktionen einer DLL geliefert kriegen. Die Funktionsnamen, die ich GetProcAdress übergeben muss, damit ich die Adresse kriege.

    mfg Argus Magnus



  • Argus Magnus schrieb:

    Gibt es eine mit Assembly.GetTypes() vergleichebare Funktion, die mir alle Klassen/Funktionen aus einer unmanaged DLL liefert?

    Nein, da es kein standardisiertes Object Model für unmanaged DLLs gibt, und auch keinen standardisierten Reflection-Mechanismus.

    Ich möchte die Funktionsnamen der exportierten Funktionen einer DLL geliefert kriegen

    Das sollte noch relativ einfach gehen, denn die stehen in der DLL drinnen (vorausgesetzt die DLL exportiert überhaupt Namen, was sie nicht muss, können auch nur Ordinals sein).
    Würde mal sagen: export Table durchklauben. Wie der aussieht und wo der zu finden ist sollte sich relativ leicht ergoogeln lassen. Stichworte "PE Image Export Table"



  • Für klassische "unmanaged" DLLs gibt es den DependencyWalker: http://dependencywalker.com/
    Damit kannst du dir alle Funktionen anschauen, die Anzahl und Typen der Parameter kann man jedoch nicht ohne weiteres rausfinden...



  • danke für die Antworten. Ich bin gerade dabei, Export Tables auszulesen (ich versuche es). Ich habe keinerlei Erfahrung auf diesem Gebiet, aber ich denke, dass sollte klappen 🙂


Anmelden zum Antworten