Perte d'information IntPtr

Résolu
cs_ScRunCHy Messages postés 13 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 21 avril 2009 - 21 avril 2009 à 15:43
cs_ScRunCHy Messages postés 13 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 21 avril 2009 - 21 avril 2009 à 17:11
Salut à tous,

J'ai quelques petites difficultés à manipuler ces IntPtr...
Dans une classe je déclare un IntPtr :

private IntPtr monPtr = IntPtr.Zero;

[...]

et je souhaite l'utiliser dans une fonction issue d'une dll que j'appelle comme suit :

[DllImport ("MaDll.dll")]
public static extern IntPtr init_monPtr();

[DllImport ("MaDll.dll")]
public static extern void test_ptr(IntPtr monPtr);

[...]

Dans une fonction init() je fais :

private void init(){
    monPtr = init_monPtr();  // Ce qui semble marcher; à l'intérieur du code, l'initialisation se passe correctement (les champs de la structure sur laquelle
                                          // pointe mon pointeur sont remplis) et la fonction retourne ce pointeur...
    test_ptr(monPtr);            // Supposons par exemple que l'on souhaite accéder à un champ de la structure sur laquelle pointe monPtr...
                                          // Ben là il n'y a plus rien dans le pointeur, comme si il avait été réinitialisé... !
}

Je précise que je me trouve dans un contexte unsafe car j'utilise d'autre pointeurs... Mais y a t'il quelque chose de particulier à faire pour ne par perdre les infos ??
Les fonctions que j'appelle sont écrite en C;
 je ne vois vraiment pas d'où vient le pb...

Merci pour votre aide.

1 réponse

cs_ScRunCHy Messages postés 13 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 21 avril 2009
21 avril 2009 à 17:11
Bon désolé j'ai trouvé mon problème qui n'avait rien à voir avec l'utilisation des IntPtr mais avec la fonction de la Dll écrite en C.
3
Rejoignez-nous