Zugriff auf Memory Mapped File -> Ringpuffer
-
Hi,
in meinem Programm wird im Main Prozess der Ringpuffer initalisiert und angelegt.
Die beiden erzeugten Prozesse sollen auf diesen Ringpuffer zugreifen.(Semaphoren kommen noch)
Mein Problem ist, dass ich nicht weiß, wie die beiden Prozesse auf den Ringpuffer zugreifen sollen.Hier einmal der entsprechene Codeabschnitt aus dem Main-Prozess:
//Initalisierung des Ring Buffers for (int i = 0; i < N; i++) { ring.element[i] = 0; } ring.nextEmpty = 0; ring.nextFull = 0; //Mapping File Objekt erzeugen //(HANDLE)-1 -> geht auch hFile = CreateFileMapping(INVALID_HANDLE_VALUE, // keine eigene Datei, sondern PageFile.sys NULL, // keine Sicherheitsattribute PAGE_READWRITE, // schreiben und lesen 0,4096, // Größe (High+Low) "Ringbuffer"); // Name if (hFile == NULL) { ShowError("FileMap-Objekt kann nicht erzeugt werden: "); } // View des Objektes erzeugen ringptr = (struct buffer*)MapViewOfFile(hFile, // File-Map Objekt FILE_MAP_WRITE, // schreiben und lesen 0,0, // Offset (High+Low) 4096); // Größe if (ringptr == NULL) { ShowError("Pointer MapViewofFile konnte nicht erzuegt werden"); }Code Prozes_1. ka ob das sie richtig wäre.
HANDLE hFile = NULL; //Mapping File Objekt erzeugen //(HANDLE)-1 -> geht auch hFile = CreateFileMapping(INVALID_HANDLE_VALUE, // keine eigene Datei, sondern PageFile.sys NULL, // keine Sicherheitsattribute PAGE_READWRITE, // schreiben und lesen 0,4096, // Größe (High+Low) "Ringbuffer"); // Name if (hFile == NULL) { ShowError("FileMap-Objekt kann nicht erzeugt werden: "); } LPVOID ringptr; // = Typ des Returnwertes von MapViewOfFile() // View des Objektes erzeugen ringptr = MapViewOfFile(hFile, // File-Map Objekt FILE_MAP_WRITE, // schreiben und lesen 0,0, // Offset (High+Low) 4096); // Größe if (ringptr == NULL) { ShowError("Pointer MapViewofFile konnte nicht erzuegt werden"); }