Marshalling Inline Arrays
-
Does anyone know the correct way of marshalling inline multi-dimensional arrays? I have the following structure that I want to reproduce in C#: typedef struct tagMyStruct { WORD Version; char szName[3][256]; } MyStruct, *MyStruct; Now if this was just an inline array: typedef struct tagMyStruct { WORD Version; char szName[256]; } MyStruct, *MyStruct; You do this: [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] public struct MyStruct { public int Version; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=257)] public string szName; } But it is not, so it is not that easy. I have tried, without success: [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] public struct MyStruct { public int Version; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=257)] public string name1; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=257)] public string name2; [MarshalAs(UnmanagedType.ByValTStr, SizeConst=257)] public string name3; } Any ideas? David M. Kean My Blog: Managed from Down Under