Bonjour,
Je développe une application ou il sera nécessaire à 2 programmes différents (mais éxecuté sur la même machine) d'échanger les données d'un buffer. Pour ce faire j'ai tenté de me faire un petit programme de test mais j'ai un problème.
Contexte : Un des 2 programmes (qu'on va appeler Prog1) va seulement écrire dans le buffer, Prog2 quand à lui ira seulement le lire.
Problème : J'arrive bien à écrire dans le buffer y a pas de soucis par contre je n'arrive pas à lire le buffer à partir du Prog2.
Mon code :
Prog1 :
{
unsigned char buffer[10]={97,98,99};
unsigned long ecrit;
bool write = false;
HANDLE hFile = CreateFile("test.txt",GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, 0);
if (hFile == INVALID_HANDLE_VALUE)
AfxMessageBox("Erreur Create");
HANDLE hMapping = CreateFileMapping(hFile,NULL, PAGE_READWRITE, 0, 3, "Buffer");
if (hMapping == NULL)
AfxMessageBox("Erreur Mapping");
write = WriteFile(hFile,buffer,3, &ecrit, NULL);
SetFilePointer (hFile,0, NULL, FILE_BEGIN);
system("PAUSE"); //Je fais juste une pause pour lancer le 2ème programme sans fermer le handle)
CloseHandle(hFile);
}
Prog2 :
{
HANDLE hMapping;
LPVOID Map;
unsigned long ecrit;
bool read = false;
unsigned char buffer[10];
hMapping = OpenFileMapping(FILE_MAP_READ, 0, "Buffer");
if (!hMapping)
AfxMessageBox("Erreur Open Mapping");
Map = MapViewOfFile(hMapping, FILE_MAP_READ, 0, 0, 0);
if (!Map)
CloseHandle(hMapping);
read = ReadFile(Map,buffer,3,&ecrit, NULL);
}
D'après ce que j'avais compris sur ce lien http://msdn2.microsoft.com/en-us/library/aa366878.aspx , c'est le MapViewOfFile qui retourne le pointeur sur le buffer mais... la lecture ne ce fait pas.
Quelqu'un saurai-il ou ce trouve le problème ?
p.s : Je ne suis pas super fort en programmation...mais j'éssaye de m'y mettre ^^