我还没有找到关于这个主题的好参考。对于这个例子,我们将使用一些我试图移植到 C# 的 C++ 代码。
在 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”......假设这是正确的?
对这个人有什么帮助吗?