Мне еще не удалось найти хорошую ссылку на эту тему. В этом примере мы возьмем некоторый код 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" ... при условии, что это правильно?
Любая помощь в этом, ребята?