我還沒有找到關於此主題的很好的參考。對於這個例子,我們將採取一些我試圖移植到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