Маршалинг двумерного массива char фиксированной длины в C ++ в качестве члена структуры

Я пытаюсь вызвать неуправляемую функцию C ++, которая имеет структуру в качестве входного параметра. Структура определяется в заголовочном файле следующим образом:

struct MyStruct
{
int     siOrder;
char     aaszNames[6][25];
int     siId[6];
int     siTones[6];        
};

Я попытался объявить управляемую структуру следующим образом:

[StructLayoutAttribute(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct MyStruct {

public int siOrder;

[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst=150)]
public string aaszNames;

[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=6, ArraySubType=UnmanagedType.I4)]
public int[] siId;

[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=6, ArraySubType=UnmanagedType.I4)]
public int[] siTones;
}

Но без какого-либо успеха. Я предполагаю, что маршалинг завершился неудачно, поскольку aaszNames на самом деле представляет собой массив из шести длинных строк с нулем в конце, равных 25. Я пытался объявить aaszNames как

 [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=150)]
 public char[] aaszNames;

заполнение массива нулями, где это необходимо. Но опять же ничего.

Есть ли что-то, что мне не хватает? Что я не прав? Каков наилучший способ упорядочить этот массив двумерных символов?

Любые намеки, пожалуйста.

Ответы на вопрос(4)

Ваш ответ на вопрос