Pb de pointeur : passage C++ au C#
Bonjour ,
Je tente de venir me connecter à une mémoire partagée . Pour accéder à l'API windows j'ai utilisé
Code:
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:
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:
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:
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 :)