Преобразование структуры C / C ++ в C # .Net CF WinCE

Привет, я пытаюсь преобразовать C / C ++ Strcut в C #

C / C ++ Struct выглядит так:

         typedef struct _NDISUIO_QUERY_OID
{
NDIS_OID        Oid;
PTCHAR          ptcDeviceName;
UCHAR           Data[sizeof(ULONG)];
} NDISUIO_QUERY_OID, *PNDISUIO_QUERY_OID;

Мой C # Struct это:

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]

public struct _NDISUIO_QUERY_OID
{
public uint        Oid;
[MarshalAs(UnmanagedType.LPWStr)]
public string          ptcDeviceName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8*sizeof(uint))]
public string Data;
};

Я немного сомневался в преобразованной структуре, кто-нибудь может прояснить мне это преобразование?

Если возможно, кто-нибудь, пожалуйста, сообщите мне какие-либо учебные пособия или некоторые ссылки, которые полезны для преобразования типов данных или структур из c / c ++ в C # .Net CF.

Спасибо 🙂

1

Решение

В предыдущий ваш вопрос, @ctacke сказал, что вы не сможете использовать MarshalAs(UnmanagedType.LPWStr) с компактным каркасом. Он утверждал, что вы должны будете объявить это поле как IntPtrи маршал это вручную.

Тем не менее, это Документ MSDN говорится, что MarshalAs(UnmanagedType.LPWStr) работает под компактными рамками. Полагаю, я склонен верить документам MSDN.

Последний член также объявлен неправильно. SizeConst должно быть sizeof(uint),

2

Другие решения

Других решений пока нет …