当我们的程序到达这个 for 循环时,SetupDiEnumDeviceInterfaces 立即返回 false,因此永远不会运行 for 循环。这告诉我们 SetupDiEnumDeviceInterfaces 没有找到我们的蓝牙设备的接口(interface),即使我们检查了我们的设备已通过应用程序蓝牙 LE Explorer 与我们的计算机配对。我们已经检查过 AGuid 是我们设备的正确 UUID。我们在 Windows 10 上使用 Visual Studio Community 2017 和 BluetoothApis.h。我们如何让 SetupDiEnumDeviceInterfaces 返回我们设备的接口(interface)?
处理 GetBLEHandle(__in 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 而不是接口(interface)。 我使用了{e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
可是我需要 {0850302A-B344-4fda-9BE9-90576B8D46F0}
试试这个:)
关于c++ - SetupDiEnumDeviceInterfaces 不返回我们的蓝牙设备的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45175410/