Ich arbeite an nativen Anrufbindungen für eine virtuelle Maschine, und eine der Funktionen besteht darin, Standard-libc-Funktionen zur Laufzeit nach Namen suchen zu können. Unter Windows wird das ein wenig mühsam, weil ich ein Handle auf das msvcrt-Modul bekommen muss, das gerade in den Prozess geladen wird. Normalerweise ist dies msvcrt.dll, aber es könnte auch andere Varianten geben (msvcr100.dll, etc) und ein Aufruf von GetModuleHandle ("msvcrt") könnte fehlschlagen, wenn eine Variante mit einem anderen Namen verwendet wird.
Was ich gerne tun könnte, ist eine umgekehrte Suche, nimm einen Funktionszeiger von libc (den ich im Überfluss habe) und erhalte eine Handhabe für das Modul, das es bereitstellt. Grundsätzlich so etwas wie:
%Vor%Gibt es in der Win32-API so etwas, ohne in einen manuellen Prozessschritt und Symboltabellen zu gehen? Umgekehrt, wenn ich das Problem überdenke, gibt es einen einfacheren Weg, eine libc-Funktion anhand des Namens auf win32 nachzuschlagen?
Der dokumentierte Weg, das Modul-Handle zu erhalten, besteht darin, GetModuleHandleEx .
%Vor%