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

Était-ce utile?

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
scroll top