如果我有一个非托管指针,并且我想将指定数量的字节从该位置传输到 Byte 数组,那么最好的方法是什么?
即什么是 Marshal.PtrToString* 方法的等价物,但目标是 Byte()
谢谢
如果我有一个非托管指针,并且我想将指定数量的字节从该位置传输到 Byte 数组,那么最好的方法是什么?
即什么是 Marshal.PtrToString* 方法的等价物,但目标是 Byte()
谢谢
Marshal.Copy
具有用于将字节数组复制到/从指针的重载。
这是与VB6Byte()
风格的 COM 互操作吗?您为什么要使用 OLE-COM 查看器(包含在随 VS 安装的 Windows SDK 工具中)检查底层 COM 类型以打开 VB 创建的 dll 以查看其类型库所说的内容。
试试下面的代码
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);
}
}