當我們的程序達到此循環時,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時,我們解決了我們的問題。我們通過與Windows應用商店中的藍牙LE Explorer應用程序連接來找到服務GUID,並將該GUID複製到我們的代碼中。 – ASICNorthIOTDepartment