Bonjour ,
Je tente de venir me connecter à une mémoire partagée . Pour accéder à l'API windows j'ai utilisé
La mémoire partagée à la structure suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [DllImport("Kernel32.dll", SetLastError=true)] internal static extern IntPtr MapViewOfFile ( IntPtr hFileMappingObject, FileMap dwDesiredAccess, int dwFileOffsetHigh, int dwFileOffsetLow, int dwNumberOfBytesToMap );Dans mon programme C# à un certain moment j'appelle la fct MapViewOFile
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class FlightData { uint32 var1; float x; float y; }
mappedViewHandle reférence bien le début de ma mémoire partagée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 IntPtr mappedViewHandle = SharedMemoryAPIs.MapViewOfFile(mappedFileHandle,(uint)SharedMemoryAPIs.FILE_MAP_READ, 0, 0,0);
Normalement en C++ je définis un pointeur (m_ptr) et j'effectue le casting suivant pour accéder à la mémoire partagée
Le problème est que je n'arrive pas à transcoder cette ligne de code en C# et a avoir accés aux élements (x, y , .......) de la mémoire partagée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 FlightData * m_ptr ; m_ptr= (FlightData*) mappedViewHandle; et je récupere les données sous la forme : m_ptr->x .....
Si quelqu'un à une solution à me proposer![]()
Partager