Здравствуйте, SanyaVB, Вы писали:
SVB>У тебя для Middle[] Childs не определен атрибут MarshalAs
При его отсутствии, используется дефолтный. По дефолту массивы маршалятся, как LPArray.
Проблему решил.
Причин ошибки две:
1) В .NET элементы массива могут храниться не единым массивом, даже если это структуры, а не классы (непроверенные данные). В итоге всё-таки выделил новый кусок памяти и скопировал в него данные из массива.
2) Ошибка в подсчётах размеров и неверный тип данных (значение, вместо указателя) в одной из структур.
Нашёл и ликвидировал, создав в С++ DLL, с заглушками для функций, принимающих подобные параметры, после чего смотрел — как смаршаленые значения выглядят в Unmanaged памяти.
Спасибо за внимание.
"Хаос всегда побеждает порядок, поскольку лучше организован." (с) Терри Пратчетт