Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Pointer senden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.07.2002, 11:04 Uhr
~ektoplasma2000
Gast


So nun schaffe ich es Nachrichten zwischen zwei Programmen hin und her zu senden,
aber nun eine Frage, wie kann ich (und geht dies überhaupt) Pointer mitsenden ???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.07.2002, 17:47 Uhr
~Pepe
Gast


Hallo,
alle neueren Betriebssystem laufen im sogenannten Protected Mode. D.h. unter anderem, dass jeder Prozess (jedes Programm) seinen eigenen virtuellen Adressraum hat. Die realen Adressen werden dann erst von der CPU/dem Betriebssystem errechnet. Das Ganze hat die Folge, dass wenn zwei unterschiedliche Prozesse an der gleichen Speicheradresse lesen völlig verschiedene Werte herauskommen, da es sich nach der Umrechnung auch um verschiedene reale Adressen handelt. Häufig verbietet das OS dem Prozess sogar den Zugriff auf viele Speicheradressen. Ein Ausnahmefehler wäre z.B. unter Windows die Folge. ("Prozess XZ hat versucht von $1234 zu lesen", darf er aber nicht!)

Lange Rede kurzer Sinn: Pointer kann man zwar mitsenden, da Pointer eigentlich auch nur 32-Bit-Integer-Werte sind.
void *p; int i; i = (int)p; sollte funktionieren!
Aber der Prozess der die den Pointer empfängt kann mit diesem herzlich wenig anfangen.

Bei Prozessen mit gleichen Adressraum wie z.B. einem Programm und einer geladenen DLL gilt das ganze nicht. Hier gelten die Pointer für alles. Dazu ist dann aber auch keine Interprozesskommunikation notwendig, da das Programm einfach DLL-Routinen aufrufen kann.

Was dir vielleicht weiterhilft ist Shared Memory. Das sind von mehreren Prozessen gemeinsam genutzte Adressbereiche. Shared Memory gibt es aber unter Win9x nicht sondern wird über Auslagerungsdateien simuliert. Der Vorteil von Shared Memory, die hohe Geschwindigkeit des Datenaustauschen zwischen Programmen geht dabei verloren. Unter Linux, Win 2000, Win XP sollte Shared Memory Implementiert sein. So ganz sicher bin ich da aber auch nicht!

Gruß
Pepe

Ich hoffe ich konnte helfen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: