Как маршалировать структуру, содержит массив переменного размера для C #?

Как мне упорядочить этот тип C ++?

Структура ABS_DATA используется для связывания произвольно длинного блока данных с информацией о длине. Объявленная длина массива Data равна 1, но фактическая длина задается элементом Length .

typedef struct abs_data {
  ABS_DWORD Length;
  ABS_BYTE Data[ABS_VARLEN];
} ABS_DATA;

Я пробовал следующий код, но он не работает. Переменная данных всегда пуста, и я уверен, что в ней есть данные.

[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
    public struct abs_data
    {
        /// ABS_DWORD->unsigned int
        public uint Length;

        /// ABS_BYTE[1]
       [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 1)]
        public string Data;
    }
18
задан Rob Kennedy 5 May 2011 в 18:26
поделиться