Я предполагаю, что картирование - это структура? Если это так, вы можете иметь две версии прототипа FILES_GetMemoryMapping()
с разными подписями. Для второй перегрузки, в которой вы хотите передать null
, задайте для параметра IntPtr
и используйте IntPtr.Zero
public static extern uint FILES_GetMemoryMapping(
[MarshalAs(UnmanagedType.LPStr)] string pPathFile,
out ushort Size,
[MarshalAs(UnmanagedType.LPStr)] string MapName,
out ushort PacketSize,
IntPtr oMapping,
out byte PagesPerSector);
Пример вызова:
FILES_GetMemoryMapping(MapFile, out size, MapName,
out PacketSize, IntPtr.Zero, out PagePerSector);
Если Mapping на самом деле является классом, а не структурой, просто установите значение в null, прежде чем передавать его вниз.