Bonjour,
J'utilise une mémoire partagée et un mutex pour la synchronisation d'accès entre 2 applications.
Voici le code de déclaration sur les 2 applications :
J'utilise la classe gestion de mémoire partagée développée dans ce tutoriel , je l'ai modifié pour utilisé une structure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ReadMemory = new MemoryMapping("TESTCom",sizeof(ShareReadMemory)); ReadMemory->Execute(); ShareReadMemory = (Struct_ReadMemory*)ReadMemory->PtrMapping; ReadMemory->CloseAccessMemory(); hMutex = CreateMutex(NULL,FALSE,"hMutex"); if (GetLastError() == ERROR_ALREADY_EXISTS) { if (hMutex !=NULL) CloseHandle(hMutex); }
J'ai réussi à mettre en oeuvre cette classe dans une petite application qui était un simple compteur. Je partageais dans une structure : 1 entier, 1 booléen, et un tableau de long de 10 éléments. La déclaration de ma mémoire partagée et de mon mutex sont identique que le code ci-dessus. Cela fonctionne très bien la mémoire partagée et le mutex ont leur adresses identiques dans les 2 applications.
Maintenant dans l'application actuelle, je dois partagé 10 entiers, 4 booléens et 3 tableaux de long de 255 éléments. Malheureusement, ni mon mutex, ni l'adresse de la mémoire partagée sont correctes dans les 2 applications. Les 2 adresses sont différentes entre les 2 applications.
Avez vous une solution ou un début d'explication car je seche un peu?
Cordialement,
Partager