我目前正在处理一些调用自定义、本机 dll 的 C# 代码。将数据封送回 C# 时,我需要明确对齐用于封送处理的类/结构的字段。由于对 marshaler 及其规则的不完全理解,我遇到了许多问题。例如,我最近通过一个 SO 问题发现封送拆收器要求数组是 DWORD 对齐的。如果我早点知道这一点,它会省去我的一些头痛。
我的问题有两个:
1) 提供此类信息的编组器是否有任何好的文档?
2) 我应该注意哪些其他类似的限制?(例如,是否所有 DWORD 大小的字段都必须是 DWORD 对齐的)?