Marshal.PtrToStructure尝试写入受保护的内存
大家好,我首先使用了Marshal.StructureToPtr这个方法把一个结构转化成了byte数组,然后我把这个byte数组写入到了文件里。之后我又写了一个程序,从dat文件中取出这个类的byte[]数组, 想把这个数组转化成为结构体,
主要方法如下。
public static Object BytesToStruct(Byte[] bytes, Type strcutType)
{
Int32 size = Marshal.SizeOf(strcutType);
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
Marshal.Copy(bytes, 0, buffer, size);
return Marshal.PtrToStructure(buffer, strcutType);
}
finally
{
Marshal.FreeHGlobal(buffer);
}
}
可是在转化的过程中,要么就是报尝试写入受保护的内存,要么就是获取不到数据,要么就是报 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。这三个错误随机出现,我已经蒙了,请大神给我看看。
主要方法如下。
public static Object BytesToStruct(Byte[] bytes, Type strcutType)
{
Int32 size = Marshal.SizeOf(strcutType);
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
Marshal.Copy(bytes, 0, buffer, size);
return Marshal.PtrToStructure(buffer, strcutType);
}
finally
{
Marshal.FreeHGlobal(buffer);
}
}
可是在转化的过程中,要么就是报尝试写入受保护的内存,要么就是获取不到数据,要么就是报 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。这三个错误随机出现,我已经蒙了,请大神给我看看。
...全文
相关推荐
Marshal类的PtrToStructure
PtrToStructure,将数据从非托管内存块封送到新分配的指定类型的托管对象 应用:MFC发送消息到WPF界面上 public IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if ((MsgType)msg == MsgType.WM_TestChip_R) { ChipTest MsgData; MsgData = (ChipT
Marshal类的使用
Marshal类的简单使用,博客:http://blog.csdn.net/dingxiaowei2013/article/details/23934693
C#—EMguCV Marshal
将数据从托管对象封送到非托管内存块,属于.NET Framework 类库
C#与CoDeSys共享内存例程
该例程实现C#与Codesys通过共享内存的方式完成数据交互,这样有利于垮软件平台之间进行通讯,相较于其他通信方式(Modbus、TCP/IP等)更加方便快捷。
C#结构体指针的定义及使用详解
C#结构体指针的定义及使用详解


