'HIDGuid.bas by Volta 10.04.2009 #Include Once "windows.bi" #Include Once "win\setupapi.bi" #Include Once "win\ocidl.bi" Type HIDD_ATTRIBUTES size As Dword VendorID As Word ProductID As Word VersionNumber As Word End Type Dim As HIDD_ATTRIBUTES HIDAttributes Type my_DEVICE_INTERFACE_DETAIL_DATA cbSize As Integer txt As ZString*160 End Type Dim As my_DEVICE_INTERFACE_DETAIL_DATA SPDEVICEINTERFACEDETAILDATA Dim HDEVINFO As hDevInfo Dim As SP_DEVINFO_DATA DeviceInfoData Dim As SP_DEVICE_INTERFACE_DATA Spdeviceinterfacedata Dim buffersize As Integer Dim hPort As HANDLE Dim As WString*128 WS Screen 18 Color ,1:Cls:Color 14, 1 Dim guid As GUID Dim guids As LPOLESTR Dim As Any Ptr hLib = DylibLoad( "hid.dll" ) Dim HidD_GetHidGuid As Sub(ByVal guidv As guid Ptr) _ = DyLibSymbol(hlib, "HidD_GetHidGuid") Dim HidD_GetAttributes As _ Function(ByVal As HANDLE, ByVal As Any Ptr)As Integer _ = DyLibSymbol(hlib, "HidD_GetAttributes") Dim HidD_GetManufacturerString As _ Function(ByVal As HANDLE, ByVal As Any Ptr, ByVal As Integer)As Integer _ = DyLibSymbol(hlib, "HidD_GetManufacturerString") Dim HidD_GetProductString As _ Function(ByVal As HANDLE, ByVal As Any Ptr, ByVal As Integer)As Integer _ = DyLibSymbol(hlib, "HidD_GetProductString") Dim HidD_GetSerialNumberString As _ Function(ByVal As HANDLE, ByVal As Any Ptr, ByVal As Integer)As Integer _ = DyLibSymbol(hlib, "HidD_GetSerialNumberString") If hLib = 0 Then Print "Dylibload(hid.dll) failed" Sleep : End Else HidD_GetHidGuid(@guid) StringFromIID(@guid,@guids) Print "USB_HID_GUID: ";*guids End If hDevInfo = SetupDiGetClassDevs(@guid,0,0,DIGCF_PRESENT Or DIGCF_DEVICEINTERFACE) If hDevInfo = INVALID_HANDLE_VALUE Then Print "SetupDiGetClassDevs failed" Sleep : End End If DeviceInfoData.cbSize = SizeOf(SP_DEVINFO_DATA) SetupDiEnumDeviceInfo(hDevInfo, 0, @DeviceInfoData) StringFromIID(@DeviceInfoData. ClassGuid, @guids) Print "ClassGuid: " ; *guids Dim MemberIndex As Integer Do Spdeviceinterfacedata.cbSize = SizeOf(SP_DEVICE_INTERFACE_DATA) If SetupDiEnumDeviceInterfaces(hDevInfo, 0, @guid, MemberIndex, _ @SpDeviceInterfaceData) = 0 Then If GetLastError() = ERROR_NO_MORE_ITEMS Then Exit Do EndIf StringFromIID(@Spdeviceinterfacedata.InterfaceClassGuid, @guids) Print :Print "InterfaceClassGuid: " ; *guids buffersize=SizeOf(my_DEVICE_INTERFACE_DETAIL_DATA) SPDEVICEINTERFACEDETAILDATA.cbSize = 5 'Bullshit :( If SetupDiGetDeviceInterfaceDetail(hDevInfo, @Spdeviceinterfacedata, _ Cast(Any Ptr, @SPDEVICEINTERFACEDETAILDATA), buffersize, 0, 0) = 0 Then If GetLastError() = ERROR_INSUFFICIENT_BUFFER Then Exit Do End If Print "DevicePathName: " ; SPDEVICEINTERFACEDETAILDATA.txt SetLastError(0) hPort = CreateFile(StrPtr(SPDEVICEINTERFACEDETAILDATA.txt), _ GENERIC_READ Or GENERIC_WRITE, _ FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0) If hPort = 0 Then Exit Do If GetLastError() Then Exit Do HIDAttributes.size = SizeOf(HIDD_ATTRIBUTES) HidD_GetAttributes(hPort, @HIDAttributes) If GetLastError() Then Exit Do Print "VendorID: " ; Hex(HIDAttributes.VendorID, 4) Print "ProductID: " ; Hex(HIDAttributes.ProductID, 4) Print "VersionNumber: " ; Hex(HIDAttributes.VersionNumber, 4) If HidD_GetManufacturerString(hPort,StrPtr(WS), 128) Then _ Print "Manufacturer: " ; WS If HidD_GetProductString(hPort,StrPtr(WS), 128) Then _ Print "Product: " ; WS If HidD_GetSerialNumberString(hPort,StrPtr(WS), 128) Then _ Print "SerialNumber: " ; WS MemberIndex = MemberIndex + 1 Loop SetupDiDestroyDeviceInfoList @hDevInfo If hPort Then CloseHandle(hPort) If hLib Then DylibFree hLib Sleep