Any function returning a non-blittable struct is incompatible with p/invoke. That was the problem here: http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/e79c0a76-52bc-48ec-9dce-3b8163dd3876. In that case, with a short array, the workaround is not a big deal, but it could become painful with a more complex structure.
Passing an array of structures is not impossible, but you need to do quite some work if you use only C#. See here: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/a83a5786-b515-4892-a369-7cd1867b64ff