auf wem liegt sie (aus sicht der dll)



  • hi,

    ich habe in meinem programm eine dll und ich möchte wissen auf wem sie liegt?

    also so wie ich es verstanden habe, hat ja jedes programm einen speicher von 0 bis 0xffffffff und wenn die dll bei 0x80000 geladen ist, auf wem liegt sie dann? also was liegt da drunteR? mein programm? oder der kernel oder wer? ist das jeden tag ein anderer, oder ist das immer der gleiche? wovon hängt das ab?



  • das hängt von dem betriebssystem ab. AFAIK gibt es dafür keine regel, das ist immer anders, je nachdem wies im speicher passt.
    denentsprechend wird dasselbe programm höchst selten immer an derselben stelle erzeugt.



  • hm also liegt sie theoretisch jeden tag auf wem anders? kann ich das irgendwie rausfinden, wer unter ihr liegt? mit irgendeiner api funktion`?



  • Wenn ich mich richtig erinnere ist das was du da geschrieben hast nicht ganz richtig. Es gibt einen 4GB großen virtuellen Speicher das ist richtig, allerding ist davon nur 2GB nutzbar für Benutzer-Programme. D.h. also das OS belegt die anderen 2GB für Treiber ect.

    +-----------------+
    |                 | 0x00000000 - 0x3fffffff
    +-----------------+ 0x40000000
    |                 |      ^
    |  Für Programme  |      |
    |  nutzbarer      |      |
    |  Speicher       |      v
    +-----------------+ 0x7fffffff
    |                 | 0x80000000 - 0xffffffff
    +-----------------+
    

    Wenn dein Programm jetzt aber ausgeführt wird, liegt der Entrypoint( EP ), meistens immer bei 0x40000000, d.h. da werden deine DLLs, die dein Programm benötigt, geladen. Wo allerdings später die einzelnen Daten von Variablen ect. liegen ist immer unter schiedlich.

    Hoffe das war jetzt einiger maßen rihtig.

    Gruß Tobi.



  • Bitte nicht drauf eingehen, das ist real_rofler und der will nur nerven.


Anmelden zum Antworten