Hallo,
ich versuche erfolglos einen DLLcall auszuführen. Die ersten beiden calls funktionieren, der dritte call weigert sich beharrlich was sinnvolles, also die Seriennummer zurückzugeben. Das Array $snIOW bleibt schlicht leer.
Code
Global $dllIOW, $rslt1IOW, $rslt2IOW, $ptrIOW[16], $snIOW[9]
;Dll öffnen
$dllIOW = DllOpen("iowkit.dll")
;IOWhandle übergeben
$ptrIOW = DllCall($dllIOW, "ptr", "IowKitOpenDevice")
;Anzahl der angeschlossenen Bausteine abfragen
$rslt1IOW = DllCall($dllIOW, "int", "IowKitGetNumDevs")
;ProductID abfragen
$rslt2IOW = DllCall($dllIOW, "dword", "IowKitGetProductId", "ptr", $ptrIOW[0])
;Seriennummer auslesen
DllCall($dllIOW, "char", "IowKitGetSerialNumber", "ptr", $ptrIOW[0], "wchar", $snIOW)
;IOWhandle freigeben
DllCall($dllIOW, "int", "IowKitCloseDevice", "ptr", $ptrIOW)
;Dll schließen
DllClose($dllIOW)
;Anzeige
GUICtrlSetData($edt1IOW, "NUM " & $rslt1IOW[0])
GUICtrlSetData($edt2IOW, "PID " & "0x" & Hex($rslt2IOW[0]))
GUICtrlSetData($edt3IOW, "S/N " & $snIOW)
Alles anzeigen
Der entsprechende Aufruf aus "C" heraus funktioniert:
PVOID devHandle;
int numIows;
WCHAR sn[9];
// Open device
devHandle = IowKitOpenDevice();
// Get number of IOWs in system
numIows = IowKitGetNumDevs();
// Get device handle and init object
devHandle = IowKitGetDeviceHandle();
// Get serial number
IowKitGetSerialNumber(devHandle, sn);
Kann mir jemand sagen was ich falsch mache?
Gruß
Freitag