AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Reihenfolge vom Laden von Modulen

Ein Thema von freimatz · begonnen am 23. Jul 2024 · letzter Beitrag vom 24. Jul 2024
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.588 Beiträge
 
Delphi 12 Athens
 
#2

AW: Reihenfolge vom Laden von Modulen

  Alt 23. Jul 2024, 16:26
tdump gibt nur die statischen Imports und vielleicht auch DelayedImports an, von dem einen Modul (EXE).
Du mußt also auch noch alle deine DLLs und BPLs durchgehn.
Und dann auch noch die Hooks im Windows, wo dir auch noch was untergeschoben werden kann. (Maustreiber, Teamviewer, Acrobat, ...)



erstmal "Zufall",

aber grundsätzlich ist es so, dass bei deiner EXE, vor dem eigentlichen Start, die ImportListe durchgegangen wird und dort wird einfach der Liste nach alles geladen (von oben nach unten), beim Laden der einzelnen DLL/BPL dann wiederum (vorher) das, was sie lädt usw.

Die Liste(n) entsteht, beim Linken/Kompilieren, in welcher Reihenfolge es dort eingebunden wurde. (Delphi sortiert da nichts)


Dann vielleicht noch DelayedLoading, was erst beim ersten Aufruf eines Imports geladen wird,
und natürlich das dynamische Laden (LoadLibrary/LoadPackage), was irgendwo mitten in der Ausführung (im Intitialisazionscode oder später im Code) geladen wird.




Ist ähnlich, wie mit deinen Units.
Es geht erst in der DPR/DPK die Liste durch, dann das USES im Interface-Abschnitt der PAS ... da beides in der Reihenfolge der Deklaration
und zum Schluß auch noch das USES im Implementations-Teil ... dort kann Delphi sich frei entscheiden, in welcher Reihenfolge (für dich also zufällig).

Beim Laden einer Unit wird dann wieder dessen USES abgehandelt usw.


Also abgesehn vom Implementations-Uses, kann man die "statischen" Verlinkungen der DLL/BPL mit der Art der Reihenfolge bei den Units vergleichen.
Das Implementations-Uses und die delayed+dynmamischen DLLs und die Hooks, bringen hier bissl Chaos rein, aber sonst ist die Reihenfolge eigentlich fest.



Im Programm gibt es Events, um sich über das Laden von DLL/BPL informieren zu lassen,
bzw. ich hatte mir auch mal aus der PEB die Infos rausgeholt ... da gibt es 3 Listen, wovon eine der Reihenfolge des Ladens enspricht, inkl. einer Angabe "warum" es geladen wurde (statisch, delayed oder dynamisch).
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (23. Jul 2024 um 16:38 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz