Du kannst so einfach keine Zeichenketten über
IPC verschicken.
Dein Pchar ist ja nur ein Zeiger. Den sendest du auch, aber in dem anderen Prozess, wo das Result (also der Zeiger auf 'Foo' ankommt, kann 'Foo' nicht gelesen werden, da du dich in zwei verschiedenen Adressräumen befindest.
Also ein Pointer oder PChar in Prozess 1 zeigt auf eine ganz andere reale Adresse als derselbe Pointer in Prozess 2.
Du hast nur 32 bit (also 4 Bytes) zum versenden. Demzufolge würde sogar ein 'Foo' reinpassen, nur anders als du es gemacht hast. du darfst nicht den Zeiger versenden, sondern den Inhalt des Zeigers.
Längere Zeichenketten gehen allerdings nicht mehr. Für Zeichenketten versenden bieten sich generell "global Atoms" an.