VB.Net : Récupérer le pointeur d'un tableau de bytes

Résolu
MartialArtist Messages postés 7 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008 - 27 sept. 2008 à 00:31
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 28 sept. 2008 à 17:49
Bonjour, je cherche à récupérer le pointeur d'un tableau de byte en VB.Net 2005.

Je sais qu'il ne faut pas en théorie utiliser les pointeurs en VB.Net, mais j'en ai besoin pour être rapide (pour ReadFile de kernel32).

Je crois qu'il faut utiliser le marshalling, mais je n'y parviens pas !




Concrêtement, j'ai :

Dim buf() As Byte
Redim buf(100)
Dim ptr As IntPtr = IntPtr.Zero

et j'aimerais stocker l'adresse mémoire (pointeur) de buf(0) dans ptr.


Merci !
Bien cordialement.

3 réponses

MartialArtist Messages postés 7 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 01:05
J'ai fini par trouver :




Marshal.UnsafeAddrOfPinnedArrayElement(byteArray, 0)



Je peux aller dormir !
3
MartialArtist Messages postés 7 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 00:33
Désolé pour la mise en page, Opera est mal géré par vbfrance.

Je disais :

Bonjour, je cherche à récupérer le pointeur d'un tableau de byte en VB.Net 2005.

Je sais qu'il ne faut pas en théorie utiliser les pointeurs en VB.Net, mais j'en ai besoin pour être rapide (pour ReadFile de kernel32).

Je crois qu'il faut utiliser le marshalling, mais je n'y parviens pas !

Concrêtement, j'ai :

Dim buf() As Byte
Redim buf(100)
Dim ptr As IntPtr = IntPtr.Zero

et j'aimerais stocker l'adresse mémoire (pointeur) de buf(0) dans ptr.

Merci !
Bien cordialement.
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
28 sept. 2008 à 17:49
Salut,

Un tableau étant un objet par référence, normalement tu n'a pas besoins de trouver le pointeur pour qu'une API fonctionne, tu peux directement lui passer le tableau
0
Rejoignez-nous