Das ist doch ein wenig unperformant, wenn man für jedes Byte den Marshaller anwerfen muss.
Code:
int size = Marshal.SizeOf(myStruct);
byte[] retArr = new byte[size];
IntPtr p = Marshal.AllocHGlobal(size);
try {
Marshal.StructureToPtr(myStruct, p, false);
Marshal.Copy(p, retArr, size);
}
finally {
Marshal.FreeHGlobal(p);
}
return retArr;