Laden...

Zeiger (IntPtr) auf eine Struktur (array)

Erstellt von steffen_dec vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.569 Views
S
steffen_dec Themenstarter:in
322 Beiträge seit 2007
vor 16 Jahren
Zeiger (IntPtr) auf eine Struktur (array)

Hallo Leute,

ich muss eine schnittstelle einbinden,,,

diese hat eigene Typen und Strukturen...

eines davon ist diese:

OPCITEMRESULT[] m_pItemResult;

nun muss ich eine Funktion aufrufen die diesen Array als Zeiger (out IntPtr) haben möchte...

wie mach ich das?
oder wie kann man einfach einen IntPtr in ein StrukturArray umwandeln?

Danke
Steffen

5.742 Beiträge seit 2007
vor 16 Jahren

Wahrscheinlich erwartet die Funktion einen Zeiger auf das erste Element des Arrays. Du solltest das Array nur vor der Übergabe mit lock sperren.

S
steffen_dec Themenstarter:in
322 Beiträge seit 2007
vor 16 Jahren

Ja die Funktion erwartet einen Zeiger auf das Array, nur wie mache ich das?

ich hab so probiert:


OPCITEMRESULT[] m_pItemResult;
IntPtr pItemResult = IntPtr.Zero;
pItemResult = (IntPtr)m_pItemResult[0];
m_item.AddItems(4, m_Items, out pItemResult, out pErrors);

es geht hier um den dritten Parameter von AddItems, diese Funktion ist so definiert:

void AddItems(int dwCount, OPCITEMDEF[] pItemArray, out IntPtr ppAddResults, out IntPtr ppErrors)

wenn ich es so mache wie ich geschrieben habe, dann Spuckt mir der Kompiler diesen Fehler:

Eine Konvertierung vom Typ "OpcRcw.Da.OPCITEMRESULT" in "System.IntPtr" ist nicht möglich.

Hat jemand eine Idee?
wie kann man einen IntPtr auf einen Array (vom beliebigen Typ) umbiegen?

Gruß
Steffen

5.742 Beiträge seit 2007
vor 16 Jahren

Probier mal Marshal.StructToPointer (oder so ähnlich)