При помощи процедур SetupDiGetClassDevs и SetupDiEnumDeviceInfo получаем SP_DEVINFO_DATA для первого устройства. Далее как использовать процедуру SetupDiEnumDeviceInterfaces для этого устройства? Делаю так: Код (Text): push DIGCF_ALLCLASSES or DIGCF_PRESENT push 0 push 0 push 0 call __imp__SetupDiGetClassDevsA@16 mov [dev_info_h],eax mov [sp_devinfo_data.cbSize],28 push offset sp_devinfo_data push 0 ;index push [dev_info_h] call __imp__SetupDiEnumDeviceInfo@12 push DIGCF_PRESENT or DIGCF_DEVICEINTERFACE push 0 push 0 push offset sp_devinfo_data.ClassGuid call __imp__SetupDiGetClassDevsA@16 mov [dev_info_h2],eax mov [sp_device_interface_data.cbSize],1ch push offset sp_device_interface_data push 0 ;[index_interface] push offset sp_devinfo_data.ClassGuid push 0 ;offset sp_devinfo_data push [dev_info_h2] call __imp__SetupDiEnumDeviceInterfaces@20 SetupDiEnumDeviceInterfaces возвращает ошибку. Вообще конечная задача получить структуру SP_DEVICE_INTERFACE_DETAIL_DATA. Цепочка процедур должна быть следующая?: [..] SetupDiGetClassDevs -> SetupDiEnumDeviceInterfaces -> SetupDiGetDeviceInterfaceDetail
Перепроверил, всё таки 103. Т.е. это ERROR_NO_MORE_ITEMS. Хотя SetupDiGetClassImageIndex выдаёт не нулевые значения.
Gennadiy_M ERROR_NO_MORE_ITEMS Это значит, что "no SP_INTERFACE_DEVICE_DATA available for this GUID". Хотя SetupDiGetClassImageIndex выдаёт не нулевые значения Точно не знаю, но возможно, что imagelist, созданный SetupDiGetClassImageList[Ex] содержит изображения для _всех_, а не только установленных классов.