小编mar*_*khc的帖子

在显式结构上获得"错误对齐或非对象重叠"错误

我正在尝试阅读/编辑暗黑破坏神的保存文件.这里的规格,如果有人感兴趣,但我不认为它与问题有关.

我有一个字节数组,其中包含我正在尝试解析某些结构的文件字节.我已经可以很好地读取文件头了,但是我遇到了任务数据问题.我得到了结构:

[StructLayout(LayoutKind.Explicit, Size = 10, Pack = 1)]
public struct QuestCompletationDataHeader {
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
    [FieldOffset(0)]
    public string Identifier;
    [FieldOffset(4)]
    uint _0x0004;
    [FieldOffset(8)]
    short _0x008;
}

[StructLayout(LayoutKind.Explicit, Size = 96, Pack = 1)]
public struct QuestData {
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 96, ArraySubType = UnmanagedType.U1)]
    [FieldOffset(0)]
    byte[] _0x0000; //Irrelevant for now.
}

[StructLayout(LayoutKind.Explicit, Size = 298, Pack = 1)]
public struct QuestCompletationData {
    [MarshalAs(UnmanagedType.LPStruct)]
    [FieldOffset(0)]
    QuestCompletationDataHeader Header;

    [MarshalAs(UnmanagedType.LPStruct)]
    [FieldOffset(10)]
    QuestData NormalQuests;

    [MarshalAs(UnmanagedType.LPStruct)]
    [FieldOffset(106)]
    QuestData NightmareQuests;

    [MarshalAs(UnmanagedType.LPStruct)]
    [FieldOffset(202)] …
Run Code Online (Sandbox Code Playgroud)

.net c# marshalling

4
推荐指数
1
解决办法
1186
查看次数

标签 统计

.net ×1

c# ×1

marshalling ×1