当前位置: 首页 > 编程语言 > C#

Marshal.PtrToStructure抛出AccessViolationException分享

时间:2023-04-11 12:18:06 C#

Marshal.PtrToStructure抛出AccessViolationException我有这个结构:[StructLayout(LayoutKind.Sequential)]publicstructIS{publicUInt32ID;公共UInt32质量;公共UInt32标志;公共UInt32标志2;公共UInt32ContainerSlots;[MarshalAs(UnmanagedType.ByValArray,SizeConst=10)]publicInt32[]ItemStatType;[MarshalAs(UnmanagedType.ByValArray,SizeConst=10)]publicUInt32[]ItemStatValue;[MarshalAs(UnmanagedType.ByValArray,SizeConst=10)]publicInt32[]ItemStatUnk1;[MarshalAs(UnmanagedType.ByValArray,SizeConst=10)]publicInt32[]ItemStatUnk2;公共UInt32ScalingStatDistribution;公共UInt32伤害类型;公共UInt32延迟;公共浮动RangedModRange;[MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]publicInt32[]SpellId;[MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]publicInt32[]SpellTrigger;[MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]publicInt32[]法术费用;[MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]publicInt32[]SpellCooldown;[MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]publicInt32[]SpellCategory;[MarshalAs(UnmanagedType.ByValArray,SizeConst=5)]publicInt32[]SpellCategoryCooldown;公共UInt32绑定;公共字符串名称;公共字符串名称2;公共字符串名称3;[MarshalAs(UnmanagedType.ByValArray,SizeConst=3)]publicUInt32[]Color;SizeConst=3)]publicUInt32[]内容;};我正在尝试从文件中读取字节并使用Marshal和GCHandle将这些字节复制到上述结构中,我的代码如下:reader=BinaryReader.FromFile(fileName);m_rows=新列表();intsize=Marshal.SizeOf(typeof(IS));如果(reader.BaseStream.Length

最新推荐
猜你喜欢