Как можно упорядочить массивы символов в следующем определении структуры? в .Net CompactFramework (для Windows CE)
// Структура запроса на транзакцию
typedef struct _VXN_REQUEST
{
char DID [33];
char MID [33];
char TID [33];
char ClientRef [33];
char Payload [8192];
ULONG PayloadLength;
} VXN_REQUEST, *LPVXN_REQUEST;
Я пытался это маршалировать, но это не сработало
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)]
public struct VXN_REQUEST
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
public string DID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
public string MID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
public string TID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
public string ClientRef;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
public string Payload;
public uint PayloadLength;
}
Также пробовал вот так, но ни один из них не работает, нативный код воспринимает его как один символ.
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct VXN_REQUEST
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)]
public char[] DID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)]
public char[] MID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)]
public char[] TID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)]
public char[] ClientRef;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)]
public char[] Payload;
public uint PayloadLength;
}