Вам необходимо изменить тип сортировки. SizeConst требуется, если вы выполняете маршалинг как ByValArray, но не с другими типами. Подробнее смотрите в перечислении UnmanagedType .
Я подозреваю, что вы хотите маршалировать как указатель C на массив:
[MarshalAs(UnmanagedType.LPArray)]
Это приведет к тому, что он будет перенаправлен в стандартный массив C (BYTE *), поэтому передается только указатель. Это позволяет вам передавать массив любого размера. Как правило, вы также захотите передать размер массива в качестве другого параметра (или ширины изображения / высоты / bpp, который предоставляет ту же информацию), поскольку в C / C ++ нет способа сказать это легко.