Marshalling C Struct com matriz de estruturas nele

Consultei as perguntas semelhantes neste fórum, mas não obtive a solução para o meu problema.

Eu tenho lutado com o problema do empacotamento por um tempo. Eu tenho uma estrutura que contém uma matriz de outra estrutura, a plataforma éWin CE. Estou usando o Visual Studio 2008 e o .NET CF 3.5.

O código:

Estruturas C:

 struct dot11Rate
 {
    unsigned int rate;
    unsigned char mode; 
 };

 typedef struct my_supported_rates
 {
    unsigned short n_rates;
    struct dot11Rate srates[36];
    unsigned char  isSet;
    unsigned char no_of_HTStreams;
 }MY_SUPPORTED_DATA_RATES;

O tamanho da estrutura MY_SUPPORTED_DATA_RATES é296 bytes noC

Esta é minha tentativa de convertê-lo em uma estrutura C #:

C # convertido:

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    public struct dot11Rate
    {
        public uint rate;
        public byte mode; /* HT=1, non-HT=0*////
    };

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    public struct my_supported_rates
    {       
        public ushort n_rates;
        [MarshalAs(UnmanagedType.ByValArray,SizeConst = 36)]
        public dot11Rate[] srates;
        public byte isSet;
        public byte no_of_HTStreams;
    };

Aqui estou recebendo o tamanho304 bytes usandoMarshal.SizeOf(my_supported_rates);

Eu tentei as seguintes coisas sem sucesso:

Adicionando e removendo vários elementos de atribuição no atributo MarshalAs na estrutura my_supported_rates, comoArraySubType = UnmanagedType.StructEu tenho Intptr com os dados necessários e tentei converter ptr para a estrutura usando o códigomy_supported_rates = (my_supported_rates) Marshal.PtrToStructure(ptr,my_supported_rates.GetType());. Mas a conversão adequada não aconteceu.Algumas outras sugestões em blogs e StackOverflow que não se mostraram úteis para mim

questionAnswers(1)

yourAnswerToTheQuestion