BluetoothGATTSetCharacteristicValue 函数 (bluetoothleapis.h)
BluetoothGATTSetCharacteristicValue 函数将指定的特征值写入蓝牙设备。
语法
HRESULT BluetoothGATTSetCharacteristicValue(
[in] HANDLE hDevice,
[in] PBTH_LE_GATT_CHARACTERISTIC Characteristic,
[in] PBTH_LE_GATT_CHARACTERISTIC_VALUE CharacteristicValue,
[in, optional] BTH_LE_GATT_RELIABLE_WRITE_CONTEXT ReliableWriteContext,
[in] ULONG Flags
);
参数
[in] hDevice
服务的句柄。
[in] Characteristic
指向包含父特征 的BTH_LE_GATT_CHARACTERISTIC 结构的指针。
[in] CharacteristicValue
指向包含特征值的 BTH_LE_GATT_CHARACTERISTIC_VALUE 结构的指针。
[in, optional] ReliableWriteContext
BTH_LE_GATT_RELIABLE_WRITE_CONTEXT结构,其中包含描述从之前调用 BluetoothGATTBeginReliableWrite 返回的可靠写入操作的上下文。
[in] Flags
用于修改 BluetoothGATTSetCharacteristicValue 行为的标志:
标志 | 描述 |
---|---|
BLUETOOTH_GATT_FLAG_NONE | 客户端没有特定的 GATT 要求 (默认) 。 |
BLUETOOTH_GATT_FLAG_CONNECTION_ENCRYPTED | 客户端请求通过加密通道传输数据。 |
BLUETOOTH_GATT_FLAG_CONNECTION_AUTHENTICATED | 客户端请求通过经过身份验证的通道传输数据。 |
BLUETOOTH_GATT_FLAG_WRITE_WITHOUT_RESPONSE | 不带响应的写入。 |
BLUETOOTH_GATT_FLAG_SIGNED_WRITE | 已签名写入。 配置文件驱动程序必须与 BLUETOOTH_GATT_FLAG_WRITE_WITHOUT_RESPONSE 一起使用,以便生成没有响应的已签名写入。 |
返回值
BluetoothGATTSetCharacteristicValue 函数返回以下值:
返回代码 | 说明 |
---|---|
|
操作已成功完成。 |
|
如果同时提供了父服务和服务句柄,并且服务层次结构不汇总到提供的父服务句柄,则返回 。 |
|
参数无效。 |
|
目标服务器未提供适当的网络响应。 |
|
请求超时。 |
|
操作内存不足。 |
|
可靠的写入操作目前正在进行中。 |
|
给定的属性句柄在此服务器上无效。 |
|
无法读取属性。 |
|
无法写入特性。 |
|
属性 PDU 无效。 |
|
属性需要身份验证,然后才能读取或写入该属性。 |
|
属性服务器不支持从客户端收到的请求。 |
|
指定的偏移量超过属性的末尾。 |
|
属性需要授权才能读取或写入。 |
|
太多准备写入已排队。 |
|
在给定的属性句柄范围内找不到任何属性。 |
|
不能使用读取 Blob 请求读取或写入属性。 |
|
用于加密此链接的加密密钥大小不足。 |
|
属性值长度对于操作无效。 |
|
请求的属性请求遇到不太可能的错误,因此无法按请求完成。 |
|
属性需要加密,然后才能读取或写入该属性。 |
|
属性类型不是更高层规范所定义的受支持的分组属性。 |
|
资源不足,无法完成请求。 |
|
已收到位于保留范围内的错误。 |
注解
在 BluetoothGATTBeginReliableWrite 之后调用 BluetoothGATTSetCharacteristicValue,通知远程蓝牙设备将此请求存储在设备上的准备队列中。
如果需要签名,则操作不得要求响应,并且不得通过安全通道进行。
父特征是从之前调用 BluetoothGATTGetCharacteristics 返回的,不得更改。 如果调用方执行此操作,则行为未定义。
示例
BTH_LE_GATT_CHARACTERISTIC_VALUE newValue;
RtlZeroMemory(&newValue,(sizeof(newValue)));
newValue.DataSize = sizeof(valueData);
newValue.Data = (UCHAR*)&valueData;
// Set the new characteristic value
hr = BluetoothGATTSetCharacteristicValue(hDevice,
parentCharacteristic,
&newValue,
NULL,
BLUETOOTH_GATT_FLAG_NONE);
要求
最低受支持的客户端 | 在 Windows 8 及更高版本的 Windows 中受支持。 |
目标平台 | 通用 |
标头 | bluetoothleapis.h |
Library | BluetoothAPIs.lib |
DLL | BluetoothAPIs.dll |