Bonjour ,

Je tente de venir me connecter à une mémoire partagée . Pour accéder à l'API windows j'ai utilisé
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 );
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
 
  public class FlightData
{
 
uint32 var1;
float x;
float y;
}
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
 
 
 IntPtr mappedViewHandle = SharedMemoryAPIs.MapViewOfFile(mappedFileHandle,(uint)SharedMemoryAPIs.FILE_MAP_READ, 0, 0,0);
mappedViewHandle reférence bien le début de ma mémoire partagée.

Normalement en C++ je définis un pointeur (m_ptr) et j'effectue le casting suivant pour accéder à 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 .....
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.

Si quelqu'un à une solution à me proposer