Bonjour. Je dois utiliser le filemapping pour transmettre un tableau de structure d'un programme à un autre.
Mon premier probleme était le fileMapping. Mais j'ai trouvé un code sur
le net qui permettait de passer des tableaux d'entier d'un programme a
un autre. J'ai modifié le programme de façon a ce qu'a la place,
d'entier, le tableau contienne des structures.
La compilation passe très bien, mais il y a une erreur à l'execution. Je ne vois pas d'ou elle peut venir... Voici mon code:
#define MAXMEMORY 2
//Structure décrivant un avatar
typedef struct t_avatar {
string idSelection; //Id du personnage
int posX;
//Absisse de
la position du personnage
int posY;
//Ordonnée de
la position du personnage
int
Orientation; //Orientation de la
position du personnage
};
//structure a transmettre
struct MEMORYDATA
{
t_avatar data[MAXMEMORY];
};
int main(int argc, char* argv[])
{
//Declaration des variables
HANDLE fileHandle;
HANDLE mapFileHandle;
struct MEMORYDATA *mdata = NULL;
t_avatar Avatar1;
t_avatar Avatar2;
//Initialisation des variable avec des valeur bidon. L'important, c'est que ca marche!
Avatar1.idSelection = "Av1";
Avatar1.Orientation = 2;
Avatar1.posX = 3;
Avatar1.posY = 4;
Avatar2.idSelection = "Av2";
Avatar2.Orientation = 5;
Avatar2.posX = 6;
Avatar2.posY = 7;
//Creation du fichier Map
fileHandle = CreateFile("C:\\Essai2.dat",
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
CREATE_ALWAYS, 0, 0);
mapFileHandle = CreateFileMapping(fileHandle , 0, PAGE_READWRITE, 0,0x1E8480, "TEST");
//Création de la vue du fichier.
mdata = (struct MEMORYDATA*)MapViewOfFile(mapFileHandle, FILE_MAP_WRITE, 0, 0,0);
//C'est dans ces deux lignes qu'il y a des problemes a l'execution.
mdata->data[0] = Avatar1;
mdata->data[1] = Avatar2;
//Fermeture des fichier et libération de la mémoire
UnmapViewOfFile(mdata);
CloseHandle(mapFileHandle);
CloseHandle(fileHandle);
return 0;
}
Voyez vous d'ou peux venir l'erreur?