Windows: обнаружить одно и то же устройство как в Bluetooth API, так и в setupapi

В настоящее время я создаю программу, которая разделена на две части: в одной я обнаруживаю близлежащие устройства Bluetooth и подключаю их к компьютеру, если имя совпадает, а в другой я ищу устройство с помощью setupapi и получаю дескриптор для связи HID. < br> Моя проблема в том, что я не могу найти ничего, что говорило бы мне о том, что устройство, которое я только что подключил, такое же, как я нашел в setupapi.
Итак, в первой части у меня есть что-то вроде этого:

BLUETOOTH_DEVICE_INFO btdi;
//--- Code omitted ---
BluetoothGetDeviceInfo(radio_handle, &btdi);
if(std::wstring(btdi.szName) == /*my name*/)
    // Device found! now connect
    BluetoothSetServiceState(radio_handle, &btdi, &HumanInterfaceDeviceServiceClass_UUID, BLUETOOTH_SERVICE_ENABLE);

И код, связанный с setupapi:

SP_DEVICE_INTERFACE_DATA device_data;
device_data.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
//--- Code omitted ---
SetupDiEnumDeviceInterfaces(device_infos, NULL, &hid_guid, index, &device_data);

Я думал об использовании bluetooth-адреса устройства, но, похоже, нет способа получить его из setupapi.
Итак, подведем итог: есть ли способ получить адрес устройства из setupi? И, если нет, есть ли другой способ убедиться, что это одно и то же устройство?


person Davide Mor    schedule 02.03.2019    source источник
comment
Есть способ: посмотреть в Реестре. К сожалению, я не могу предоставить больше информации, потому что код является коммерческим.   -  person Mike Petrichenko    schedule 02.03.2019
comment
@MikePetrichenko Я понимаю, что вы имеете в виду ... В основном мне пришлось бы выкапывать значение вручную (под вручную я имею в виду не использовать какой-либо чистый API) из реестра, но это не кажется очень надежным и хакерским ... я прав?   -  person Davide Mor    schedule 02.03.2019


Ответы (1)


Здесь Я разместил код, как найти Wiimote, подключенный как HID, используя его MAC. Вы должны переработать этот код, чтобы он мог использовать ваше устройство HID (изменить VID и PID).

person Mike Petrichenko    schedule 02.03.2019
comment
Отличный ответ! ... благодаря вам я нашел (возможно) еще лучший способ сделать это, он включает использование SetupDiGetDevicePropertyW с DEVPKEY_Device_Parent в качестве ключа, мне он возвращает путь, который можно использовать для проверки Mac, но все же мне нужно некоторое тестирование , я мог бы написать другой ответ, если этот метод окажется лучше - person Davide Mor; 02.03.2019