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

[Résolu]
Signaler
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
27 septembre 2008
-
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
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

Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
27 septembre 2008

J'ai fini par trouver :




Marshal.UnsafeAddrOfPinnedArrayElement(byteArray, 0)



Je peux aller dormir !
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
27 septembre 2008

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.
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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