Also, wenn die Antwort nicht mehr 42 ist, dann können wir uns begraben
Schau dir mal was über virtuelle Adressräume an!
Kurze Einführung aus meinem leicht lückenhaften Lissen:
Prinzipiell bekommt, dein Prozess, den du startest von Windows 4GB virtuellen Adressraum. Das liegt einfach daran, dass man mit den 32Bit-Registern halt 4GB referenzieren kann = 2^32. (Das wird ja jetzt auch der große Unterschied zu 64-bit-Prozessoren)
Dabei ist es egal, ob du auch wirklich 4GB pro Prozess an Hardware zur Verfügung hast. Meistens brauchst du ja eh bloß ein par kB. Ausserdem nimmt dir windows von den 4GB gleich wieder 2GB weg und mapped da u.a. ein paar Windows
API Funktionen rein, die du ja auch in deinem Adressraum brauchst.
Für all dies ist quasi die MMU (Memory-Managment
Unit) zuständig. Die rechnet deine Adresse aus deinem Pointer ein eine reale Adresse im
RAM oder in der Auslagerungsdatei (wobei da noch viel anderes passiert) um. Und da kannst du machen was du willst, die MMU gibt dir nie eine reale Adresse eines anderen Prozesses zurück. Du kannst zwar Windows fragen, weil Windows, kann das schon, aber das wäre in deinem Fall wie die Sache mit den Kanonen und Spatzen.
Jetzt könnt man zwar sagen, dass du deine
DLL in deinem Prozess hast. Das ist durchaus möglich, aber dann könntest du ja auch mit globalen Variablen arbeiten. Ich nehme deshalb an, die
DLL ist in einem anderen Prozess.
Also PChar funktioniert so nicht. Eine 42 sollte allerdings hervorragend funktionieren. Und ich sehe den Fehler grad nicht.
Wie ist denn die IPCMessageHandler in der WndProc registriert?
Edit: Und was willst du mit der Aufrufkonvention export erreichen?