Параметры, которые не маршалируются, это просто целые числа. Интты - это целые, это целые, везде, родные или нет. Поэтому не нужно никаких специальных инструкций, чтобы справиться с ними, значение просто передается по значению, и все готово.
Указатели и строки более хитры. Строки C # не обязательно представлены как строки C, которые просто являются указателями на массив символов с нулевым символом в конце. Внутреннее преобразование может быть необходимым. Точно так же массив должен быть передан по ссылке - и явно сказано сделать это.
Помните, что в неуправляемом коде адреса - это просто данные. В них нет ничего особенного. Поэтому компилятору C # нужно знать, как взять все, что он знает о ваших переменных, и превратить его в числа.