надо посмотреть как передаются multidimensional array — например
http://msdn.microsoft.com/en-us/library/z6cfh6e6.aspx . По моему (может и ошибаюсь) надо вручную маршалить(см. Marshal) — выделять память(Marshal.AllocHGlobal),получать указатель, копировать туда значения, и передавать указатель.