Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 8 juil. 2008 à 10:55
Essaie avec la classe System.BitConverter et sa methode GetBytes. Par contre tu devras faire un cast intermediaire de ton void* car le type n'est pas géré ;)
~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 8 juil. 2008 à 11:58
En fait la methode GetBytes de BitConverter te renvoie bien un byte[] representant le parametre en entrée, mais les types en entrée sont : string, int , long , double ...... (pour la liste complète voir la msdn :p )
~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 8 juil. 2008 à 19:53
Salut,
Il est possible de passer un simple tableau managé de types blittables ( int, byte .. ) vers du code non-managé le runtime va marshaller correctement le tableau en pointeur. Sinon il faut utiliser un IntPtr pour passer l'adresse du tableau.. Il faudra d'abord fixer le tableau soit avec le mot clé fixed et du code unsafe soit avec la méthode GChandle.Alloc.
Par contre pour récupérer le tableau en valeur de retour c'est obligatoirement un IntPtr, là encore il faudra utiliser du code unsafe pour lire les données du IntPtr ou faire une copie avec Marshal.Copy.