В вашей подписи C # / управляемого метода пометьте входной параметр с помощью [MarshalAs (UnmanagedType.LPArray, SizeParamIndex = 0)] ...
[DllImport(...)]
public void DoTask
(
...,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] results,
...
);
Затем вызовите его какты сделал всегда.Кроме того, внутри неуправляемого кода вы можете изменить этот массив.Я предлагаю вам отправить дополнительный int, сообщающий неуправляемому коду, каков размер массива, чтобы предотвратить изменение «массива вне границы».