cs_ScRunCHy
Messages postés13Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention21 avril 2009
-
21 avril 2009 à 15:43
cs_ScRunCHy
Messages postés13Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention21 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...