Wenn FreespaceDeviceId als int typedefd ist gehts sogar noch einfacher.
numIds wird nie größer werden als pList.Length. D.h. bei einem Element wird numIds entweder 0 sein(kein Device gefunden) oder 1.
Man kann sich das ganze sogar noch etwas einfacher machen, für den Fall, dass man nur ein Element holen will:
dabei rufst du es immer mit einer festen listSize von 1 auf und gibst die variable, die du zur deviceID gesetzt haben will als ersten Parameter, dann brauchst du kein Array dazwischen.
VB.NET-Quellcode
- <DllImport("libfreespace.dll",CallingConvention=...)>
- Public Shared Function freespace_getDeviceList(ByVal FreespaceDeviceId() As Int32, ByVal listSize As Int32, ByRef listSizeOut As Int32) As Int32
- End Function
- Private numIds As Integer
- Dim pList() As Int32 = new Int32(0){}//daran werd ich mich nie gewöhnen
- rc = Sensor.freespace_getDeviceList(pList, pList.Length, numIds)
numIds wird nie größer werden als pList.Length. D.h. bei einem Element wird numIds entweder 0 sein(kein Device gefunden) oder 1.
Man kann sich das ganze sogar noch etwas einfacher machen, für den Fall, dass man nur ein Element holen will:
dabei rufst du es immer mit einer festen listSize von 1 auf und gibst die variable, die du zur deviceID gesetzt haben will als ersten Parameter, dann brauchst du kein Array dazwischen.
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---
---Leer---