SetupDiEnumDeviceInterfaces

Тема в разделе "WASM.WIN32", создана пользователем Gennadiy_M, 14 июл 2008.

  1. Gennadiy_M

    Gennadiy_M New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2008
    Сообщения:
    22
    При помощи процедур SetupDiGetClassDevs и SetupDiEnumDeviceInfo получаем SP_DEVINFO_DATA для первого устройства.
    Далее как использовать процедуру SetupDiEnumDeviceInterfaces для этого устройства?
    Делаю так:
    Код (Text):
    1.     push    DIGCF_ALLCLASSES or DIGCF_PRESENT
    2.     push    0
    3.     push    0
    4.     push    0
    5.     call    __imp__SetupDiGetClassDevsA@16
    6.     mov [dev_info_h],eax
    7.  
    8.     mov [sp_devinfo_data.cbSize],28
    9.     push    offset sp_devinfo_data
    10.     push    0   ;index
    11.     push    [dev_info_h]
    12.     call    __imp__SetupDiEnumDeviceInfo@12
    13.  
    14.     push    DIGCF_PRESENT or DIGCF_DEVICEINTERFACE
    15.     push    0
    16.     push    0
    17.     push    offset sp_devinfo_data.ClassGuid
    18.     call    __imp__SetupDiGetClassDevsA@16
    19.     mov [dev_info_h2],eax
    20.  
    21.     mov [sp_device_interface_data.cbSize],1ch
    22.     push    offset sp_device_interface_data
    23.     push    0   ;[index_interface]
    24.     push    offset sp_devinfo_data.ClassGuid
    25.     push    0   ;offset sp_devinfo_data
    26.     push    [dev_info_h2]
    27.     call    __imp__SetupDiEnumDeviceInterfaces@20
    SetupDiEnumDeviceInterfaces возвращает ошибку.
    Вообще конечная задача получить структуру SP_DEVICE_INTERFACE_DETAIL_DATA.
    Цепочка процедур должна быть следующая?:
    [..] SetupDiGetClassDevs -> SetupDiEnumDeviceInterfaces -> SetupDiGetDeviceInterfaceDetail
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Gennadiy_M
    SetupDiEnumDeviceInterfaces возвращает ошибку
    Какую?
     
  3. Gennadiy_M

    Gennadiy_M New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2008
    Сообщения:
    22
    103h (ERROR_TOO_MANY_SEM_REQUESTS?)
     
  4. Gennadiy_M

    Gennadiy_M New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2008
    Сообщения:
    22
    Вернее ошибка 103 - ERROR_NO_MORE_ITEMS
     
  5. Gennadiy_M

    Gennadiy_M New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2008
    Сообщения:
    22
    Перепроверил, всё таки 103. Т.е. это ERROR_NO_MORE_ITEMS. Хотя SetupDiGetClassImageIndex выдаёт не нулевые значения.
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Gennadiy_M
    ERROR_NO_MORE_ITEMS
    Это значит, что "no SP_INTERFACE_DEVICE_DATA available for this GUID".

    Хотя SetupDiGetClassImageIndex выдаёт не нулевые значения
    Точно не знаю, но возможно, что imagelist, созданный SetupDiGetClassImageList[Ex] содержит изображения для _всех_, а не только установленных классов.