* Équivalent à Marshal.PtrToString méthodes pour tableau d'octets
-
06-09-2019 - |
Question
Si j'ai un pointeur non géré et je veux transférer un nombre d'octets de cet endroit à un tableau d'octets, quelle est la meilleure façon de le faire?
i.e.. ce qui est l'équivalent de Marshal.PtrToString * méthodes, mais où la destination est un octet ()
Merci
La solution
Marshal.Copy
a surcharges pour des tableaux d'octets à copier vers / à partir d'un pointeur.
Par Byte()
est ce interopération avec style VB6 COM? Vous pourquoi voulez vérifier le type COM sous-jacente à l'aide de la visionneuse OLE-COM (inclus dans les outils Windows SDK installés avec VS) pour ouvrir le VB créé dll pour regarder que son dit typelib.
Autres conseils
Essayez le code suivant
public static byte[] PtrToByteArray(IntPtr ptr, int len) {
var array = new byte[len];
for ( int i = 0; i < len; i++ ) {
array[i] = (byte)Marshal.PtrToStructure(ptr, typeof(byte));
ptr = new IntPtr(ptr.ToInt64()+IntPtr.Size);
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow