等效于字节数组的Marshal.PtrToString *方法

时间:2009-02-25 11:48:32

标签: .net marshalling

如果我有一个非托管指针,并且我想将指定数量的字节从该位置传输到Byte数组,那么最好的方法是什么?

即。什么是Marshal.PtrToString *方法的等价物,但目的地是Byte()

由于

2 个答案:

答案 0 :(得分:2)

Marshal.Copy有重载字节数组到/从指针复制。

Byte()与VB6风格的COM互操作?您为什么要使用OLE-COM查看器(包含在随VS安装的Windows SDK工具中)检查基础COM类型,以打开VB创建的dll以查看其类型库说明。

答案 1 :(得分:0)

尝试以下代码

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);
  }
}