GUID

Тема в разделе "WASM.NT.KERNEL", создана пользователем Novi4ek, 17 фев 2008.

  1. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Задача вроде вполне такая повседневная но меня поставила в определенный тупик. Вернее выход кое-какой есть, но мягко говоря через петербург, наверняка есть какие-то документированные средства! И так, у меня есть GUID устройств, из всех устройств с этим GUID мне надо выбрать любое работающее и получить его девайс нейм вроде \Device\xxx. Как это сделать? Из ядра/юзермода - неважно

    UPDATED: Вообщем, проблему решил, всем спасибо.
     
  2. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Видимо это можно сделать с помощью SetupAPI, но здесь у меня появились некоторые затруднения.

    Код (Text):
    1. HDEVINFO Hdl = SetupDiGetClassDevs(&GUID_DEVCLASS_MEDIA, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
    2.    
    3.     if (Hdl == INVALID_HANDLE_VALUE) {
    4.         DBGPRINT("SetupDiGetClassDevs fault: %d\n", GetLastError());
    5.         return res;
    6.     }
    7.     InterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
    8.    
    9.     if (!SetupDiEnumDeviceInterfaces(Hdl, NULL, &GUID_DEVCLASS_MEDIA, 0, &InterfaceData)) {
    10.         DBGPRINT("SetupDiEnumDeviceInterfaces fault: %d\n", GetLastError());
    На последней строчке для моего кода все и заканчивается с ошибкой НЕТ_БОЛЬШЕ_ЭЛЕМЕНТОВ_ДЛЯ_ПЕРЕЧИСЛЕНИЯ.

    И, честно говоря, GUID_DEVCLASS_MEDIA в вызове SetupDiEnumDeviceInterfaces это такой финт ушами от не знания что уж и делать. Дело в том что там, по идее, должен быть некий иной GUID интерфейсный, но откуда его брать я вообще в недоумении. В google видел примеры где и в SetupDiGetClassDevs и в SetupDiEnumDeviceInterfaces подставлялся один и тот же GUI, но мне от этого теплее не стало.


    UPDATED: Вообщем, проблему решил, всем спасибо.