Das Problem liegt darin, daß folgender Code die o.g. Funktion nicht findet,
obwohl die setupapi.dll vorhanden und geöffnet wurde:
Code: Alles auswählen
OpenLibrary(0,"hid.dll")
OpenLibrary(1,"setupapi.dll")
Debug IsFunction(0,"HidD_GetHidGuid")
Debug IsFunction(1,"SetupDiGetClassDevs")
*HidGuid=AllocateMemory(16) ;128bit HID Guid
CallFunction(0,"HidD_GetHidGuid",*HidGuid)
Debug DeviceInfoSet=CallFunction(1,"SetupDiGetClassDevs",*HidGuid,"",0,$2 Or $10)
;VB Code:
;Public Const DIGCV_PRESENT = &H2
;Public Const DIGCV_DEVICEINTERFACE = &H10
;DeviceInfoSet = SetupDiGetClassDevs _
; (HidGuid, _
; vbNullString, _
; 0, _
; (DIGCF_PRESENT Or DIGCF_DEVICEINTERFACE))
End
Die Funktionsbeschreibung findet man auf:
http://msdn.microsoft.com/library/defau ... 5c.xml.asp
Die zweite Sache, mit der ich nicht zurechtkomme, ist der VB Parameter "vbNullString". Wie übergibt man ihn in Purebasic ?
Kann ich die Parameter $2 und $10 so einer Callfunction() übergeben ?
/// Edit:
Folgender Code scheint zu funktionieren:
Code: Alles auswählen
OpenLibrary(0,"hid.dll")
OpenLibrary(1,"setupapi.dll")
Debug IsFunction(0,"HidD_GetHidGuid")
Debug IsFunction(1,"SetupDiGetClassDevsA")
*HidGuid=AllocateMemory(16) ;128bit HID Guid
CallFunction(0,"HidD_GetHidGuid",*HidGuid)
Debug *DeviceInfoSet=CallFunction(1,"SetupDiGetClassDevsA",*HidGuid,0,0,$2|$10)
End
Ich weiß zwar nicht genau, was ein Alias in VB ist, aber jedenfalls bekomme ich einen Zeiger.
Bei
Code: Alles auswählen
*DeviceInfoSet=CallFunction(1,"SetupDiGetClassDevsA",*HidGuid,"",0,$2|$10)
;oder
*DeviceInfoSet=CallFunction(1,"SetupDiGetClassDevsA",*HidGuid,0,0,$2 Or $10)
Vielen Dank für die Antwort(en)