我正在尝试写入 GAP 服务 (0x180) 特征和 0x2A04
每当我尝试写入 0x2A04(连接参数)或 0x0200(设备名称)时,
var devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromShortId(0x1800));
var service = await GattDeviceService.FromIdAsync(devices[0].Id);
var gapData = service.GetCharacteristics(new Guid("00002A04-0000-1000-8000-00805f9b34fb"))[0];
var raw = await gapData.ReadValueAsync();
byte[] conParas = new byte[raw.Value.Length];
DataReader.FromBuffer(raw.Value).ReadBytes(conParas);
//I can breakpoint and verify that the read works fine
var status = await gapData.WriteValueAsync(conParas.AsBuffer());
并调用 WriteValueAsync(),程序在该行中断,我的异常是
mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的异常,但未在用户代码中处理
附加信息:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
我不太确定参数被拒绝的堆栈级别 - 我什至不知道参数是否到达 BLE 设备。但是,由于我可以写入其他 GATT 服务并从 GAP 特征中读取,我相信它是设备。
任何人都可以看到一个万无一失的方法来发现这个问题来自哪里?
谢谢托马斯