编程语言
首页 > 编程语言> > C#格式化外部Dll函数参数

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

Here you go.

奇怪的是,此刻该站点已关闭,但它是解决问题的很好资源.同时,您可以在http://web.archive.org/web/20080202041852/http://www.pinvoke.net使用Archivev.net的pinvoke.net档案.

标签:dllimport,marshalling,c
来源: https://codeday.me/bug/20191107/2004111.html