SetupDiEnumDeviceInterfaces不会返回我们蓝牙设备的接口
问题描述:
当我们的程序达到此循环时,SetupDiEnumDeviceInterfaces会立即返回false,因此永远不会通过for循环运行。这告诉我们SetupDiEnumDeviceInterfaces找不到我们的蓝牙设备的接口,尽管我们通过应用程序Bluetooth LE Explorer检查了我们的设备是否与我们的计算机配对。我们已经检查过,AGuid是我们设备的正确UUID。我们在Windows 10上使用带有BluetoothApis.h的Visual Studio Community 2017。我们如何让SetupDiEnumDeviceInterfaces返回我们设备的接口?SetupDiEnumDeviceInterfaces不会返回我们蓝牙设备的接口
HANDLE GetBLEHandle(__在GUID AGuid)
{
HDEVINFO hDI;
SP_DEVICE_INTERFACE_DATA did;
SP_DEVINFO_DATA dd;
GUID BluetoothInterfaceGUID = AGuid;
HANDLE hComm = NULL;
hDI = SetupDiGetClassDevs(&BluetoothInterfaceGUID, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
if (hDI == INVALID_HANDLE_VALUE) return NULL;
did.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
dd.cbSize = sizeof(SP_DEVINFO_DATA);
for (DWORD i = 0; SetupDiEnumDeviceInterfaces(hDI, NULL, &BluetoothInterfaceGUID, i, &did); i++) {
答
很可能是因为错误的GUID 我有同样的问题。
我指出了类的GUID而不是接口。 我用{e0cbf06c-CD8b的-4647-bb8a-263b43f0f974}
不过,但我需要 {0850302A-B344-4fda-9BE9-90576B8D46F0}
试试这个:)
是,你是对的,它是错误的GUID。当我们使用我们试图订阅的服务的服务GUID时,我们解决了我们的问题。我们通过与Windows应用商店中的蓝牙LE Explorer应用程序连接来找到服务GUID,并将该GUID复制到我们的代码中。 – ASICNorthIOTDepartment