C#格式化外部Dll函数参数
作者:互联网
我尚未找到有关此主题的良好参考.在这个例子中,我们将使用一些我要移植到C#的C代码.
在C land中,我们具有以下用于外部库功能的原型:
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)]字符串pPathFile” …假设是正确的?
或者,一个指向“ PMAPPING”结构的指针变成“ out IntPtr pMapping”……假设正确?
对这个家伙有帮助吗?
解决方法:
I have yet to find a good reference on this topic
奇怪的是,此刻该站点已关闭,但它是解决问题的很好资源.同时,您可以在http://web.archive.org/web/20080202041852/http://www.pinvoke.net使用Archivev.net的pinvoke.net档案.
标签:dllimport,marshalling,c 来源: https://codeday.me/bug/20191107/2004111.html