Ik heb een DLL geschreven die een shared memory object aanmaakt als deze nog niet bestaat.
Verder heb ik een interface geschreven waar de gegevens in het shared memory object kunt wijzigen. De DLL is een plug-in voor een simulatie.
Beide applicaties controleren of het shared memory object bestaat, zo niet dan wordt deze gemaakt icm een mutex om de schrijf rechten te bepalen. Het shared memory object wordt in beide applicaties als read-write geopenend alleen degene die de mutec heeft mag schrijven.
Toch krijg ik af en toe memory fouten: adress xxxxx could not be read
En de simulatie (incl programma) loopt vast.
Hoe komt dit? Is het zo dat één van de 2 applicaties toch gaat schrijven terwijl hij niet mag of omdat beide het shared memory object als rw geopend hebben, of nog iets anders?
Edit:
hij wordt zo aangemaakt, in beide applicaties:
en als ie al bestaat:
info:
Createfilemapping
MapViewOfFile
Verder heb ik een interface geschreven waar de gegevens in het shared memory object kunt wijzigen. De DLL is een plug-in voor een simulatie.
Beide applicaties controleren of het shared memory object bestaat, zo niet dan wordt deze gemaakt icm een mutex om de schrijf rechten te bepalen. Het shared memory object wordt in beide applicaties als read-write geopenend alleen degene die de mutec heeft mag schrijven.
Toch krijg ik af en toe memory fouten: adress xxxxx could not be read
En de simulatie (incl programma) loopt vast.
Hoe komt dit? Is het zo dat één van de 2 applicaties toch gaat schrijven terwijl hij niet mag of omdat beide het shared memory object als rw geopend hebben, of nog iets anders?
Edit:
hij wordt zo aangemaakt, in beide applicaties:
C++:
1
2
| hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,sizeof(Smo),szName); pBuf = MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,sizeof(Smo)); |
en als ie al bestaat:
C++:
1
2
| hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,szName); pBuf = MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,sizeof(Smo)); |
info:
Createfilemapping
MapViewOfFile
[ Voor 29% gewijzigd door elgringo op 07-09-2006 12:03 ]
if broken it is, fix it you should