windows:在蓝牙 api 和设置 api 上检测相同的设备
windows: detect same device on both bluetooth api and setupapi
我目前正在创建一个分为两部分的程序,一部分用于检测附近的蓝牙设备并在名称匹配时将它们连接到电脑,另一部分用于使用 setupapi 搜索设备并获取句柄用于 HID 通信。
我的问题是我找不到任何信息表明我刚刚连接的设备与我在 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);
我正在考虑使用设备的蓝牙地址,但似乎无法从 setupapi 获取该地址。
那么,回顾一下,有什么方法可以从 setupi 获取设备地址吗?而且,如果不是,是否有任何其他方法可以确保它们是同一台设备?
我发布了如何使用其 MAC 找到连接为 HID 的 Wiimote 的代码。您必须重新编写该代码,以便它可以使用您的 HID 设备(更改 VID 和 PID)。
我目前正在创建一个分为两部分的程序,一部分用于检测附近的蓝牙设备并在名称匹配时将它们连接到电脑,另一部分用于使用 setupapi 搜索设备并获取句柄用于 HID 通信。
我的问题是我找不到任何信息表明我刚刚连接的设备与我在 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);
我正在考虑使用设备的蓝牙地址,但似乎无法从 setupapi 获取该地址。
那么,回顾一下,有什么方法可以从 setupi 获取设备地址吗?而且,如果不是,是否有任何其他方法可以确保它们是同一台设备?