IntPtr hat nicht wirklich ein äquivalent in C/C++. IntPtr kann man für alles verwenden was nen Pointer will. Man könnte sogar IntPtr verwenden um ein int/long(abhängig von Architektur) zu übergeben.
Edit: mir ist noch aufgefallen, dass es in C++ intptr_t gibt. Was aber eben nur ein typedef auf long/long long sein dürfte, aber eben auch abhängig von architektur.
Was man jedoch hier haben will ist nicht ein C-Array(was ja eigt. nur ein pointer auf memory währe), sondern eben ein Pointer der verwendet wurde um eine Referenz zu übergeben, schließlich soll nach dem auslesen pnX/pnY/... Werte enthalten, die von der Funktion ausgelesen werden.
Was aber eben mit DllImport möglich ist, ist dass du einfach ref int ... verwenden kannst. Der marshallt dies zu einem int* ... und du bekommst deine Werte korrekt zurück...
Edit: mir ist noch aufgefallen, dass es in C++ intptr_t gibt. Was aber eben nur ein typedef auf long/long long sein dürfte, aber eben auch abhängig von architektur.
Was man jedoch hier haben will ist nicht ein C-Array(was ja eigt. nur ein pointer auf memory währe), sondern eben ein Pointer der verwendet wurde um eine Referenz zu übergeben, schließlich soll nach dem auslesen pnX/pnY/... Werte enthalten, die von der Funktion ausgelesen werden.
Was aber eben mit DllImport möglich ist, ist dass du einfach ref int ... verwenden kannst. Der marshallt dies zu einem int* ... und du bekommst deine Werte korrekt zurück...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---
---Leer---