IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Pb de pointeur : passage C++ au C#


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Par défaut 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 : 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

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Qu'est ce que le type "IntPtr" ? Pointeur d'entier ?
    As tu essayés un truc du genre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FlightData m_ptr = (FlightData) mappedViewHandle;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3
    Par défaut
    Oui, j'ai bien essayé , mais sans succés

    IntPtr représente un pointeur ou un handle en C#

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    mais est ce que le compilo aceepte juste le cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (FlightData) mappedViewHandle
    Il te cris dessus ?
    Normalement en code managé on utilise pas les pointeurs, et ceux-ci sont représenté plutot par les delegate. Je ne sais pas si cela t'aide.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700

Discussions similaires

  1. [pointeur][passage par référence] Perte des valeurs.
    Par ced600 dans le forum Débuter
    Réponses: 13
    Dernier message: 05/09/2008, 18h44
  2. Base pointeurs + passage de paramètre
    Par lyes312 dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2008, 22h47
  3. Pb de pointeur : passage C++ au C#
    Par AlainPdC dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/05/2006, 09h40
  4. Problème passage de pointeur
    Par mick74 dans le forum MFC
    Réponses: 2
    Dernier message: 21/04/2004, 18h34
  5. [allegro]passage de pointeur sur image
    Par Gonath dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/12/2003, 18h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo