Schau mal unter folgendem
Link.
Noch n bisschen Hintergrundwissen:
WinNT unterteilt den Adressraum grundlegend in zwei Bereiche: 0x00000000 - 0x7fffffff ist der private Bereich der jedem Prozess für sich zur verfügung steht (fast, s.U.) und 0x80000000 - 0xffffffff ist der Bereich den das System für sich reserviert und auf den kein weiterer Zugriff möglich ist.
Außerdem, ich habs ja eben schon kurz erwähnt, wird der Private bereich nochmals dreigeteilt:
0x00000000 - 0x0000ffff ist immer frei und u.A. dazu gedacht fehlerhafte Zugriffe (z.B. Nullzeiger dereferenzierung) erkennen zu können.
0x00010000 - 0x7ffeffff ist der Bereich über den der Prozess tatsächlich verfügen kann.
0x7fff0000 - 0x7fffffff ist wie der untere Bereich geschützt.
Die oberen 2GB sind, wie gesagt, für das System für sich selbst reserviert und nicht weiter zu gebrauchen (für Prozesse). Da liegen dann z.B. der Betriebssystemcode, Gerätetreiber usw...
Übrigens werden DLLs alle in den "privaten" Adressraum von Prozessen geladen, weil der Systemteil ja keinerlei Zugriffsmöglichkeit mehr bietet.