Скорее всего я что-то не знаю, но пока у меня проблемка:
1. Я так понял, что маршалинг требует задание размера строки в виде константы. 
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public struct DoStr2
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
            public string str1;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
            public string str2;
        }
Но эти 10 и 20 потребуются мне не только в описании структуры, но и в других местах.
Как я могу определить это в каком-нибуть одном месте, а потом использовать везде?
2. Возможно есть другие форматы маршалинга?