.NET Marshaler:好的文档?

时间:2009-08-20 13:03:05

标签: .net pinvoke marshalling

我目前正在研究一些调用自定义本机dll的C#代码。将数据封送回C#时,我需要显式对齐用于封送的类/结构的字段。由于对编组及其规则的不完全理解,我遇到了许多问题。例如,我最近通过一个SO问题发现,编组器要求数组与DWORD对齐。如果我早些知道这件事,那本可以让我头疼。

我的问题是双重的:

1)是否提供了提供此类信息的编组人员的良好文档?

2)我应该注意哪些其他类似的限制? (例如,所有DWORD大小的字段都必须与DWORD对齐)?

2 个答案:

答案 0 :(得分:2)

有一个有用的工具可以为给定的库生成pinvoke签名。它有win32 apis的快捷方式,但你可以传入你自己的文件。

pinvoke interop assistant

我不确定它对理解映射有多大帮助,但至少它可能会给你一些工作实例。我用它来为我们的一些本机代码生成一个C#接口,它运行良好。

codeplex site似乎也有一些有用的诊断工具,我将放弃。

答案 1 :(得分:1)

http://pinvoke.net有很多好的信息,包括许多(大多数?)股票win32函数以及许多其他函数的精确编组指令。它是基于wiki的,所以当你找到新的库或现有的库存时,你可以添加它们。