bluetoothGATTSetDescriptorValue 函数 (bluetoothleapis.h)
BluetoothGATTSetDescriptorValue 函数将指定的描述符值写入蓝牙设备。
语法
HRESULT BluetoothGATTSetDescriptorValue(
[in] HANDLE hDevice,
[in] PBTH_LE_GATT_DESCRIPTOR Descriptor,
[in] PBTH_LE_GATT_DESCRIPTOR_VALUE DescriptorValue,
[in] ULONG Flags
);
参数
[in] hDevice
服务的句柄。
[in] Descriptor
指向父描述符的指针。
[in] DescriptorValue
指向描述符值的指针。
[in] Flags
用于修改 BluetoothGATTSetDescriptorValue 行为的标志:
标志 | 描述 |
---|---|
BLUETOOTH_GATT_FLAG_NONE | 客户端没有特定的 GATT 要求 (默认) 。 |
BLUETOOTH_GATT_FLAG_CONNECTION_ENCRYPTED | 客户端请求通过加密通道传输数据。 |
BLUETOOTH_GATT_FLAG_CONNECTION_AUTHENTICATED | 客户端请求通过经过身份验证的通道传输数据。 |
返回值
BluetoothGATTSetDescriptorValue 函数返回以下值:
返回代码 | 说明 |
---|---|
|
操作已成功完成。 |
|
如果同时提供了父服务和服务句柄,并且服务层次结构不汇总到提供的父服务句柄,则返回 。 |
|
参数无效。 |
|
目标服务器未提供适当的网络响应。 |
|
请求超时。 |
|
操作内存不足。 |
|
给定的属性句柄在此服务器上无效。 |
|
无法读取属性。 |
|
无法写入特性。 |
|
属性 PDU 无效。 |
|
属性需要身份验证,然后才能读取或写入该属性。 |
|
属性服务器不支持从客户端收到的请求。 |
|
指定的偏移量超过属性的末尾。 |
|
属性需要授权才能读取或写入。 |
|
太多准备写入已排队。 |
|
在给定的属性句柄范围内找不到任何属性。 |
|
不能使用读取 Blob 请求读取或写入属性。 |
|
用于加密此链接的加密密钥大小不足。 |
|
属性值长度对于操作无效。 |
|
请求的属性请求遇到不太可能的错误,因此无法按请求完成。 |
|
属性需要加密,然后才能读取或写入该属性。 |
|
属性类型不是更高层规范所定义的受支持的分组属性。 |
|
资源不足,无法完成请求。 |
|
已收到位于保留范围内的错误。 |
注解
父描述符必须从之前调用 BluetoothGATTGetDescriptors 返回,并且不得更改。 如果调用方执行此操作,则行为未定义。
示例
BTH_LE_GATT_DESCRIPTOR_VALUE newValue;
RtlZeroMemory(&newValue, sizeof(newValue));
newValue.DescriptorType = ClientCharacteristicConfiguration;
newValue.ClientCharacteristicConfiguration.IsSubscribeToNotification = TRUE;
// Subscribe to an event.
hr = BluetoothGATTSetDescriptorValue(hDevice,
parentDescriptor,
&newValue,
BLUETOOTH_GATT_FLAG_NONE);
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows 8 及更高版本的 Windows 中受支持。 |
目标平台 | 通用 |
标头 | bluetoothleapis.h |
Library | BluetoothApis.lib |
DLL | BluetoothAPIs.dll |