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}

试试这个:)

+0

是,你是对的,它是错误的GUID。当我们使用我们试图订阅的服务的服务GUID时,我们解决了我们的问题。我们通过与Windows应用商店中的蓝牙LE Explorer应用程序连接来找到服务GUID,并将该GUID复制到我们的代码中。 – ASICNorthIOTDepartment