PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OpenSource » Модуль для работы с USB HID (Windows, Linux, Arm Linux)


Модуль для работы с USB HID (Windows, Linux, Arm Linux)

Сообщений 1 страница 7 из 7

1

Сделал обертку для HidApi от signal11
Все исходники лежат https://github.com/Dadlick/hidapi
Сюда приложу скомпилированные библиотеки под Windows, Linux, Arm Linux и исходники на purebasic.
Архив: HidApi_purebasic.zip

+1

2

В процедуре Procedure.s Wchar_tToStr(*Mem) у меня не оказалось константы #PB_ByteLength.
Но вот это в тесте вобще буксануло как понял Hidapi_Library = GetCurrentDirectory() + "hidapi.dll"

Код:
CompilerSelect #PB_Compiler_OS 
  CompilerCase #PB_OS_Windows   
    Hidapi_Library = GetCurrentDirectory() + "hidapi.dll"
    Debug Hidapi_Library
  CompilerCase #PB_OS_Linux   
   Hidapi_Library = GetCurrentDirectory() + "libhidapi.so"   
CompilerEndSelect 

Так как дллка в другой папке,соответственно требуется не только линукс и винду указать но и разрядность операционки и сразу определять папку с длл.
а так придётся к исходнику кидать в одну папку.

0

3

После правки вышеуказанного открылось пустое окно,видимо из за того что в процедуре Procedure hid_enum()
первый же вызов *devs= hid_enumerate(0,0) сразу в ауте(как видимо и другие будут),так как в .pbi только прототипы и процедуры без загрузки их с дллки. :dontknow:

0

4

Подправил загрузку процедур с длл так(без макроса)
И сразу такой результат что изначально мышь неотображает а как внешнию карту звуковую вставляю так сразу и мышь и её показывает в окне.

Код:
;{;Загрузка,выгрузка длл
PrototypeC.l hid_open(vendor_id.c, product_id.c,*serial_number)
PrototypeC.l hid_open_path(*path)
PrototypeC.i hid_write(*device, *Data, length.i)
PrototypeC.i hid_read(*device, *Data, length.i)
PrototypeC.i hid_read_timeout(*device, *Data, length.i, milliseconds.i )
PrototypeC   hid_close(*device)
PrototypeC.l hid_enumerate(vendor_id.u, product_id.u)
PrototypeC.i hid_send_feature_report(*device, *Data, length.i)
PrototypeC.i hid_get_feature_report(*device, *Data, length.i)
PrototypeC.i hid_get_manufacturer_string(*device, *string, maxlen.i)
PrototypeC.i hid_get_product_string(*device, *string, maxlen.i)
PrototypeC.i hid_get_serial_number_string(*device, *string, maxlen.i)
PrototypeC.i hid_get_indexed_string(*device, *string, maxlen.i)
PrototypeC.l hid_error(*device)
PrototypeC.l hid_enum_path(devs.l)
PrototypeC.u hid_enum_vendor_id(devs.l)
PrototypeC.u hid_enum_product_id(devs.l)
PrototypeC.l hid_enum_serial_number(devs.l)
PrototypeC.u hid_enum_release_number(devs.l)
PrototypeC.l hid_enum_manufacturer_string(devs.l)
PrototypeC.l hid_enum_product_string(devs.l)
PrototypeC.l hid_enum_next(devs.l)
PrototypeC.i hid_wchart_size()
PrototypeC   hid_free_enumeration(devs.l)
PrototypeC.i hid_set_nonblocking(*device, nonblock.i)
Global hid_open.hid_open
Global hid_open_path.hid_open_path
Global hid_write.hid_write
Global hid_read.hid_read
Global hid_read_timeout.hid_read_timeout
Global hid_close.hid_close
Global hid_enumerate.hid_enumerate
Global hid_free_enumeration.hid_free_enumeration
Global hid_set_nonblocking.hid_set_nonblocking
Global hid_send_feature_report.hid_send_feature_report
Global hid_get_feature_report.hid_get_feature_report
Global hid_get_manufacturer_string.hid_get_manufacturer_string
Global hid_get_product_string.hid_get_product_string
Global hid_get_serial_number_string.hid_get_serial_number_string
Global hid_get_indexed_string.hid_get_indexed_string
Global hid_error.hid_error
Global hid_enum_path.hid_enum_path
Global hid_enum_vendor_id.hid_enum_vendor_id
Global hid_enum_product_id.hid_enum_product_id
Global hid_enum_serial_number.hid_enum_serial_number
Global hid_enum_release_number.hid_enum_release_number
Global hid_enum_manufacturer_string.hid_enum_manufacturer_string
Global hid_enum_product_string.hid_enum_product_string
Global hid_enum_next.hid_enum_next
Global hid_wchart_size.hid_wchart_size

Global hid_dll.i
Procedure Hidapi_Free_Library()
  CloseLibrary(hid_dll)
EndProcedure
Procedure.i Hidapi_Load_Library()
  Protected Hidapi_Library.s
  
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows   
    Hidapi_Library = GetCurrentDirectory() + "hidapi.dll"
CompilerCase #PB_OS_Linux   
   Hidapi_Library = GetCurrentDirectory() + "libhidapi.so"
CompilerEndSelect 

If Hidapi_Library =""
	Debug "Failed to load hidapi"
	End
EndIf
;
	hid_dll = OpenLibrary(#PB_Any, Hidapi_Library)
	If hid_dll<>0
hid_open.hid_open=GetFunction(hid_dll,"hid_open")  
hid_open_path.hid_open_path=GetFunction(hid_dll,"hid_open_path") 
hid_write.hid_write=GetFunction(hid_dll,"hid_write")  
hid_read.hid_read=GetFunction(hid_dll,"hid_read") 
hid_read_timeout.hid_read_timeout=GetFunction(hid_dll,"hid_read_timeout")
hid_close.hid_close=GetFunction(hid_dll,"hid_close")
hid_enumerate.hid_enumerate=GetFunction(hid_dll,"hid_enumerate")
hid_free_enumeration.hid_free_enumeration=GetFunction(hid_dll,"hid_free_enumeration")
hid_set_nonblocking.hid_set_nonblocking=GetFunction(hid_dll,"hid_set_nonblocking")  
hid_send_feature_report.hid_send_feature_report=GetFunction(hid_dll,"hid_send_feature_report") 
hid_get_feature_report.hid_get_feature_report=GetFunction(hid_dll,"hid_get_feature_report")  
hid_get_manufacturer_string.hid_get_manufacturer_string=GetFunction(hid_dll,"hid_get_manufacturer_string") 
hid_get_product_string.hid_get_product_string=GetFunction(hid_dll,"hid_get_product_string")
hid_get_serial_number_string.hid_get_serial_number_string=GetFunction(hid_dll,"hid_get_serial_number_string")
hid_get_indexed_string.hid_get_indexed_string=GetFunction(hid_dll,"hid_get_indexed_string")
hid_error.hid_error=GetFunction(hid_dll,"hid_error")
hid_enum_path.hid_enum_path=GetFunction(hid_dll,"hid_enum_path")  
hid_enum_vendor_id.hid_enum_vendor_id=GetFunction(hid_dll,"hid_enum_vendor_id") 
hid_enum_product_id.hid_enum_product_id=GetFunction(hid_dll,"hid_enum_product_id")  
hid_enum_serial_number.hid_enum_serial_number=GetFunction(hid_dll,"hid_enum_serial_number") 
hid_enum_release_number.hid_enum_release_number=GetFunction(hid_dll,"hid_enum_release_number")
hid_enum_manufacturer_string.hid_enum_manufacturer_string=GetFunction(hid_dll,"hid_enum_manufacturer_string")
hid_enum_product_string.hid_enum_product_string=GetFunction(hid_dll,"hid_enum_product_string")
hid_enum_next.hid_enum_next=GetFunction(hid_dll,"hid_enum_next")
hid_wchart_size.hid_wchart_size=GetFunction(hid_dll,"hid_wchart_size")  
  ProcedureReturn #True
Else
  MessageRequester("ERROR", "hid_dll не загружена")
  End
   ;ProcedureReturn #False
EndIf
EndProcedure
;};

И в тесте сразу на загрузку процедур

Код:
XIncludeFile "HidApi.pbi"
Hidapi_Load_Library()

ps:как я понял на саму дллку нет исходников на гитхабе?

Отредактировано Sergeihik (10.12.2022 00:09:20)

0

5

Sergeihik написал(а):

как я понял на саму дллку нет исходников на гитхабе?

Все есть на гитхабе, исходники на dll windows, лежат в папке windows

0

6

Тема интересна мне но как я созрею? упор сделал на трее гаджете самописном,так как стандартный не отрабатывает скорость работы,а я хочу в рамках диалогового  окна получить результат всех устройств(возможно и их характеристики)а после уже сделать выбор устройства для дальнейших действии и общения с ним.
PS:как я понял гллянув мельком(да и о чём выше писал) получение списка устойств на githab  самописное а не библиотека(ки) hid из WinDDK?

0

7

Мои из наработоки.

Код:
;{;Setupapi
Import "C:\Users\d\Desktop\Redactor_coda\hid\hid_dll\setupapi.lib"
CMP_GetBlockedDriverInfo()
CMP_GetServerSideDeviceInstallFlags()
CMP_Init_Detection()
CMP_RegisterNotification()
CMP_Report_LogOn()
CMP_UnregisterNotification()
CMP_WaitNoPendingInstallEvents()
CMP_WaitServicesAvailable()
CM_Add_Driver_PackageW()
CM_Add_Empty_Log_Conf()
CM_Add_Empty_Log_Conf_Ex()
CM_Add_IDA()
CM_Add_IDW()
CM_Add_ID_ExA()
CM_Add_ID_ExW()
CM_Add_Range()
CM_Add_Res_Des()
CM_Add_Res_Des_Ex()
CM_Apply_PowerScheme()
CM_Connect_MachineA()
CM_Connect_MachineW()
CM_Create_DevNodeA()
CM_Create_DevNodeW()
CM_Create_DevNode_ExA()
CM_Create_DevNode_ExW()
CM_Create_Range_List()
CM_Delete_Class_Key()
CM_Delete_Class_Key_Ex()
CM_Delete_DevNode_Key()
CM_Delete_DevNode_Key_Ex()
CM_Delete_Device_Interface_KeyA()
CM_Delete_Device_Interface_KeyW()
CM_Delete_Device_Interface_Key_ExA()
CM_Delete_Device_Interface_Key_ExW()
CM_Delete_Driver_PackageW()
CM_Delete_PowerScheme(a, b)
CM_Delete_Range()
CM_Detect_Resource_Conflict()
CM_Detect_Resource_Conflict_Ex()
CM_Disable_DevNode()
CM_Disable_DevNode_Ex()
CM_Disconnect_Machine()
CM_Dup_Range_List()
CM_Duplicate_PowerScheme(a, b, c)
CM_Enable_DevNode()
CM_Enable_DevNode_Ex()
CM_Enumerate_Classes()
CM_Enumerate_Classes_Ex()
CM_Enumerate_EnumeratorsA()
CM_Enumerate_EnumeratorsW()
CM_Enumerate_Enumerators_ExA()
CM_Enumerate_Enumerators_ExW()
CM_Find_Range()
CM_First_Range()
CM_Free_Log_Conf()
CM_Free_Log_Conf_Ex()
CM_Free_Log_Conf_Handle()
CM_Free_Range_List()
CM_Free_Res_Des()
CM_Free_Res_Des_Ex()
CM_Free_Res_Des_Handle()
CM_Free_Resource_Conflict_Handle()
CM_Get_Child()
CM_Get_Child_Ex()
CM_Get_Class_Key_NameA()
CM_Get_Class_Key_NameW()
CM_Get_Class_Key_Name_ExA()
CM_Get_Class_Key_Name_ExW()
CM_Get_Class_NameA()
CM_Get_Class_NameW()
CM_Get_Class_Name_ExA()
CM_Get_Class_Name_ExW()
CM_Get_Class_Registry_PropertyA()
CM_Get_Class_Registry_PropertyW()
CM_Get_Depth()
CM_Get_Depth_Ex()
CM_Get_DevNode_Custom_PropertyA()
CM_Get_DevNode_Custom_PropertyW()
CM_Get_DevNode_Custom_Property_ExA()
CM_Get_DevNode_Custom_Property_ExW()
CM_Get_DevNode_Registry_PropertyA()
CM_Get_DevNode_Registry_PropertyW()
CM_Get_DevNode_Registry_Property_ExA()
CM_Get_DevNode_Registry_Property_ExW()
CM_Get_DevNode_Status()
CM_Get_DevNode_Status_Ex()
CM_Get_Device_IDA()
CM_Get_Device_IDW()
CM_Get_Device_ID_ExA()
CM_Get_Device_ID_ExW()
CM_Get_Device_ID_ListA()
CM_Get_Device_ID_ListW()
CM_Get_Device_ID_List_ExA()
CM_Get_Device_ID_List_ExW()
CM_Get_Device_ID_List_SizeA()
CM_Get_Device_ID_List_SizeW()
CM_Get_Device_ID_List_Size_ExA()
CM_Get_Device_ID_List_Size_ExW()
CM_Get_Device_ID_Size()
CM_Get_Device_ID_Size_Ex()
CM_Get_Device_Interface_AliasA()
CM_Get_Device_Interface_AliasW()
CM_Get_Device_Interface_Alias_ExA()
CM_Get_Device_Interface_Alias_ExW()
CM_Get_Device_Interface_ListA()
CM_Get_Device_Interface_ListW()
CM_Get_Device_Interface_List_ExA()
CM_Get_Device_Interface_List_ExW()
CM_Get_Device_Interface_List_SizeA()
CM_Get_Device_Interface_List_SizeW()
CM_Get_Device_Interface_List_Size_ExA()
CM_Get_Device_Interface_List_Size_ExW()
CM_Get_First_Log_Conf()
CM_Get_First_Log_Conf_Ex()
CM_Get_Global_State()
CM_Get_Global_State_Ex()
CM_Get_HW_Prof_FlagsA()
CM_Get_HW_Prof_FlagsW()
CM_Get_HW_Prof_Flags_ExA()
CM_Get_HW_Prof_Flags_ExW()
CM_Get_Hardware_Profile_InfoA()
CM_Get_Hardware_Profile_InfoW()
CM_Get_Hardware_Profile_Info_ExA()
CM_Get_Hardware_Profile_Info_ExW()
CM_Get_Log_Conf_Priority()
CM_Get_Log_Conf_Priority_Ex()
CM_Get_Next_Log_Conf()
CM_Get_Next_Log_Conf_Ex()
CM_Get_Next_Res_Des()
CM_Get_Next_Res_Des_Ex()
CM_Get_Parent()
CM_Get_Parent_Ex()
CM_Get_Res_Des_Data()
CM_Get_Res_Des_Data_Ex()
CM_Get_Res_Des_Data_Size()
CM_Get_Res_Des_Data_Size_Ex()
CM_Get_Resource_Conflict_Count()
CM_Get_Resource_Conflict_DetailsA()
CM_Get_Resource_Conflict_DetailsW()
CM_Get_Sibling()
CM_Get_Sibling_Ex()
CM_Get_Version()
CM_Get_Version_Ex()
CM_Import_PowerScheme(a, b, c)
CM_Install_DevNodeW()
CM_Install_DevNode_ExW()
CM_Intersect_Range_List()
CM_Invert_Range_List()
CM_Is_Dock_Station_Present()
CM_Is_Dock_Station_Present_Ex()
CM_Is_Version_Available()
CM_Is_Version_Available_Ex()
CM_Locate_DevNodeA()
CM_Locate_DevNodeW()
CM_Locate_DevNode_ExA()
CM_Locate_DevNode_ExW()
CM_Merge_Range_List()
CM_Modify_Res_Des()
CM_Modify_Res_Des_Ex()
CM_Move_DevNode()
CM_Move_DevNode_Ex()
CM_Next_Range()
CM_Open_Class_KeyA()
CM_Open_Class_KeyW()
CM_Open_Class_Key_ExA()
CM_Open_Class_Key_ExW()
CM_Open_DevNode_Key()
CM_Open_DevNode_Key_Ex()
CM_Open_Device_Interface_KeyA()
CM_Open_Device_Interface_KeyW()
CM_Open_Device_Interface_Key_ExA()
CM_Open_Device_Interface_Key_ExW()
CM_Query_And_Remove_SubTreeA()
CM_Query_And_Remove_SubTreeW()
CM_Query_And_Remove_SubTree_ExA()
CM_Query_And_Remove_SubTree_ExW()
CM_Query_Arbitrator_Free_Data()
CM_Query_Arbitrator_Free_Data_Ex()
CM_Query_Arbitrator_Free_Size()
CM_Query_Arbitrator_Free_Size_Ex()
CM_Query_Remove_SubTree()
CM_Query_Remove_SubTree_Ex()
CM_Query_Resource_Conflict_List()
CM_Reenumerate_DevNode()
CM_Reenumerate_DevNode_Ex()
CM_Register_Device_Driver()
CM_Register_Device_Driver_Ex()
CM_Register_Device_InterfaceA()
CM_Register_Device_InterfaceW()
CM_Register_Device_Interface_ExA()
CM_Register_Device_Interface_ExW()
CM_Remove_SubTree()
CM_Remove_SubTree_Ex()
CM_Request_Device_EjectA()
CM_Request_Device_EjectW()
CM_Request_Device_Eject_ExA()
CM_Request_Device_Eject_ExW()
CM_Request_Eject_PC()
CM_Request_Eject_PC_Ex()
CM_RestoreAll_DefaultPowerSchemes(a)
CM_Restore_DefaultPowerScheme(a, b)
CM_Run_Detection()
CM_Run_Detection_Ex()
CM_Set_ActiveScheme(a, b)
CM_Set_Class_Registry_PropertyA()
CM_Set_Class_Registry_PropertyW()
CM_Set_DevNode_Problem()
CM_Set_DevNode_Problem_Ex()
CM_Set_DevNode_Registry_PropertyA()
CM_Set_DevNode_Registry_PropertyW()
CM_Set_DevNode_Registry_Property_ExA()
CM_Set_DevNode_Registry_Property_ExW()
CM_Set_HW_Prof()
CM_Set_HW_Prof_Ex()
CM_Set_HW_Prof_FlagsA()
CM_Set_HW_Prof_FlagsW()
CM_Set_HW_Prof_Flags_ExA()
CM_Set_HW_Prof_Flags_ExW()
CM_Setup_DevNode()
CM_Setup_DevNode_Ex()
CM_Test_Range_Available()
CM_Uninstall_DevNode()
CM_Uninstall_DevNode_Ex()
CM_Unregister_Device_InterfaceA()
CM_Unregister_Device_InterfaceW()
CM_Unregister_Device_Interface_ExA()
CM_Unregister_Device_Interface_ExW()
CM_Write_UserPowerKey(a, b, c, d, e, f, g, h)
DoesUserHavePrivilege(a)
DriverStoreAddDriverPackageA(a, b, c, d, e, f)
DriverStoreAddDriverPackageW(a, b, c, d, e, f)
DriverStoreDeleteDriverPackageA(a, b, c)
DriverStoreDeleteDriverPackageW(a, b, c)
DriverStoreEnumDriverPackageA(a, b)
DriverStoreEnumDriverPackageW(a, b)
DriverStoreFindDriverPackageA(a, b, c, d, e, f, g)
DriverStoreFindDriverPackageW(a, b, c, d, e, f, g)
ExtensionPropSheetPageProc()
InstallCatalog(a, b, c)
InstallHinfSection(a, b, c, d)
InstallHinfSectionA(a, b, c, d)
InstallHinfSectionW()
IsUserAdmin()
MyFree(a)
MyMalloc(a)
MyRealloc(a, b)
PnpEnumDrpFile(a, b)
PnpIsFileAclIntact(a, b)
PnpIsFileContentIntact(a, b)
PnpIsFilePnpDriver(a, b)
PnpRepairWindowsProtectedDriver()
SetupAddInstallSectionToDiskSpaceListA(a, b, c, d, e, f)
SetupAddInstallSectionToDiskSpaceListW(a, b, c, d, e, f)
SetupAddSectionToDiskSpaceListA(a, b, c, d, e, f, g)
SetupAddSectionToDiskSpaceListW(a, b, c, d, e, f, g)
SetupAddToDiskSpaceListA(a, b, c, d, e, f, g)
SetupAddToDiskSpaceListW()
SetupAddToSourceListA(a, b)
SetupAddToSourceListW(a, b)
SetupAdjustDiskSpaceListA(a, b, c, d, e, f)
SetupAdjustDiskSpaceListW()
SetupBackupErrorA(a, b, c, d, e, f)
SetupBackupErrorW(a, b, c, d, e, f)
SetupCancelTemporarySourceList()
SetupCloseFileQueue()
SetupCloseInfFile(a)
SetupCloseLog()
SetupCommitFileQueue(a, b, c, d)
SetupCommitFileQueueA(a, b, c, d)
SetupCommitFileQueueW(a, b, c, d)
SetupConfigureWmiFromInfSectionA()
SetupConfigureWmiFromInfSectionW(a, b, c)
SetupCopyErrorA(a, b, c, d, e, f, g, h, i, j, k)
SetupCopyErrorW(a, b, c, d, e, f, g, h, i, j, k)
SetupCopyOEMInfA()
SetupCopyOEMInfW(a, b, c, d, e, f, g, h)
SetupCreateDiskSpaceListA(a, b, c)
SetupCreateDiskSpaceListW(a, b, c)
SetupDecompressOrCopyFileA(a, b, c)
SetupDecompressOrCopyFileW(a, b, c)
SetupDefaultQueueCallback(a, b, c, d)
SetupDefaultQueueCallbackA(a, b, c, d)
SetupDefaultQueueCallbackW(a, b, c, d)
SetupDeleteErrorA(a, b, c, d, e)
SetupDeleteErrorW(a, b, c, d, e)
SetupDestroyDiskSpaceList()
SetupDiApplyPowerScheme()
SetupDiAskForOEMDisk()
SetupDiBuildClassInfoList()
SetupDiBuildClassInfoListExA()
SetupDiBuildClassInfoListExW()
SetupDiBuildDriverInfoList(a, b, c)
SetupDiCallClassInstaller(a, b, c)
SetupDiCancelDriverInfoSearch()
SetupDiChangeState()
SetupDiClassGuidsFromNameA()
SetupDiClassGuidsFromNameExA()
SetupDiClassGuidsFromNameExW()
SetupDiClassGuidsFromNameW()
SetupDiClassNameFromGuidA()
SetupDiClassNameFromGuidExA()
SetupDiClassNameFromGuidExW(a, b, c, d, e, f) As "SetupDiClassNameFromGuidExW"
SetupDiClassNameFromGuidW(a, b, c, d)
SetupDiCreateDevRegKeyA()
SetupDiCreateDevRegKeyW(a, b, c, d, e, f, g)
SetupDiCreateDeviceInfoA(a, b, c, d, e, f, g)
SetupDiCreateDeviceInfoList(a, b)
SetupDiCreateDeviceInfoListExA(a, b, c, d)
SetupDiCreateDeviceInfoListExW(a, b, c, d)
SetupDiCreateDeviceInfoW(a, b, c, d, e, f, g)
SetupDiCreateDeviceInterfaceA(a, b, c, d, e, f)
SetupDiCreateDeviceInterfaceRegKeyA()
SetupDiCreateDeviceInterfaceRegKeyW()
SetupDiCreateDeviceInterfaceW()
SetupDiDeleteDevRegKey()
SetupDiDeleteDeviceInfo()
SetupDiDeleteDeviceInterfaceData(a, b)
SetupDiDeleteDeviceInterfaceRegKey()
SetupDiDestroyClassImageList()
SetupDiDestroyDeviceInfoList(a)
SetupDiDestroyDriverInfoList(a, b, c)
SetupDiDrawMiniIcon()
SetupDiEnumDeviceInfo(a, b, c)
SetupDiEnumDeviceInterfaces(a, b, c, d, e)
SetupDiEnumDriverInfoA(a, b, c, d, e)
SetupDiEnumDriverInfoW(a, b, c, d, e)
SetupDiGetActualModelsSectionA()
SetupDiGetActualModelsSectionW(a, b, c, d, e, f)
SetupDiGetActualSectionToInstallA(a, b, c, d, e, f)
SetupDiGetActualSectionToInstallExA()
SetupDiGetActualSectionToInstallExW(a, b, c, d, e, f, g, h)
SetupDiGetActualSectionToInstallW(a, b, c, d, e, f)
SetupDiGetClassBitmapIndex()
SetupDiGetClassDescriptionA()
SetupDiGetClassDescriptionExA()
SetupDiGetClassDescriptionExW(a, b, c, d, e, f)
SetupDiGetClassDescriptionW(a, b, c, d)
SetupDiGetClassDevPropertySheetsA()
SetupDiGetClassDevPropertySheetsW()
SetupDiGetClassDevsA(a, b, c, d)
SetupDiGetClassDevsExA(a, b, c, d, e, f, g)
SetupDiGetClassDevsExW(a, b, c, d, e, f, g)
SetupDiGetClassDevsW(a, b, c, d)
SetupDiGetClassImageIndex()
SetupDiGetClassImageList()
SetupDiGetClassImageListExA()
SetupDiGetClassImageListExW()
SetupDiGetClassInstallParamsA()
SetupDiGetClassInstallParamsW(a, b, c, d, e)
SetupDiGetClassPropertyExW(a, b, c, d, e, f, g, h, i)
SetupDiGetClassPropertyKeys()
SetupDiGetClassPropertyKeysExW(a, b, c, d, e, f, g)
SetupDiGetClassPropertyW(a, b, c, d, e, f, g)
SetupDiGetClassRegistryPropertyA()
SetupDiGetClassRegistryPropertyW(a, b, c, d, e, f)
SetupDiGetCustomDevicePropertyA(a, b, c, d, e, f, g, h)
SetupDiGetCustomDevicePropertyW()
SetupDiGetDeviceInfoListClass()
SetupDiGetDeviceInfoListDetailA(a, b)
SetupDiGetDeviceInfoListDetailW(a, b)
SetupDiGetDeviceInstallParamsA()
SetupDiGetDeviceInstallParamsW(a, b, c)
SetupDiGetDeviceInstanceIdA()
SetupDiGetDeviceInstanceIdW(a, b, c, d, e)
SetupDiGetDeviceInterfaceAlias(a, b, c, d)
SetupDiGetDeviceInterfaceDetailA(a, b, c, d, e, f)
SetupDiGetDeviceInterfaceDetailW(a, b, c, d, e, f)
SetupDiGetDeviceInterfacePropertyKeys()
SetupDiGetDeviceInterfacePropertyW(a, b, c, d, e, f, g, h)
SetupDiGetDevicePropertyKeys()
SetupDiGetDevicePropertyW(a, b, c, d, e, f, g, h)
SetupDiGetDeviceRegistryPropertyA()
SetupDiGetDeviceRegistryPropertyW(a, b, c, d, e, f, g)
SetupDiGetDriverInfoDetailA()
SetupDiGetDriverInfoDetailW(a, b, c, d, e, f)
SetupDiGetDriverInstallParamsA(a, b, c, d)
SetupDiGetDriverInstallParamsW(a, b, c, d)
SetupDiGetHwProfileFriendlyNameA()
SetupDiGetHwProfileFriendlyNameExA()
SetupDiGetHwProfileFriendlyNameExW()
SetupDiGetHwProfileFriendlyNameW()
SetupDiGetHwProfileList()
SetupDiGetHwProfileListExA()
SetupDiGetHwProfileListExW()
SetupDiGetINFClassA()
SetupDiGetINFClassW(a, b, c, d, e)
SetupDiGetSelectedDevice()
SetupDiGetSelectedDriverA(a, b, c)
SetupDiGetSelectedDriverW(a, b, c)
SetupDiGetWizardPage()
SetupDiInstallClassA()
SetupDiInstallClassExA()
SetupDiInstallClassExW()
SetupDiInstallClassW()
SetupDiInstallDevice(a, b)
SetupDiInstallDeviceInterfaces(a, b)
SetupDiInstallDriverFiles(a, b)
SetupDiLoadClassIcon()
SetupDiLoadDeviceIcon(a, b, c, d, e, f)
SetupDiMoveDuplicateDevice(a, b)
SetupDiOpenClassRegKey()
SetupDiOpenClassRegKeyExA()
SetupDiOpenClassRegKeyExW(a, b, c, d, e, f)
SetupDiOpenDevRegKey(a, b, c, d, e, f)
SetupDiOpenDeviceInfoA(a, b, c, d, e)
SetupDiOpenDeviceInfoW(a, b, c, d, e)
SetupDiOpenDeviceInterfaceA(a, b, c, d)
SetupDiOpenDeviceInterfaceRegKey()
SetupDiOpenDeviceInterfaceW(a, b, c, d)
SetupDiRegisterCoDeviceInstallers(a, b)
SetupDiRegisterDeviceInfo(a, b, c, d, e, f)
SetupDiRemoveDevice()
SetupDiRemoveDeviceInterface()
SetupDiReportAdditionalSoftwareRequested()
SetupDiReportDeviceInstallError()
SetupDiReportDriverNotFoundError()
SetupDiReportDriverPackageImportationError()
SetupDiReportGenericDriverInstalled()
SetupDiReportPnPDeviceProblem()
SetupDiRestartDevices()
SetupDiSelectBestCompatDrv(a, b)
SetupDiSelectDevice()
SetupDiSelectOEMDrv()
SetupDiSetClassInstallParamsA()
SetupDiSetClassInstallParamsW(a, b, c, d)
SetupDiSetClassPropertyExW(a, b, c, d, e, f, g, h)
SetupDiSetClassPropertyW()
SetupDiSetClassRegistryPropertyA()
SetupDiSetClassRegistryPropertyW(a, b, c, d, e, f)
SetupDiSetDeviceInstallParamsA()
SetupDiSetDeviceInstallParamsW(a, b, c)
SetupDiSetDeviceInterfaceDefault()
SetupDiSetDeviceInterfacePropertyW()
SetupDiSetDevicePropertyW(a, b, c, d, e, f, g)
SetupDiSetDeviceRegistryPropertyA()
SetupDiSetDeviceRegistryPropertyW(a, b, c, d, e)
SetupDiSetDriverInstallParamsA(a, b, c, d)
SetupDiSetDriverInstallParamsW(a, b, c, d)
SetupDiSetSelectedDevice(a, b)
SetupDiSetSelectedDriverA(a, b, c)
SetupDiSetSelectedDriverW(a, b, c)
SetupDiUnremoveDevice()
SetupDuplicateDiskSpaceListA(a, b, c, d)
SetupDuplicateDiskSpaceListW()
SetupEnumInfSectionsA()
SetupEnumInfSectionsW(a, b, c, d, e)
SetupEnumPublishedInfA(a, b)
SetupEnumPublishedInfW(a, b)
SetupFindFirstLineA(a, b, c, d)
SetupFindFirstLineW(a, b, c, d, e)
SetupFindNextLine(a, b)
SetupFindNextMatchLineA(a, b, c)
SetupFindNextMatchLineW(a, b, c)
SetupFreeSourceListA(a, b)
SetupFreeSourceListW()
SetupGetBackupInformationA(a, b)
SetupGetBackupInformationW(a, b)
SetupGetBinaryField()
SetupGetFieldCount(a)
SetupGetFileCompressionInfoA()
SetupGetFileCompressionInfoExA()
SetupGetFileCompressionInfoExW()
SetupGetFileCompressionInfoW()
SetupGetFileQueueCount()
SetupGetFileQueueFlags(a, b)
SetupGetInfDriverStoreLocationA()
SetupGetInfDriverStoreLocationW(a, b, c, d, e, f)
SetupGetInfFileListA(a, b, c, d, e)
SetupGetInfFileListW(a, b, c, d, e)
SetupGetInfInformationA(a, b, c, d, e)
SetupGetInfInformationW()
SetupGetInfPublishedNameA()
SetupGetInfPublishedNameW(a, b, c, d)
SetupGetInfSections(a, b, c, d)
SetupGetIntField(a, b, c)
SetupGetLineByIndexA(a, b, c, d)
SetupGetLineByIndexW(a, b)
SetupGetLineCountA(a, b)
SetupGetLineCountW(a, b, c, d)
SetupGetLineTextA()
SetupGetLineTextW()
SetupGetMultiSzFieldA()
SetupGetMultiSzFieldW()
SetupGetNonInteractiveMode()
SetupGetSourceFileLocationA()
SetupGetSourceFileLocationW()
SetupGetSourceFileSizeA()
SetupGetSourceFileSizeW()
SetupGetSourceInfoA()
SetupGetSourceInfoW(a, b, c, d, e, f)
SetupGetStringFieldA()
SetupGetStringFieldW(a, b, c, d, e)
SetupGetTargetPathA()
SetupGetTargetPathW(a, b, c, d, e, f)
SetupGetThreadLogToken()
SetupInitDefaultQueueCallback(a)
SetupInitDefaultQueueCallbackEx(a, b, c, d, e)
SetupInitializeFileLogA(a, b)
SetupInitializeFileLogW(a, b)
SetupInstallFileA(a, b, c, d, e, f, g, h)
SetupInstallFileExA(a, b, c, d, e, f, g, h, i)
SetupInstallFileExW(a, b, c, d, e, f, g, h, i)
SetupInstallFileW(a, b, c, d, e, f, g, h)
SetupInstallFilesFromInfSectionA(a, b, c, d, e, f)
SetupInstallFilesFromInfSectionW(a, b, c, d, e, f)
SetupInstallFromInfSectionA(a, b, c, d, e, f, g, h, i, j, k)
SetupInstallFromInfSectionW(a, b, c, d, e, f, g, h, i, j, k)
SetupInstallLogCloseEventGroup(a, b, c)
SetupInstallLogCreateEventGroup(a, b, c, d, e)
SetupInstallServicesFromInfSectionA(a, b, c)
SetupInstallServicesFromInfSectionExA(a, b, c, d, e, f, g)
SetupInstallServicesFromInfSectionExW()
SetupInstallServicesFromInfSectionW(a, b, c)
SetupIterateCabinetA(a, b, c, d)
SetupIterateCabinetW(a, b, c, d)
SetupLogErrorA()
SetupLogErrorW(a, b)
SetupLogFileA(a, b, c, d, e, f, g, h, i)
SetupLogFileW()
SetupOpenAppendInfFileA()
SetupOpenAppendInfFileW()
SetupOpenFileQueue()
SetupOpenInfFileA()
SetupOpenInfFileW(a, b, c, d)
SetupOpenLog()
SetupOpenMasterInf()
SetupPrepareQueueForRestoreA(a, b, c)
SetupPrepareQueueForRestoreW(a, b, c)
SetupPromptForDiskA(a, b, c, d, e, f, g, h, i, j)
SetupPromptForDiskW(a, b, c, d, e, f, g, h, i, j)
SetupPromptReboot(a, b, c)
SetupQueryDrivesInDiskSpaceListA(a, b, c, d)
SetupQueryDrivesInDiskSpaceListW(a, b, c, d)
SetupQueryFileLogA()
SetupQueryFileLogW()
SetupQueryInfFileInformationA()
SetupQueryInfFileInformationW(a, b, c, d, e)
SetupQueryInfOriginalFileInformationA()
SetupQueryInfOriginalFileInformationW()
SetupQueryInfVersionInformationA()
SetupQueryInfVersionInformationW()
SetupQuerySourceListA()
SetupQuerySourceListW(a, b, c)
SetupQuerySpaceRequiredOnDriveA(a, b, c, d, e)
SetupQuerySpaceRequiredOnDriveW()
SetupQueueCopyA(a, b, c, d, e, f, g, h, i)
SetupQueueCopyIndirectA()
SetupQueueCopyIndirectW()
SetupQueueCopySectionA(a, b, c, d, e, f)
SetupQueueCopySectionW(a, b, c, d, e, f)
SetupQueueCopyW(a, b, c, d, e, f, g, h, i)
SetupQueueDefaultCopyA(a, b, c, d, e, f)
SetupQueueDefaultCopyW()
SetupQueueDeleteA(a, b, c)
SetupQueueDeleteSectionA(a, b, c, d)
SetupQueueDeleteSectionW(a, b, c, d)
SetupQueueDeleteW(a, b, c)
SetupQueueRenameA(a, b, c, d, e)
SetupQueueRenameSectionA(a, b, c, d)
SetupQueueRenameSectionW(a, b, c, d)
SetupQueueRenameW(a, b, c, d, e)
SetupRemoveFileLogEntryA(a, b, c)
SetupRemoveFileLogEntryW()
SetupRemoveFromDiskSpaceListA(a, b, c, d, e)
SetupRemoveFromDiskSpaceListW()
SetupRemoveFromSourceListA(a, b)
SetupRemoveFromSourceListW(a, b)
SetupRemoveInstallSectionFromDiskSpaceListA(a, b, c, d, e, f)
SetupRemoveInstallSectionFromDiskSpaceListW(a, b, c, d, e, f)
SetupRemoveSectionFromDiskSpaceListA(a, b, c, d, e, f, g)
SetupRemoveSectionFromDiskSpaceListW(a, b, c, d, e, f, g)
SetupRenameErrorA(a, b, c, d, e, f)
SetupRenameErrorW(a, b, c, d, e, f)
SetupScanFileQueue(a, b, c, d, e, f)
SetupScanFileQueueA()
SetupScanFileQueueW(a, b, c, d, e, f)
SetupSetDirectoryIdA(a, b, c)
SetupSetDirectoryIdExA(a, b, c, d, e, f)
SetupSetDirectoryIdExW(a, b, c, d, e, f)
SetupSetDirectoryIdW(a, b, c)
SetupSetFileQueueAlternatePlatformA(a, b, c)
SetupSetFileQueueAlternatePlatformW()
SetupSetFileQueueFlags()
SetupSetNonInteractiveMode(a)
SetupSetPlatformPathOverrideA(a)
SetupSetPlatformPathOverrideW()
SetupSetSourceListA()
SetupSetSourceListW()
SetupSetThreadLogToken()
SetupTermDefaultQueueCallback(a)
SetupTerminateFileLog()
SetupUninstallNewlyCopiedInfs(a, b, c)
SetupUninstallOEMInfA(a, b, c)
SetupUninstallOEMInfW()
SetupVerifyInfFileA()
SetupVerifyInfFileW(a, b, c)
SetupWriteTextLog()
SetupWriteTextLogError()
SetupWriteTextLogInfLine(a, b, c, d, e)
UnicodeToMultiByte(a, b)
VerifyCatalogFile(a)
pGetDriverPackageHash()
pSetupAccessRunOnceNodeList()
pSetupAddMiniIconToList()
pSetupAddTagToGroupOrderListEntry(a, b, c)
pSetupAppendPath(a, b, c)
pSetupCaptureAndConvertAnsiArg(a, b)
pSetupCenterWindowRelativeToParent(a)
pSetupCloseTextLogSection()
pSetupConcatenatePaths(a, b, c, d)
pSetupCreateTextLogSectionA()
pSetupCreateTextLogSectionW()
pSetupDestroyRunOnceNodeList()
pSetupDiBuildInfoDataFromStrongName(a, b, c, d)
pSetupDiCrimsonLogDeviceInstall(a, b, c, d, e, f)
pSetupDiGetStrongNameForDriverNode(a, b, c, d, e, f)
pSetupDiInvalidateHelperModules(a, b, c)
pSetupDoLastKnownGoodBackup(a, b)
pSetupDoesUserHavePrivilege(a)
pSetupDuplicateString(a)
pSetupEnablePrivilege(a, b)
pSetupFree(a)
pSetupGetCurrentDriverSigningPolicy(a)
pSetupGetDriverDate(a, b, c)
pSetupGetDriverVersion(a, b, c)
pSetupGetField(a, b)
pSetupGetFileTitle(a)
pSetupGetGlobalFlags()
pSetupGetIndirectStringsFromDriverInfo()
pSetupGetInfSections(a, b, c, d)
pSetupGetQueueFlags()
pSetupGetRealSystemTime(a)
pSetupGuidFromString(a, b)
pSetupHandleFailedVerification(a, b, c, d, e, f, g, h, i, j)
pSetupInfGetDigitalSignatureInfo()
pSetupInfIsInbox()
pSetupInfSetDigitalSignatureInfo(a, b, c)
pSetupInstallCatalog(a, b, c)
pSetupIsBiDiLocalizedSystemEx(a)
pSetupIsGuidNull(a)
pSetupIsLocalSystem()
pSetupIsUserAdmin()
pSetupIsUserTrustedInstaller()
pSetupLoadIndirectString(a, b, c, d)
pSetupMakeSurePathExists(a)
pSetupMalloc(a)
pSetupModifyGlobalFlags(a, b)
pSetupMultiByteToUnicode(a, b)
pSetupOpenAndMapFileForRead(a, b, c, d, e)
pSetupOutOfMemory(a)
pSetupQueryMultiSzValueToArray(a, b, c, d, e, f)
pSetupRealloc(a, b)
pSetupRegistryDelnode(a, b)
pSetupRetrieveServiceConfig(a, b)
pSetupSetArrayToMultiSzValue(a, b, c, d, e)
pSetupSetDriverPackageRestorePoint(a, b, c)
pSetupSetGlobalFlags(a)
pSetupSetQueueFlags()
pSetupShouldDeviceBeExcluded(a, b, c)
pSetupStringFromGuid(a, b, c)
pSetupStringTableAddString(a, b, c)
pSetupStringTableAddStringEx(a, b, c, d, e)
pSetupStringTableDestroy(a)
pSetupStringTableDuplicate()
pSetupStringTableEnum()
pSetupStringTableGetExtraData()
pSetupStringTableInitialize()
pSetupStringTableInitializeEx(a, b)
pSetupStringTableLookUpString()
pSetupStringTableLookUpStringEx(a, b, c, d, e)
pSetupStringTableSetExtraData(a, b, c, d)
pSetupStringTableStringFromId()
pSetupStringTableStringFromIdEx()
pSetupUnicodeToMultiByte(a, b)
pSetupUnmapAndCloseFile(a, b, c)
pSetupValidateDriverPackage(a, b, c, d, e, f, g, h, i)
pSetupVerifyCatalogFile(a)
pSetupVerifyQueuedCatalogs(a)
pSetupWriteLogEntry()
pSetupWriteLogError(a, b, c)
EndImport
;};

;{;hid  dll
Prototype  HidD_FlushQueue(a)
Prototype  HidD_FreePreparsedData(a)
Prototype  HidD_GetAttributes(a, b)
Prototype  HidD_GetConfiguration(a, b, c)
Prototype  HidD_GetFeature(a, b, c)
Prototype  HidD_GetHidGuid(a)
Prototype  HidD_GetIndexedString(a, b, c, d)
Prototype  HidD_GetInputReport(a, b, c)
Prototype  HidD_GetManufacturerString(a, b, c)
Prototype  HidD_GetMsGenreDescriptor(a, b, c)
Prototype  HidD_GetNumInputBuffers(a, b)
Prototype  HidD_GetPhysicalDescriptor(a, b, c)
Prototype  HidD_GetPreparsedData(a, b)
Prototype  HidD_GetProductString(a, b, c)
Prototype  HidD_GetSerialNumberString(a, b, c)
Prototype  HidD_Hello(a, b)
Prototype  HidD_SetConfiguration(a, b, c)
Prototype  HidD_SetFeature(a, b, c)
Prototype  HidD_SetNumInputBuffers(a, b)
Prototype  HidD_SetOutputReport(a, b, c)
Prototype  HidP_GetButtonCaps(a, b, c, d)
Prototype  HidP_GetCaps(a, b)
Prototype  HidP_GetData(a, b, c, d, e, f)
Prototype  HidP_GetExtendedAttributes(a, b, c, d, e)
Prototype  HidP_GetLinkCollectionNodes(a, b, c)
Prototype  HidP_GetScaledUsageValue(a, b, c, d, e, f, g, h)
Prototype  HidP_GetSpecificButtonCaps(a, b, c, d, e, f, g)
Prototype  HidP_GetSpecificValueCaps(a, b, c, d, e, f, g)
Prototype  HidP_GetUsageValue(a, b, c, d, e, f, g, h)
Prototype  HidP_GetUsageValueArray(a, b, c, d, e, f, g, h, i)
Prototype  HidP_GetUsages(a, b, c, d, e, f, g, h)
Prototype  HidP_GetUsagesEx(a, b, c, d, e, f, g)
Prototype  HidP_GetValueCaps(a, b, c, d)
Prototype  HidP_InitializeReportForID(a, b, c, d, e)
Prototype  HidP_MaxDataListLength(a, b)
Prototype  HidP_MaxUsageListLength(a, b, c)
Prototype  HidP_SetData(a, b, c, d, e, f)
Prototype  HidP_SetScaledUsageValue(a, b, c, d, e, f, g, h)
Prototype  HidP_SetUsageValue(a, b, c, d, e, f, g, h)
Prototype  HidP_SetUsageValueArray(a, b, c, d, e, f, g, h, i)
Prototype  HidP_SetUsages(a, b, c, d, e, f, g, h)
Prototype  HidP_TranslateUsagesToI8042ScanCodes(a, b, c, d, e, f)
Prototype  HidP_UnsetUsages(a, b, c, d, e, f, g, h)
Prototype  HidP_UsageListDifference(a, b, c, d, e)

Global HidD_FlushQueue.HidD_FlushQueue
Global HidD_FreePreparsedData.HidD_FreePreparsedData
Global HidD_GetAttributes.HidD_GetAttributes
Global HidD_GetConfiguration.HidD_GetConfiguration
Global HidD_GetFeature.HidD_GetFeature
Global HidD_GetHidGuid.HidD_GetHidGuid
Global HidD_GetIndexedString.HidD_GetIndexedString
Global HidD_GetInputReport.HidD_GetInputReport
Global HidD_GetManufacturerString.HidD_GetManufacturerString
Global HidD_GetMsGenreDescriptor.HidD_GetMsGenreDescriptor
Global HidD_GetNumInputBuffers.HidD_GetNumInputBuffers
Global HidD_GetPhysicalDescriptor.HidD_GetPhysicalDescriptor
Global HidD_GetPreparsedData.HidD_GetPreparsedData
Global HidD_GetProductString.HidD_GetProductString
Global HidD_GetSerialNumberString.HidD_GetSerialNumberString
Global HidD_Hello.HidD_Hello
Global HidD_SetConfiguration.HidD_SetConfiguration
Global HidD_SetFeature.HidD_SetFeature
Global HidD_SetNumInputBuffers.HidD_SetNumInputBuffers
Global HidD_SetOutputReport.HidD_SetOutputReport
Global HidP_GetButtonCaps.HidP_GetButtonCaps
Global HidP_GetCaps.HidP_GetCaps
Global HidP_GetData.HidP_GetData
Global HidP_GetExtendedAttributes.HidP_GetExtendedAttributes
Global HidP_GetLinkCollectionNodes.HidP_GetLinkCollectionNodes
Global HidP_GetScaledUsageValue.HidP_GetScaledUsageValue
Global HidP_GetSpecificButtonCaps.HidP_GetSpecificButtonCaps
Global HidP_GetSpecificValueCaps.HidP_GetSpecificValueCaps
Global HidP_GetUsageValue.HidP_GetUsageValue
Global HidP_GetUsageValueArray.HidP_GetUsageValueArray
Global HidP_GetUsages.HidP_GetUsages
Global HidP_GetUsagesEx.HidP_GetUsagesEx
Global HidP_GetValueCaps.HidP_GetValueCaps
Global HidP_InitializeReportForID.HidP_InitializeReportForID
Global HidP_MaxDataListLength.HidP_MaxDataListLength
Global HidP_MaxUsageListLength.HidP_MaxUsageListLength
Global HidP_SetData.HidP_SetData
Global HidP_SetScaledUsageValue.HidP_SetScaledUsageValue
Global HidP_SetUsageValue.HidP_SetUsageValue
Global HidP_SetUsageValueArray.HidP_SetUsageValueArray
Global HidP_SetUsages.HidP_SetUsages
Global HidP_TranslateUsagesToI8042ScanCodes.HidP_TranslateUsagesToI8042ScanCodes
Global HidP_UnsetUsages.HidP_UnsetUsages
Global HidP_UsageListDifference.HidP_UsageListDifference

Procedure.i hid_LoadDLL()
  Protected hDLL.i

  hDLL = OpenLibrary(#PB_Any, "C:\Windows\System32\hid.dll")
 ; Debug hDLL
  If hDLL <> 0
    HidD_FlushQueue = GetFunction(hDLL, "HidD_FlushQueue")
    HidD_FreePreparsedData = GetFunction(hDLL, "HidD_FreePreparsedData")
    HidD_GetAttributes = GetFunction(hDLL, "HidD_GetAttributes")
    HidD_GetConfiguration = GetFunction(hDLL, "HidD_GetConfiguration")
    HidD_GetFeature = GetFunction(hDLL, "HidD_GetFeature")
    HidD_GetHidGuid = GetFunction(hDLL, "HidD_GetHidGuid")
    HidD_GetIndexedString = GetFunction(hDLL, "HidD_GetIndexedString")
    HidD_GetInputReport = GetFunction(hDLL, "HidD_GetInputReport")
    HidD_GetManufacturerString = GetFunction(hDLL, "HidD_GetManufacturerString")
    HidD_GetMsGenreDescriptor = GetFunction(hDLL, "HidD_GetMsGenreDescriptor")
    HidD_GetNumInputBuffers = GetFunction(hDLL, "HidD_GetNumInputBuffers")
    HidD_GetPhysicalDescriptor = GetFunction(hDLL, "HidD_GetPhysicalDescriptor")
    HidD_GetPreparsedData = GetFunction(hDLL, "HidD_GetPreparsedData")
    HidD_GetProductString = GetFunction(hDLL, "HidD_GetProductString")
    HidD_GetSerialNumberString = GetFunction(hDLL, "HidD_GetSerialNumberString")
    HidD_Hello = GetFunction(hDLL, "HidD_Hello")
    HidD_SetConfiguration = GetFunction(hDLL, "HidD_SetConfiguration")
    HidD_SetFeature = GetFunction(hDLL, "HidD_SetFeature")
    HidD_SetNumInputBuffers = GetFunction(hDLL, "HidD_SetNumInputBuffers")
    HidD_SetOutputReport = GetFunction(hDLL, "HidD_SetOutputReport")
    HidP_GetButtonCaps = GetFunction(hDLL, "HidP_GetButtonCaps")
    HidP_GetCaps = GetFunction(hDLL, "HidP_GetCaps")
    HidP_GetData = GetFunction(hDLL, "HidP_GetData")
    HidP_GetExtendedAttributes = GetFunction(hDLL, "HidP_GetExtendedAttributes")
    HidP_GetLinkCollectionNodes = GetFunction(hDLL, "HidP_GetLinkCollectionNodes")
    HidP_GetScaledUsageValue = GetFunction(hDLL, "HidP_GetScaledUsageValue")
    HidP_GetSpecificButtonCaps = GetFunction(hDLL, "HidP_GetSpecificButtonCaps")
    HidP_GetSpecificValueCaps = GetFunction(hDLL, "HidP_GetSpecificValueCaps")
    HidP_GetUsageValue = GetFunction(hDLL, "HidP_GetUsageValue")
    HidP_GetUsageValueArray = GetFunction(hDLL, "HidP_GetUsageValueArray")
    HidP_GetUsages = GetFunction(hDLL, "HidP_GetUsages")
    HidP_GetUsagesEx = GetFunction(hDLL, "HidP_GetUsagesEx")
    HidP_GetValueCaps = GetFunction(hDLL, "HidP_GetValueCaps")
    HidP_InitializeReportForID = GetFunction(hDLL, "HidP_InitializeReportForID")
    HidP_MaxDataListLength = GetFunction(hDLL, "HidP_MaxDataListLength")
    HidP_MaxUsageListLength = GetFunction(hDLL, "HidP_MaxUsageListLength")
    HidP_SetData = GetFunction(hDLL, "HidP_SetData")
    HidP_SetScaledUsageValue = GetFunction(hDLL, "HidP_SetScaledUsageValue")
    HidP_SetUsageValue = GetFunction(hDLL, "HidP_SetUsageValue")
    HidP_SetUsageValueArray = GetFunction(hDLL, "HidP_SetUsageValueArray")
    HidP_SetUsages = GetFunction(hDLL, "HidP_SetUsages")
    HidP_TranslateUsagesToI8042ScanCodes = GetFunction(hDLL, "HidP_TranslateUsagesToI8042ScanCodes")
    HidP_UnsetUsages = GetFunction(hDLL, "HidP_UnsetUsages")
    HidP_UsageListDifference = GetFunction(hDLL, "HidP_UsageListDifference")

    ProcedureReturn hDLL
  EndIf

  ProcedureReturn #False
EndProcedure
;};
;{Константы setupapi.h
; Коды свойств реестра устройств
; (Коды, помеченные как доступные только для чтения (R), могут использоваться только для чтения
; SetupDiGetDeviceRegistryProperty)
;
; Эти значения должны охватывать один и тот же набор свойств реестра
;===============================
;как определено кодами CM_DRP в cfgmgr32.h.
#CM_DEVCAP_LOCKSUPPORTED=$00000001
#CM_DEVCAP_EJECTSUPPORTED=$00000002
#CM_DEVCAP_REMOVABLE=$00000004
#CM_DEVCAP_DOCKDEVICE=$00000008
#CM_DEVCAP_UNIQUEID=$00000010
#CM_DEVCAP_SILENTINSTALL=$00000020
#CM_DEVCAP_RAWDEVICEOK=$00000040
#CM_DEVCAP_SURPRISEREMOVALOK=$00000080
#CM_DEVCAP_HARDWAREDISABLED=$00000100
#CM_DEVCAP_NONDYNAMIC=$00000200
;==============
;{;аргумент Property функцииSetupDiGetClassRegistryProperty()
;Обратите внимание, что коды SPDRP отсчитываются от нуля, а коды CM_DRP отсчитываются от единицы!
#SPDRP_DEVICEDESC                  = $00000000;DeviceDesc (R/W)
#SPDRP_HARDWAREID                  = $00000001;HardwareID (R/W)
#SPDRP_COMPATIBLEIDS               = $00000002;CompatibleIDs (R/W)
#SPDRP_UNUSED0                     = $00000003;unused
#SPDRP_SERVICE                     = $00000004;Service (R/W)
#SPDRP_UNUSED1                     = $00000005;unused
#SPDRP_UNUSED2                     = $00000006;unused
#SPDRP_CLASS                       = $00000007;Class (R--tied To ClassGUID)
#SPDRP_CLASSGUID                   = $00000008;ClassGUID (R/W)
#SPDRP_DRIVER                      = $00000009;Driver (R/W)
#SPDRP_CONFIGFLAGS                 = $0000000A;ConfigFlags (R/W)
#SPDRP_MFG                         = $0000000B;Mfg (R/W)
#SPDRP_FRIENDLYNAME                = $0000000C;FriendlyName (R/W)
#SPDRP_LOCATION_INFORMATION        = $0000000D;LocationInformation (R/W)
#SPDRP_PHYSICAL_DEVICE_OBJECT_NAME = $0000000E;PhysicalDeviceObjectName (R)
#SPDRP_CAPABILITIES                = $0000000F;Capabilities (R)
#SPDRP_UI_NUMBER                   = $00000010;UiNumber (R)
#SPDRP_UPPERFILTERS                = $00000011;UpperFilters (R/W)
#SPDRP_LOWERFILTERS                = $00000012;LowerFilters (R/W)
#SPDRP_BUSTYPEGUID                 = $00000013;BusTypeGUID (R)
#SPDRP_LEGACYBUSTYPE               = $00000014;LegacyBusType (R)
#SPDRP_BUSNUMBER                   = $00000015;BusNumber (R)
#SPDRP_ENUMERATOR_NAME             = $00000016;Enumerator Name (R)
#SPDRP_SECURITY                    = $00000017;Security (R/W, binary form)
#SPDRP_SECURITY_SDS                = $00000018;Security (W, SDS form)
#SPDRP_DEVTYPE                     = $00000019;Device Type (R/W)
#SPDRP_EXCLUSIVE                   = $0000001A;Device is exclusive-access (R/W)
#SPDRP_CHARACTERISTICS             = $0000001B;Device Characteristics (R/W)
#SPDRP_ADDRESS                     = $0000001C;Device Address (R)
#SPDRP_UI_NUMBER_DESC_FORMAT       = $0000001D;UiNumberDescFormat (R/W)
#SPDRP_DEVICE_POWER_DATA           = $0000001E;Device Power Data (R)
#SPDRP_REMOVAL_POLICY              = $0000001F;Removal Policy (R)
#SPDRP_REMOVAL_POLICY_HW_DEFAULT   = $00000020;Hardware Removal Policy (R)
#SPDRP_REMOVAL_POLICY_OVERRIDE     = $00000021;Removal Policy Override (RW)
#SPDRP_INSTALL_STATE               = $00000022;Device Install State (R)
#SPDRP_LOCATION_PATHS              = $00000023;Device Location Paths (R)
#SPDRP_BASE_CONTAINERID            = $00000024;Base ContainerID (R)

#SPDRP_MAXIMUM_PROPERTY            = $00000025;Upper bound on ordinals
;};
;{;константы функции SetupDiGetClassProperty(ex)
#DICLASSPROP_INSTALLER=1;получение инфы для класса установки устройства
#DICLASSPROP_INTERFACE=2;получение инфы для класса интерфеса устройства
;};
#DIGCF_DEFAULT    = $00000001; only valid With DIGCF_DEVICEINTERFACE
#DIGCF_PRESENT    = $00000002
#DIGCF_ALLCLASSES = $00000004
#DIGCF_PROFILE    = $00000008
#DIGCF_DEVICEINTERFACE = $00000010
#DIGCF_INTERFACEDEVICE = #DIGCF_DEVICEINTERFACE
;}
;{;Структуры
Structure _GUID
  Data1.l;
  Data2.w;
  Data3.w;
  Data4.w
  Data5.a[6];
EndStructure
Structure _GUID1
  Data1.l;
  Data2.w;
  Data3.w;
  Data4.a[8];
EndStructure
Structure _GUID2
  Data.a[16];
EndStructure
Structure _GUID3
  Data1.l
  Data2.l
  Data3.l
  Data4.l
EndStructure
Structure _GUID4
  Data1.q
  Data2.q
EndStructure
;
Structure _SP_DEVINFO_DATA
cbSize.l;Размер в байтах структуры SP_DEVINFO_DATA
ClassGuid._GUID3;GUID класса установки устройства
DevInst.l;Непрозрачный дескриптор экземпляра устройства (также известный как дескриптор devnode).
;Некоторые функции, такие как функции SetupDiXxx, принимают всю структуру SP_DEVINFO_DATA в качестве входных данных для идентификации
;устройства в наборе информации об устройстве. Другие функции, такие как функции CM_Xxx, такие как CM_Get_DevNode_Status, принимают этот
;дескриптор DevInst в качестве входных данных.
*Reserved;
EndStructure
;
Structure _SP_DEVICE_INTERFACE_DATA
cbSize.l;
InterfaceClassGuid._GUID;
Flags.l;
*Reserved;
EndStructure
;
Structure _DEVPROPKEY; представляющию ключ свойства устройства в унифицированной модели свойств устройства
 fmtid._GUID1;DEVPROPGUID
 pid.u;DEVPROPID(идентификатора свойства,Идентификатор свойства должен быть больше или равен двум)
EndStructure
;
Structure _SP_DEVICE_INTERFACE_DETAIL_DATA
  cbSize.l;
  DevicePath.s{255};
EndStructure
;
Macro DEFINE_DEVPROPKEY(none,name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pidd)
  name\fmtid\Data1=l
  name\fmtid\Data2=w1
  name\fmtid\Data3=w2
  name\fmtid\Data4[0]=b1
  name\fmtid\Data4[1]=b2
  name\fmtid\Data4[2]=b3
  name\fmtid\Data4[3]=b4
  name\fmtid\Data4[4]=b5
  name\fmtid\Data4[5]=b6
  name\fmtid\Data4[6]=b7
  name\fmtid\Data4[7]=b8
  name\pid=pidd
EndMacro
;};

Procedure debug_ohibka(s$)
Protected *Bufer
*Bufer=AllocateMemory(200)
FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError_(), #LANG_NEUTRAL, *Bufer, 200,0)
MessageRequester("Событие "+s$,Str(GetLastError_())+" "+PeekS(*Bufer,-1,#PB_Unicode))
FreeMemory(*Bufer)
EndProcedure

Global hdll.i=hid_LoadDLL()



Procedure Get_Guid(*buffer,*Guid)
;;получаем имя класса по его GUID и записываем в строку+GUID
  ; SetupDiClassNameFromGuid_(*Guid,*buffer,100,0)
;
   Protected *bait.unicode=*buffer
   Protected *GUID2._GUID2=*Guid
   Protected *bait2.integer
   Protected e.i
   Protected i.i
   Protected i2.i
  cikl:
;
  If *bait\u<>0
    ;Debug *bait\u
    *bait+2
    Goto cikl
  Else
    *bait2=*bait
    *bait2\i=$7b0020;" {"
    *bait2+4
 i=3
 i2=0
 cikl5:
 e=*GUID2\Data[i]
;    
!ror dword [p.v_e],4
!cmp byte [p.v_e],9
!ja rrr
!add byte [p.v_e],48
!jmp ttt
!rrr:
!add byte [p.v_e],55
!ttt:
!rol dword [p.v_e],16
!shr word [p.v_e],12
!cmp byte [p.v_e],9
!ja rrr2
!add byte [p.v_e],48
!jmp ttt2
!rrr2:
!add byte [p.v_e],55
!ttt2:
!rol dword [p.v_e],16
;
*bait2\i=e
*bait2+4
;
If i>i2
   i-1
   Goto cikl5
ElseIf i<i2
   i+1
   Goto cikl5
EndIf
;
If i=0
 i=5
 i2=4
  *bait=*bait2
  *bait\u=45
  *bait2+2
 Goto cikl5
ElseIf i=4
  i=7
  i2=6
  *bait=*bait2
  *bait\u=45
  *bait2+2
Goto cikl5
ElseIf i=6
  i=8
  i2=9
  *bait=*bait2
  *bait\u=45
  *bait2+2  
Goto cikl5
 ElseIf i=9
  i=10
  i2=15
  *bait=*bait2
  *bait\u=45
  *bait2+2
Goto cikl5
EndIf
 *bait2\i=$7d
EndIf
EndProcedure

Procedure.i Get_Interface(TreeGadget,*class._GUID=0)
Protected hidGuid._GUID
  
Protected deviceInfoList.i
If *class._GUID=0
  HidD_GetHidGuid(@hidGuid)
Else
  hidGuid\Data1=*class._GUID\Data1
  hidGuid\Data2=*class._GUID\Data2
  hidGuid\Data3=*class._GUID\Data3
  hidGuid\Data4=*class._GUID\Data4
  hidGuid\Data5[0]=*class._GUID\Data5[0]
  hidGuid\Data5[1]=*class._GUID\Data5[1]
  hidGuid\Data5[2]=*class._GUID\Data5[2]
  hidGuid\Data5[3]=*class._GUID\Data5[3]
  hidGuid\Data5[4]=*class._GUID\Data5[4]
  hidGuid\Data5[5]=*class._GUID\Data5[5]
EndIf  
;Debug Hex(hidGuid\Data1,#PB_Long)

    deviceInfoList = SetupDiGetClassDevs_(@hidGuid, #Null, #Null,#DIGCF_PRESENT | #DIGCF_INTERFACEDEVICE);
    If deviceInfoList = #INVALID_HANDLE_VALUE
        debug_ohibka("SetupDiGetClassDevs")
        ProcedureReturn 0;
    EndIf
    
Protected DeviceIndex.i=0
Protected  index.i=0
Protected  RequiredSize.i
Protected DeviceInfoData._SP_DEVINFO_DATA
   DeviceInfoData\cbSize=SizeOf(_SP_DEVINFO_DATA)
Protected  DeviceInterfaceData._SP_DEVICE_INTERFACE_DATA
   DeviceInterfaceData\cbSize = SizeOf(_SP_DEVICE_INTERFACE_DATA);
 Protected DeviceInterfaceDetailData._SP_DEVICE_INTERFACE_DETAIL_DATA
  CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
    DeviceInterfaceDetailData\cbSize = 8; x86(Unicode=6, ASCII=5), x64=8
  CompilerElse
    DeviceInterfaceDetailData\cbSize = 6; + SizeOf(Character); x86(Unicode=6, ASCII=5), x64=8
  CompilerEndIf

  
 Protected s.s;=""
 Protected *Buffer=AllocateMemory(500)
 !mov dword [p.v_s],eax
  
  
  
  
  
 While SetupDiEnumDeviceInfo_(deviceInfoList,DeviceIndex,@DeviceInfoData)<>0
      DeviceIndex+1
;{;Описание класса установки
      SetupDiClassNameFromGuid_(@DeviceInfoData\ClassGuid,*buffer,100,0)
      Get_Guid(*buffer,@DeviceInfoData\ClassGuid)
      AddGadgetItem(TreeGadget, -1,s, 0, 1)
      

    SetupDiGetClassDescription_(@DeviceInfoData\ClassGuid,*Buffer,500,0)
     AddGadgetItem(TreeGadget, -1,s, 0, 2)   
     

;};
  index.i=0
    While SetupDiEnumDeviceInterfaces_(deviceInfoList, @DeviceInfoData, @hidGuid, index,@DeviceInterfaceData)<>0
      index+1
     Get_Guid(*buffer,@DeviceInterfaceData\InterfaceClassGuid)
     AddGadgetItem(TreeGadget, -1,s, 0, 3)
     
         If SetupDiGetDeviceInterfaceDetail_(deviceInfoList, @DeviceInterfaceData, @DeviceInterfaceDetailData, 255, 0, @DeviceInfoData)<>0
                        AddGadgetItem(TreeGadget, -1,"Путь", 0, 2)
                        AddGadgetItem(TreeGadget, -1,DeviceInterfaceDetailData\DevicePath, 0, 2)   
     
              Debug PeekS(@DeviceInterfaceDetailData\DevicePath,-1,#PB_Unicode)
         EndIf
     Wend
  Wend
    ;    If Not SetupDiGetDeviceInterfaceDetail(deviceInfoList, @deviceInfo,deviceDetails, size, @size, #Null)
    ;        debug_ohibka("SetupDiGetDeviceInterfaceDetail");
   ;         Continue;
   ;     EndIf
    ;    hDev = CreateFile(deviceDetails->DevicePath, 0,
    ;                      #FILE_SHARE_READ | #FILE_SHARE_WRITE, #Null,
    ;                      #OPEN_EXISTING, 0, #Null);
     ;   If(hDev = #INVALID_HANDLE_VALUE)
   ;         debug_ohibka("CreateFile");
    ;        Continue;
    ;    EndIf

   ;     deviceAttributes.Size = SizeOf(deviceAttributes);
    ;    If (HidD_GetAttributes(hDev, &deviceAttributes))
   ;        ;fprintf(stderr, "VID = %04x PID = %04x\n", (unsigned)deviceAttributes.VendorID, (unsigned)deviceAttributes.ProductID);
    ;    Else
   ;         debug_ohibka("HidD_GetAttributes");
    ;    EndIf
   ;     CloseHandle(hDev);

  ;
  FreeMemory(*Buffer)
    SetupDiDestroyDeviceInfoList(deviceInfoList);
    ProcedureReturn 1
    
    
    
    
    
    
EndProcedure
  

Procedure.i Get_ClassGUID(Gadget,flag=0,flag2=0)
 Protected i.i
 Protected *simvol.unicode
 Protected s.s;=""
;
 If flag=0;
   *simvol=?class
    !mov dword eax,[p.p_simvol]
    !mov dword [p.v_s],eax
    
    i=78
cikl34:
      
      AddGadgetItem(Gadget, -1,s)
   If i>0
    cikl755:    
        
     If *simvol\u<>0
       *simvol+2
       Goto cikl755
     Else
       *simvol+2
       !mov dword eax,[p.p_simvol]
       !mov dword [p.v_s],eax
       
        i-1  
     Goto cikl34
     EndIf
   EndIf  
 ElseIf flag=8;
   
   *simvol=?class
    i=0
; 
 cikl456:
   If flag2>0
     If *simvol\u<>0
       *simvol+2
       Goto cikl456
     Else
       *simvol+2
       i+1
       If i<flag2
         Goto cikl456
       EndIf  
     EndIf  
   EndIf
   Protected *Buffer=AllocateMemory(500)
   Protected *Buffer2.unicode=*Buffer
   
     !mov dword eax,[p.p_Buffer]
     !mov dword [p.v_s],eax
     
   cikl285:  
   If *simvol\u<>0
     i=*simvol\u
     *Buffer2\u=i
     *simvol+2
     *Buffer2+2
       Goto cikl285
   EndIf
   
   

;
   ;AddGadgetItem(Gadget, -1,s, 0, 1)
   

     
     
   flag2*16
   flag2+?_1
   Get_Guid(*buffer,flag2)
   
   AddGadgetItem(Gadget, -1,s, 0, 1)
   FreeMemory(*Buffer) 
   ProcedureReturn flag2
 EndIf  
  
  
 
   ; SetupDiClassNameFromGuid_(?_1+i,*buffer,100,0)
    
    ;AddGadgetItem(ComboBoxGadget1, -1,s)
    

 
    ;
  ;FreeMemory(*Buffer)  
    
  ;ProcedureReturn s
;{;Датасекция Guuid_classov
DataSection
_1:
Data.q $11D0810F6BDD1FC1,$2F09E22B0008C7BE

Data.q $4A64780166F250D6,$240B450AA8EE39B1
_3:
Data.q $11D232007EBEFBC0,$77D69C9A000C2B4
_4:
Data.q $11CEE3254D36E964,$1803E12B0008C1BF
_5:
Data.q $11D1C8FAD45B1C18,$30F505F80000779F
_6:
Data.q $48F0AE09C06FF265,$83BA7C3D75162C81
_7:
Data.q $11D078A472631E54,$2AB3B700AA00F7BC
_8:
Data.q $4D14377C53D29EF7,$599376853AEB4B86
_9:
Data.q $4647CD8BE0CBF06C,$74F9F0433B268ABB
_10:
Data.q $11CEE3254D36E965,$1803E12B0008C1BF
_11:
Data.q $11CEE3254D36E966,$1803E12B0008C1BF
_12:
Data.q $11D0810F6BDD1FC2,$2F09E22B0008C7BE
_13:
Data.q $11CEE3254D36E967,$1803E12B0008C1BF
_14:
Data.q $11CEE3254D36E968,$1803E12B0008C1BF
_15:
Data.q $11D2679548721B56,$A2742EC78000A8B1
_16:
Data.q $11D26F8649CE6AC8,$A2742EC78000E5B1
_17:
Data.q $11D1DB08C459DF55,$F61F08C9A00009B0
_18:
Data.q $11CEE3254D36E969,$1803E12B0008C1BF
_19:
Data.q $11CEE3254D36E980,$1803E12B0008C1BF
_20:
Data.q $11D0810F6BDD1FC3,$2F09E22B0008C7BE
_21:
Data.q $11CEE3254D36E96A,$1803E12B0008C1BF
_22:
Data.q $11D074D3745A17A0,$DA570FC9A000FEB6
_23:
Data.q $11D0810F6BDD1FC6,$2F09E22B0008C7BE
_24:
Data.q $4A0CD85830EF7132,$3FCA5C8A02B924AC
_25:
Data.q $11D0810F6BDD1FC5,$2F09E22B0008C7BE
_26:
Data.q $11CEE3254D36E96B,$1803E12B0008C1BF
_27:
Data.q $11D1047F8ECC055D,$D13E75F8000037A5
_28:
Data.q $11CEE3254D36E96C,$1803E12B0008C1BF
_29:
Data.q $11D0EBDECE5939AE,$C43E75F8000081B1
_30:
Data.q $11CEE3254D36E96D,$1803E12B0008C1BF
_31:
Data.q $11CEE3254D36E96E,$1803E12B0008C1BF
_32:
Data.q $11CEE3254D36E96F,$1803E12B0008C1BF
_33:
Data.q $11CEE3254D36E970,$1803E12B0008C1BF
_34:
Data.q $11CEE3254D36E971,$1803E12B0008C1BF
_35:
Data.q $11D1BA1250906CB8,$30F505F800005DBF
_36:
Data.q $11CEE3254D36E972,$1803E12B0008C1BF
_37:
Data.q $11CEE3254D36E973,$1803E12B0008C1BF
_38:
Data.q $11CEE3254D36E974,$1803E12B0008C1BF
_39:
Data.q $11CEE3254D36E975,$1803E12B0008C1BF
_40:
Data.q $11CEE3254D36E976,$1803E12B0008C1BF
_41:
Data.q $11CEE3254D36E977,$1803E12B0008C1BF
_42:
Data.q $11D1F0504658EE7E,$A772A34FC000BDB6
_43:
Data.q $11CEE3254D36E978,$1803E12B0008C1BF
_44:
Data.q $11CEE3254D36E979,$1803E12B0008C1BF
_45:
Data.q $11CEE3254D36E97A,$1803E12B0008C1BF
_46:
Data.q $415E0F3650127DC3,$650B91BEB34CCCA6
_47:
Data.q $11D1EC20D48179BE,$A772A34FC000B8B6
_48:
Data.q $11CEE3254D36E97B,$1803E12B0008C1BF
_49:
Data.q $11D3EDFE268C95A1,$A55040DC1000C395
_50:
Data.q $4806C3715175D334,$8D25C953FD71BAB3
_51:
Data.q $4F2EC442997B5D8D,$219E1E678E9CF3BA
_52:
Data.q $11D1BA8A50DD5230,$30F505F800005DBF
_53:
Data.q $11CEE3254D36E97C,$1803E12B0008C1BF
_54:
Data.q $11CEE3254D36E97D,$1803E12B0008C1BF
_55:
Data.q $11CF7D216D807884,$1803E12B00081C80
_56:
Data.q $11CEE3254D36E97E,$1803E12B0008C1BF
_57:
Data.q $11CFC46536FC9E60,$545345445680
_58:
Data.q $11D0812A71A27CDD,$2F09E22B0008C7BE
_59:
Data.q $11D2EC70533C5B84,$AFDE794FC0000595
_60:
Data.q $4A726C8F25DBCE51,$35C84F2B4CB56D8A
_61:
Data.q $425F8080EEC5AD98,$9AF6E33DBFDA2A92
_62:
Data.q $4BACA31EB86DFF51,$C29F5CE7CFE8CFB3
_63:
Data.q $48C0C67AFE8F1572,$FBCA666D5C0BACBB
_64:
Data.q $4379C54FB1D1A169,$54748DD8E7BEDB81
_65:
Data.q $48FF4CF848D3EBC4,$9FEB42AD689C69B8
_66:
Data.q $46226FAD71AA14F8,$47697E9DBB9277AD
_67:
Data.q $4558C83C3E3F0674,$C5A5EBE1209826BB
_68:
Data.q $4919A6C78503C911,$C6B86F52850798F
_69:
Data.q $4131706E2DB15374,$9A28B08EC7D7C7A0
_70:
Data.q $4630B75BCDCF0939,$845865BAF78076BF
_71:
Data.q $45F62AEBD546500A,$77319C79B1F48294
_72:
Data.q $49B5B5AAF3586BAF,$9F634C2869056C8D
_73:
Data.q $42FFA511A0A701C0,$6F579503DC066CAA
_74:
Data.q $4FC4BBA66A0A8E78,$7ED609CD331E09A7
_75:
Data.q $41A566D1F8ECAFA6,$B716725D58669B89
_76:
Data.q $49450C8ED02BC3DA,$8C6C223C88F1D59B
_77:
Data.q $402F9C1289786FF1,$75437F3C75179E9C
_78:
Data.q $46AF01E25D1B9AAA,$464C323F2B279F84
_79:
Data.q $4D04128CE55FA6F9,$3A45B1740C63ABAB
EndDataSection
;};
;{;Датасекция class
DataSection
class:  
Data.s "1394"
Data.s "1394DEBUG"
Data.s "61883"
Data.s "ADAPTER"
Data.s "APMSUPPORT"
Data.s "AVC"
Data.s "BATTERY"
Data.s "BIOMETRIC"
Data.s "BLUETOOTH"
Data.s "CDROM"
Data.s "COMPUTER"
Data.s "DECODER"
Data.s "DISKDRIVE"
Data.s "DISPLAY"
Data.s "DOT4"
Data.s "DOT4PRINT"
Data.s "ENUM1394"
Data.s "FDC"
Data.s "FOPPYDISK"
Data.s "GPS"
Data.s "HDC"
Data.s "HIDCLASS"
Data.s "IMAGE"
Data.s "INFINIBAND"
Data.s "INFRARED"
Data.s "KEYBOARD"
Data.s "EGACYDRIVER"
Data.s "MEDIA"
Data.s "MEDIUM_CHANGER"
Data.s "MODEM"
Data.s "MONITOR"
Data.s "MOUSE"
Data.s "MTD"
Data.s "MUTIFUNCTION"
Data.s "MUTIPORTSERIA"
Data.s "NET"
Data.s "NETCIENT"
Data.s "NETSERVICE"
Data.s "NETTRANS"
Data.s "NODRIVER"
Data.s "PCMCIA"
Data.s "PNPPRINTERS"
Data.s "PORTS"
Data.s "PRINTER"
Data.s "PRINTERUPGRADE"
Data.s "PROCESSOR"
Data.s "SBP2"
Data.s "SCSIADAPTER"
Data.s "SECURITYACCEERATOR"
Data.s "SENSOR"
Data.s "SIDESHOW"
Data.s "SMARTCARDREADER"
Data.s "SOUND"
Data.s "SYSTEM"
Data.s "TAPEDRIVE"
Data.s "UNKNOWN"
Data.s "USB"
Data.s "VOUME"
Data.s "VOUMESNAPSHOT"
Data.s "WCEUSBS"
Data.s "WPD"
Data.s "FSFITER_ACTIVITYMONITOR"
Data.s "FSFITER_UNDEETE"
Data.s "FSFITER_ANTIVIRUS"
Data.s "FSFITER_REPICATION"
Data.s "FSFITER_CONTINUOUSBACKUP"
Data.s "FSFITER_CONTENTSCREENER"
Data.s "FSFITER_QUOTAMANAGEMENT"
Data.s "FSFITER_SYSTEMRECOVERY"
Data.s "FSFITER_CFSMETADATASERVER"
Data.s "FSFITER_HSM"
Data.s "FSFITER_COMPRESSION"
Data.s "FSFITER_ENCRYPTION"
Data.s "FSFITER_PHYSICAQUOTAMANAGEMENT"
Data.s "FSFITER_OPENFIEBACKUP"
Data.s "FSFITER_SECURITYENHANCER"
Data.s "FSFITER_COPYPROTECTION"
Data.s "FSFITER_SYSTEM"
Data.s "FSFITER_INFRASTRUCTURE"
EndDataSection
;};
EndProcedure

Global Obrabothik_Tree.i
Procedure.i Calbac_Tree(hwnd,Msg,wParam,lParam)

 Select msg 
   Case #WM_LBUTTONDOWN
     CallWindowProc_(Obrabothik_Tree, hWnd, #WM_RBUTTONDOWN, wParam, lParam);сначала прыгнем в родной обработчик
     ; Debug GetGadgetItemText(GetWindowLongPtr_(hwnd,#GWLP_ID),GetGadgetState(GetWindowLongPtr_(hwnd,#GWLP_ID)))

 EndSelect
 
 
   ProcedureReturn  CallWindowProc_(Obrabothik_Tree, hWnd, Msg, wParam, lParam)
EndProcedure

ProcedureDLL.i Diologovoe_Okno_Ustroistv()
  
;{;Форма 
 Protected window.i 
 window= OpenWindow(#PB_Any, 0, 0,800, 400, "Конфигурация устройств", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 If window<>0
   
 Protected ComboBoxGadget1.i=ComboBoxGadget(#PB_Any, 5, 5, 250, 21,#PB_ComboBox_Editable)
   SetGadgetText(ComboBoxGadget1, "Выбор класса инсталяции");заставка нопоминающая выбор интерфейса

 Get_ClassGUID(ComboBoxGadget1)
    

  
  
  
  Protected TreeGadget1.i=TreeGadget(#PB_Any,260,0,538,400)
   
   ;SetWindowLongPtr_(GadgetID(TreeGadget1),#GWLP_HWNDPARENT,WindowID(window))

 Obrabothik_Tree=SetWindowLongPtr_(GadgetID(TreeGadget1),#GWLP_WNDPROC,@Calbac_Tree())

  
  AddGadgetItem(TreeGadget1, -1, "Класс инсталяции", 0, 0)
  Get_Interface(TreeGadget1)


 EndIf
;}
 
 
;{;Обработчик сообщений
 Repeat
  Select WaitWindowEvent()
   Case #PB_Event_CloseWindow;{;
      SetWindowLongPtr_(GadgetID(TreeGadget1),#GWL_WNDPROC,Obrabothik_Tree)
      Break;};
   Case #PB_Event_Gadget
      Select EventGadget()
        Case ComboBoxGadget1;{;выбор класса
          ;Debug GetGadgetState(ComboBoxGadget1)
          If GetGadgetState(ComboBoxGadget1)>-1;список классов ранее отображён
              ClearGadgetItems(TreeGadget1)
              AddGadgetItem(TreeGadget1, -1, "Устройства Класса", 0, 0)
             Get_ClassGUID(TreeGadget1,8,GetGadgetState(ComboBoxGadget1))
            Debug GetGadgetState(ComboBoxGadget1)

            EndIf
      EndSelect    
;};
  EndSelect
ForEver;};    
EndProcedure



;пример приминения
Diologovoe_Okno_Ustroistv()

CloseLibrary(hdll)

В этом коде и ответ возможно заданный ранее egnos чем не нравится стандартные макросы?да  всё нравится впринципе но ключ есть ключ из 16 байт и если есть возможность оперироаать с ним в тех же операциях сравнения с меньшим запросом процу то почему невоспользоваться этим

Отредактировано Sergeihik (23.12.2022 17:33:59)

0


Вы здесь » PureBasic - форум » OpenSource » Модуль для работы с USB HID (Windows, Linux, Arm Linux)