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
Wahrscheinlich erwartet die Funktion einen Zeiger auf das erste Element des Arrays. Du solltest das Array nur vor der Übergabe mit lock sperren.
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
Probier mal Marshal.StructToPointer (oder so ähnlich)