У меня есть такая структура C ++:
typedef struct _FILE_OP_BLOCK
{
unsigned short fid; // objective file ID
unsigned short offset; // operating offset
unsigned char len; // buffer length(update)
// read length(read)
unsigned char buff[240];
} FILE_OP_BLOCK;
А теперь я хочу отобразить это в .Net. Хитрость заключается в том, что я должен передать 2-байтовый массив для fid
и целое число для len
, хотя в C # fid
это unsigned short
и len
это unsigned char
Интересно, правильна ли моя структура (в C #) ниже?
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Auto)]
public struct File_OP_Block
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] fid;
public ushort offset;
public byte length;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 240)]
public char[] buff;
}