Ich möchte einige Daten von C# nach C++ übergeben. Diese Daten bestehen aus struct und guid. Da guid Klasse ist, habe ich mich entschieden, sie sofort nach den struct-Daten zu kopieren. Gibt es einen besseren Weg, dies zu tun? Diese Lösung funktioniert und Daten werden in C++ korrekt gelesen, aber ich bin etwas besorgt, ob es Fälle gibt, in denen dies nicht funktionieren würde.Marshalled Struktur gefolgt von Daten fester Größe
Struct:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct TEST_STRUCT
{
public Uint32 var1;
public Uint32 var2;
}
Verwendung:
TEST_STRUCT testStruct = new TEST_STRUCT(); // filled somewhere
byte [] guid; // defined above
IntPtr mem = Marshal.AllocHGlobal(Marshal.SizeOf(testStruct.GetType()) + guid.Length);
try
{
Marshal.StructureToPtr(testStruct, mem, false);
Marshal.Copy(guid, 0, new IntPtr(mem.ToInt64() + Marshal.SizeOf(testStruct.GetType())), guid.Length);
// send data to c++ ...
}
finally
{
Marshal.FreeHGlobal(mem);
}
Sie sind richtig, Daten wurden korrekt übertragen. Kannst du es separat posten, damit ich es als Antwort markieren kann? – Geralt