我还没有找到关于此主题的很好的参考。对于这个例子,我们将采取一些我试图移植到C#的C++代码。C#格式化外部Dll函数参数
在C++中的土地,我们有如下原型的外部库函数:
extern "C" DWORD EXPORT FILES_GetMemoryMapping(
PSTR pPathFile,
PWORD Size,
PSTR MapName,
PWORD PacketSize,
PMAPPING pMapping,
PBYTE PagesPerSector);
,并在使用它像这样:
FILES_GetMemoryMapping((LPSTR)(LPCTSTR)MapFile, &Size, (LPSTR)MapName, &PacketSize, pMapping, &PagePerSector);
现在我试图端口的第一行到C#,这里就是我没有清晰路径的地方。
这是我到目前为止有:
[DllImport("Files.DLL")]
public static extern uint FILES_GetMemoryMapping(
[MarshalAs(UnmanagedType.LPStr)]
string pPathFile,
out ushort Size,
[MarshalAs(UnmanagedType.LPStr)]
string MapName,
out ushort PacketSize,
IntPtr pMapping,
out byte PagesPerSector);
现在的问题是:是否有很好的指导作用,在那里,告诉我一个“PSTR pPathFile”应为“[的MarshalAs(UnmanagedType.LPStr )] string pPathFile“...假设这是正确的?
或者,一个指向“PMAPPING”结构的指针变成“out IntPtr pMapping”...假设这是正确的?
对这一个家伙的任何帮助?
www.pinvoke.net对Win32调用有很大的C#签名参考。通常你可以找到你正在寻找的确切功能,或者如果没有一个可以作为起点的关闭。目前它似乎已经下降了。 – sipwiz 2009-04-07 23:20:37