Ich habe einige Schwierigkeiten bei der Festlegung einer Struktur, die einen Zeiger auf ein Array von Kurzschlüssen in meinem verwalteten Code enthält. Die Struktur sieht wie folgt aus:Marshalling eines Zeigers auf ein Array von Typen (verwaltetes C# -> nicht verwaltetes C++)
typedef struct
{
short size;
unsigned short** shortValues;
} UnmanagedStruct;
Speicher für ‚shortValues
‘ innerhalb unmanaged Code zugeordnet ist - also auch wenn das Feld zu einer Reihe von kurzen Werten ein zusätzlicher Dereferenzierungsebene einfach ein Zeiger wurde hinzugefügt, so dass Der zugewiesene Speicher wird vom Aufrufer (verwalteter Code) ebenfalls gesehen. Das Feld 'size
' repräsentiert die Anzahl der Elemente im Array. Wie stelle ich dies in verwaltetem Code dar?
Ich dachte, ich würde es nur in einem IntPtr
übergeben, dann konnte ich nicht herausfinden, wie auf die Werte zugreifen, sobald der unmanaged Anruf zurückkehrt.
Dieser Code sieht genau richtig für mich. Danke dtb! Während ich Ihre Aufmerksamkeit habe, kann ich noch eine Frage stellen? Ich habe es in einem anderen Thread gepostet: http://stackoverflow.com/questions/1323797/marshaling-pointer-to-an-array-of-strings – Dilip
BTW: es ist besser, Ihre Frage zu aktualisieren als eine Antwort auf Ihre Post Frage mit neuen Details. Auch, wenn eine Antwort Ihr Problem löst, vergessen Sie nicht, es zu akzeptieren! :) – dtb
@ dtb: Ich muss hier blind sein, aber wie akzeptiere ich eine Antwort? – Dilip