Russian Qt Forum

Qt => Общие вопросы => Тема начата: sweaty от Июнь 03, 2014, 11:29



Название: Проблема с SetupDiGetClassDevs
Отправлено: sweaty от Июнь 03, 2014, 11:29
Код:
#include <Windows.h>
#include <SetupAPI.h>
#include <devguid.h>

DEFINE_GUID(GUID_DEVCLASS_DISPLAY,0x4d36e968,0xe325,0x11ce,0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18);

HDEVINFO hDevInfo;
 hDevInfo =SetupDiGetClassDevs(&GUID_DEVCLASS_DISPLAY ,NULL, NULL, DIGCF_PRESENT|DIGCF_ALLCLASSES );


возникает ошибка undefined reference to `GUID_DEVCLASS_DISPLAY'
кто сталкивался с таким, и что может быть проблемой?

Задача в том, что бы по GUIDу определить устройство (вывести его название)
Подскажите, что может быть?


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: gil9red от Июнь 03, 2014, 11:31
Вы, видимо, забыли приинклудить что то :)
В каком то заголовочном описан GUID_DEVCLASS_DISPLAY


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: sweaty от Июнь 03, 2014, 11:34
Вы, видимо, забыли приинклудить что то :)
В каком то заголовочном описан GUID_DEVCLASS_DISPLAY
все описано в devguid.h
проблема не в этом, он почему-то не видит вообще GUID_DEVCLASS_DISPLAY.
Я пытаюсь по заданому GUID вывести устройство. Работает, если первый параметр NULL, тогда выводит все устройства всех гуидов


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: kuzulis от Июнь 03, 2014, 12:55
Если не изменяет память, то достаточно этого:

Код
C++ (Qt)
#define INITGUID // << Это добавь
#include <Windows.h>
#include <SetupAPI.h>
#include <devguid.h>
 
HDEVINFO hDevInfo = SetupDiGetClassDevs(&GUID_DEVCLASS_DISPLAY ,NULL, NULL, DIGCF_PRESENT|DIGCF_ALLCLASSES );
 

не нужно переопределять GUID_DEVCLASS_DISPLAY если он уже в системных заголовках объявлен


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: sweaty от Июнь 03, 2014, 13:22
Не помогло добавление #define INITGUID.
Может кто-то знает другие методы как вытащить название устройства по его GUID?


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: kuzulis от Июнь 03, 2014, 13:27
Ну не знаю, у меня работает это:

Код
C++ (Qt)
#define INITGUID
 
#include <qt_windows.h>
#include <setupapi.h>
 
DEFINE_GUID(GUID_BLUETOOTHLE_DEVICE_INTERFACE,          0x781aee18, 0x7733, 0x4ce4, 0xad, 0xd0, 0x91, 0xf4, 0x1c, 0x67, 0xb5, 0x92);
DEFINE_GUID(BTH_LE_ATT_BLUETOOTH_BASE_GUID,             0x00000000, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
 


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: sweaty от Июнь 03, 2014, 13:36
а Вы тоже используете эту функцию?
SetupDiGetClassDevs(&GUID_DEVCLASS_CDROM ,NULL, NULL, DIGCF_PRESENT|DIGCF_ALLCLASSES );


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: kuzulis от Июнь 03, 2014, 14:14
SetupDiGetClassDevs() ? Да.


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: sweaty от Июнь 03, 2014, 14:29
Странно...
А какой компилятор?


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: kuzulis от Июнь 03, 2014, 14:31
MSVC2012


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: sweaty от Июнь 03, 2014, 14:33
Может быть тогда проблема в моем MinGW компиляторе?
или это исключено?


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: kuzulis от Июнь 03, 2014, 14:39
Исключено.


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: sweaty от Июнь 03, 2014, 14:42
хм.. очень странно..
все подключил, а все равно не видит этот чертов GUID_DEVCLASS_CDROM  :(
очень обидно.
а что еще может означать эта ошибка undefined reference to `GUID_DEVCLASS_CDROM' ??


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: kambala от Июнь 03, 2014, 14:46
может библиотека не подключена какая-нить?


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: Kurles от Июнь 03, 2014, 15:27
может библиотека не подключена какая-нить?
this. Скорее всего не подключена библиотека libuuid.a или ее аналог (uuid.lib?) в msvs


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: sweaty от Июнь 03, 2014, 19:21
А если MinGW стоит компилятор? Что в нем может быть не так?
На 2х машинах уже аналогичная проблема. Инклуды все подключены, даеж в правильном порядке (из-за закольцевки). Совсем не понятно... ???


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: kambala от Июнь 03, 2014, 19:33
посмотри в какой библиотеке лежит твоя функция/константа и допиши ее в .pro: LIBS += -l<библиотека>


Название: Re: Проблема с SetupDiGetClassDevs
Отправлено: Alex Custov от Июнь 03, 2014, 19:42
Код:
DEFINE_GUID(GUID_DEVCLASS_DISPLAY,0x4d36e968,0xe325,0x11ce,0xbf,0xc1,0x08,0x00,0x2b,0xe1,0x03,0x18); 

А зачем этот DEFINE_GUID, если он уже определён в devguid.h?