SetupDiEnumDeviceInterfaces

Discussion in 'WASM.WIN32' started by Gennadiy_M, Jul 14, 2008.

  1. Gennadiy_M

    Gennadiy_M New Member

    Blog Posts:
    0
    Joined:
    Mar 20, 2008
    Messages:
    22
    При помощи процедур SetupDiGetClassDevs и SetupDiEnumDeviceInfo получаем SP_DEVINFO_DATA для первого устройства.
    Далее как использовать процедуру SetupDiEnumDeviceInterfaces для этого устройства?
    Делаю так:
    Code (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

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    Gennadiy_M
    SetupDiEnumDeviceInterfaces возвращает ошибку
    Какую?
     
  3. Gennadiy_M

    Gennadiy_M New Member

    Blog Posts:
    0
    Joined:
    Mar 20, 2008
    Messages:
    22
    103h (ERROR_TOO_MANY_SEM_REQUESTS?)
     
  4. Gennadiy_M

    Gennadiy_M New Member

    Blog Posts:
    0
    Joined:
    Mar 20, 2008
    Messages:
    22
    Вернее ошибка 103 - ERROR_NO_MORE_ITEMS
     
  5. Gennadiy_M

    Gennadiy_M New Member

    Blog Posts:
    0
    Joined:
    Mar 20, 2008
    Messages:
    22
    Перепроверил, всё таки 103. Т.е. это ERROR_NO_MORE_ITEMS. Хотя SetupDiGetClassImageIndex выдаёт не нулевые значения.
     
  6. q_q

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    Gennadiy_M
    ERROR_NO_MORE_ITEMS
    Это значит, что "no SP_INTERFACE_DEVICE_DATA available for this GUID".

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