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 :

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'utilise la classe gestion de mémoire partagée développée dans ce tutoriel , je l'ai modifié pour utilisé une structure.

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,