Я пытаюсь упорядочить структуру c ++, которая выглядит следующим образом:
typedef struct _SOME_STRUCT
{
DWORD count;
LPWSTR *items;
}
"items" - это массив LPWSTR (точное число указано "count"). В C # я представляю структуру как:
[StructLayoutAttribute(LayoutKind.Sequential)]
internal struct SOME_STRUCT
{
internal uint count;
internal IntPtr items;
}
Затем в моем коде я делаю что-то вроде этого (где mystruct имеет тип SOME_STRUCT):
if (mystruct.count > 0)
{
for (int x = 0; x < mystruct.count; x++)
{
IntPtr ptr = new IntPtr(mystruct.items.ToInt64() + IntPtr.Size * x);
string item = Marshal.PtrToStringAnsi(Marshal.ReadIntPtr(ptr));
}
}
Счет правильный, но строковый элемент искажен. Я уверен, что должен делать что-то глупое, поскольку у меня была эта работа с массивами других типов ... только не с LPWSTR.