Salve a tutti sono nuovo e sto letteralmente impazzendo nel cercare di gestire una DLL standard call in un progetto vb2008 devo utilizzare questa funzione per prendere dei valori di temperatura da un apparecchio collegato al PC tramite USB:

dal file .h della DLL risulta:

DllExport BOOL _stdcall GetPCBTemperature(DWORD Card, DWORD *Temp);

dove Temp è Temp[3] DWORD

che ho tradotto in un modulo vb:

Imports System.Runtime.InteropServices

<DllImport("BoxDLL.dll", EntryPoint:="GetPCBTemperature", ExactSpelling:=False, CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Public Function GetPCBTemperature(ByVal Card As UInteger, ByRef Temp() As UInteger) As Boolean
End Function

e che richiamo come:

Dim T() As UInteger = {0, 0, 0}
Debug.Print(GetPCBTemperature(1, T))

ma mi restituisce sempre T=Nothing

Ho provato anche con:

Imports System.Runtime.InteropServices

<DllImport("BoxDLL.dll", EntryPoint:="GetPCBTemperature", ExactSpelling:=False, CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Public Function GetPCBTemperature(ByVal Card As UInteger, ByRef Temp As IntPtr) As Boolean
End Function

Dim T() As UInteger = {0, 0, 0}
Debug.Print(GetPCBTemperature(1, T(0)))

e il risultato è = {0, 0, 0} (con il caldo che fa oggi ! :berto: )

Non ero molto preparato sull'argomento, dopo essermi documentato un po' adesso posso dire di aver raggiunto un bun stato confusionale !!!

Qualcuno ha giò affrontato questi problemi?