2017-07-18 32 views
0

當我們的程序達到此循環時,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++) { 

回答

0

很可能是因爲錯誤的GUID 我有同樣的問題。

我指出了類的GUID而不是接口。 我用{e0cbf06c-CD8b的-4647-bb8a-263b43f0f974}

不過,但我需要 {0850302A-B344-4fda-9BE9-90576B8D46F0}

試試這個:)

+0

是,你是對的,它是錯誤的GUID。當我們使用我們試圖訂閱的服務的服務GUID時,我們解決了我們的問題。我們通過與Windows應用商店中的藍牙LE Explorer應用程序連接來找到服務GUID,並將該GUID複製到我們的代碼中。 – ASICNorthIOTDepartment