Frage

Wenn ich einen nicht verwalteten Zeiger haben und ich möchte von dieser Stelle zu einem Byte-Array eine bestimmte Anzahl von Bytes übertragen, was ist der beste Weg, dies zu tun?

d. was ist das Äquivalent von Marshal.PtrToString * Methoden aber, wo das Ziel ist ein Byte ()

Danke

War es hilfreich?

Lösung

Marshal.Copy hat Überlastungen für das Kopieren Byte-Arrays zu / von einem Zeiger.

Mit dem Byte() ist diese Interoperabilität mit COM VB6 Stil? Sie, warum wollen den zugrunde liegenden COM-Typen mit dem OLE-COM Viewer (enthielt in den Windows SDK-Tool mit VS installiert ist) zu überprüfen, die VB-DLL zu betrachten erstellt zu öffnen, dass sein typelib sagt.

Andere Tipps

Versuchen Sie, den folgenden Code

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);
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top