我正在使用微软推出的蓝牙低功耗(BLE)API和Windows 8,即BluetoothGATTxxx功能。
我的代码在Windows 8.1上运行良好,但我发现在8.1和Windows 10之间BluetoothGATTSetDescriptorValue的行为有所不同。
方案如下:
一切都很好。现在,如果我关闭和打开设备,然后重复步骤2到4,它将在Windows 8.1上正常工作,但在Windows 10上不能正常工作:
BluetoothGATTSetDescriptorValue返回0x80070572,即 HRESULT_FROM_WIN32(ERROR_NO_USER_SESSION_KEY)。
实际上,这意味着用户每次关闭设备时都必须删除配对并重做它。
由于设备具有一些电源管理功能,并且如果它保持闲置太长时间,它将自动关闭,从而使问题变得更糟。如果我不希望用户每次想要使用设备时删除/重做配对,我似乎需要保持活着!
还有其他人遇到过这个问题吗?我在这里和网上尝试了几次搜索,但没有运气。一种解决方案是以编程方式强制进行新的配对,并且由于没有API,因此这将是一个丑陋的黑客攻击。我绝对不想走那条路......