2014-09-25 108 views
0

我有一个IntPtr(c#)从非托管代码给出。我知道这是对带有4096个元素的字节数组的引用。IntPtr到字节[]数组C#

现在我想将这些数据从IntPtr转换为Byte [] WITHOUT Marshal.Copy。因为内核空间中的内存已被分配。我只想将这些数据解释为一个字节数组。

我知道有一个函数“InteropUtils.ConvertIntPtrToByteArray-了Methode”,但它仅适用于智能设备等

也许有人有一个更好的主意?

+0

也许这将有助于:http://stackoverflow.com/questions/713324/how-to-cast-intptr-to-byte/1304570#1304570 – 2014-09-25 09:22:28

+0

@DavidG我以为你没有读过我的问题。我不想使用Marshal.Copy()方法。 – REMberry 2014-09-25 09:30:25

回答

0

你问什么是不可能的,因为一个IntPtr表示非托管存储区域,而一个byte []数组表示托管内存区域。将非托管区域视为托管区域是不可能的。

您必须将数据复制到托管区域(通过Marshal.Copy),或者使用不安全的代码直接操作它。