[erledigt]dlls anderer Prozesse entladen



  • Hi,
    ich hab folgendes Problem:
    Ich habe eine main.exe diese .exe verwendet mehrere dlls, u.a. auch eine update.dll die, wie der Name schon sagt, den Updateprozess enthält.

    Meine Frage ist jetzt, ist es möglich dlls in der update.dll zu entladen die die main.exe geladen hat? Also komplett entladen, so dass ich diese dll austauschen kann.

    Dies sollte dann mit delayLoad funktionieren da ich die dlls statisch einbinde(bzw halt mit delayLoad).

    Vielen Dank.

    Mfg

    Kankomi


  • Mod

    Nein! Das ist IMHO nicht möglich. Durch Delay Load werden die Einsprungadressen gesetzt in einem Thunk. Du kannst zwar evtl. das entladen der DLL erzwingen können durch FreeLibrary, aber Du wirst die Einsprungadressen die ermittelt wurden eben nicht aktualisieren können. Denn alle Einsprungpunkte liegen in der neuen DLL ja mit 100% Sicherheit woanders.

    Das kann nie funktionieren.
    Arbeite mit implizietem Laden, dann geht das.



  • Danke für die Antwort.

    Mit implizierten Laden meinst du alles manuell machen oder? (Also getProcAdr, etc.)


  • Mod

    Exakt.



  • Ich mach mir ne eigene Update.exe und schliesse das Hauptptogramm vor dem updaten, das geht am einfachsten, denn die ganzen Klassen manuell zu laden ist viel zuviel Aufwand.

    Trotzdem danke.


Anmelden zum Antworten