Sloenig Geschrieben 2. April 2007 Geschrieben 2. April 2007 Hi Hab da ein Problem mit Shared Memory. Bin an einem bzw. mehreren Programm(en) zugange, welche miteinander über Shared Memory komunizieren sollen. Dies funktioniert auch. Allerdings will ich jetzt noch ein weiteren Shared Memory Bereich erstellen was aber nicht funktioniert. Beide Programme bekommen anscheindend nicht den gleichen Speicherbereich zugewiesen. Hier mal ein bisschen Quelltext: Hier der Server, welcher zuerst läuft und den Shared Memory Bereich erstellt: m_hMemory = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,sizeof(s_Threshold),"SharedMemory"); m_ptrThreshold = (s_Threshold*)MapViewOfFile(m_hMemory,FILE_MAP_WRITE,0,0,sizeof(s_Threshold)); Und hier der Client, welcher sich zu dem Shared Memory Bereich "verbindet": m_hThreshold = OpenFileMapping(FILE_MAP_WRITE,FALSE,"SharedMemory"); m_ptrThreshold = (s_Threshold*)MapViewOfFile(m_hThreshold,FILE_MAP_WRITE,0,0,sizeof(s_Threshold)); Mein OS ist WinXP Pro und die IDE MSVS 6.0 Ist jemandem von euch bekannt, ob es unter Windows XP eine Begrenzung gibt, wieviele Shared Memory Bereiche es geben darf? Zur Info: In den anderen Programmen bzw. Programmteilen in denen ich das auch schon verwendet habe und das funktioniert, hab ich das genau so realisiert. Der Compiler zeigt auch keine Fehler oder Warnungen beim compilieren an. Schonmal danke im voraus Zitieren
Klotzkopp Geschrieben 2. April 2007 Geschrieben 2. April 2007 Der Compiler zeigt auch keine Fehler oder Warnungen beim compilieren an.Und was passiert zur Laufzeit? Sprich: was liefert CreateFileMapping / OpenFileMapping zurück? Zitieren
Sloenig Geschrieben 2. April 2007 Autor Geschrieben 2. April 2007 beides liefert einen Handle auf einen Speicherbereich zurück. Deswegen danach auch das MapViewOfFile(). Hab jetzt noch mal ein bisschen rumprobiert...geht jetzt auf einmal doch...der hatte komischerweise vorher andere Speicherbereiche zugewiesen bekommen... trotzdem danke Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.