WinAPI: 3 Zeichen einlesen

Eisi_GolBay

Grünschnabel
Hi!

Ich benötige Hilfe bei folgendem Code:

Code:
#include <windows.h>
#include <iostream>

using namespace std;

void main()
{
//Tätigkeiten Prozess3
LPVOID zeiger3;
char ptr3;
HANDLE hMap;

//öffnet das erzeugte Mapping-Objekt(liefert Handle)
hMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, true, "MyObj");

//Datei-Ausschnitt einblenden... liefert Zeiger ptr3 auf Anfang des Ausschnitts zurück 
zeiger3 = MapViewOfFile(hMap,FILE_MAP_ALL_ACCESS, 0, 0, 3);

//gibt virt. Adr. ptr3 aus 
cout << &zeiger3 << endl;

//schreibt drei Zeichen x,y,z ab der virt. Adr. ptr3
?


Sleep(3000);
UnmapViewOfFile(zeiger3);
CloseHandle(hMap);

ExitProcess(0);
}

... schreibt drei Zeichen x,y,z ab der virt. Adr. ptr3

Wie mache ich das? Wie übergebe ich x, y, z?
Ich habe jetzt mal wieder lange genug probiert und gegoogelt... ich komm einfach nicht drauf wie ich das handeln soll.

Zusatzinfo
MyOby wird im ersten Prozess erzeugt mit CreateFileMapping(..., "MyObj")
Zwei Prozesse schreiben je drei Zeichen in das MappedFile, mein erster Prozess soll die Zeichen ausgeben, die geschrieben wurden, also 6 Zeichen.

Bin für jede Antwort dankbar!

Gruss Eisi
 
hallo,
ähm...will jetzt keine falschen ansätze verbreiten :)
aber kannst du deine werte nicht einfach an die bestimmte adr. übergeben.
und wenn du dann den nächsten wert schreiben willst, könntest du den zeiger
um seinen eigenen datentyp erhöhen:

zeiger++;

oder so und dann somit an die nächste adr. schreiben ?!
ist so eine spontane idee *g* kann natürlich sein das ich voll daneben liege.
mfg adam
 
Ich weiss nicht, wie du die drei Zeichen im anderen Prozess reinschreibst. Zum Rauslesen einfach einen char-Pointer nehmen (mit void geht das nicht) und fertig:

char* cPointer = (char*)zeiger3;

// Zeichen 1: cPointer[0]
// Zeichen 2: cPointer[1]
// Zeichen 3: cPointer[2]
 
Die Konvertierung in ein char --> (char*)zeiger war die Lösung für die Ausgabe (bekomme sechs leere Stellen ausgegeben), die Eingabe funktioniert damit nicht(Meldung: pro2.exe hat Fehler festgestellt. Fehlerbericht an Microsoft senden). Trotzdem danke für die Hilfe... Bin gespannt wie ich das Problem lösen kann... Falls noch jemand einen Vorschlag hat --> Bitte posten!

P.S. war am WE nicht zu Hause, dafür heute :p

Gruss
 
Zurück