Hallo,
Marshal.SizeOf() wirft mir eine ArgumentException mit der Nachricht "Es kann keine sinnvolle Größe oder sinnvoller Offset berechnet werden, da der Typ "dhcp_test.DHCPPacket" nicht als nicht verwaltete Struktur gemarshallt werden kann." wenn ich die Größe meiner Struct bestimmen will.
Die Struct sieht so aus:
public struct DHCPPacket
{
public byte op;
public byte htype;
public byte hlen;
public byte hops;
public uint xid;
public ushort secs;
public ushort flags;
public uint ciaddr;
public uint yiaddr;
public uint siaddr;
public uint giaddr;
[MarshalAs(UnmanagedType.AnsiBStr, SizeConst=64)]
public string sname;
[MarshalAs(UnmanagedType.AnsiBStr, SizeConst=128)]
public string file;
[MarshalAs(UnmanagedType.AnsiBStr, SizeConst=312)]
public string options;
}
Gibt es eine Möglichkeit Marshal dazu zu bringen, das es mit die korrekte Größe ausgibt?
mfg.
markus111
Hi, hast du mal versucht ihm explizit das Layout anzugeben?
//edit ansi statt unicode in deinem fall
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DHCPPacket
{
public byte op;
public byte htype;
.
.
.
}
Charset sollte für ihn ziemlich interessant sein! Davon hängt die Größe von sname bzw. file ab...