The BluetoothGATTSetCharacteristicValue function writes the specified characteristic value to the Bluetooth device.
HRESULT BluetoothGATTSetCharacteristicValue( HANDLE hDevice, PBTH_LE_GATT_CHARACTERISTIC Characteristic, PBTH_LE_GATT_CHARACTERISTIC_VALUE CharacteristicValue, BTH_LE_GATT_RELIABLE_WRITE_CONTEXT ReliableWriteContext, ULONG Flags );
Handle to the service.
Pointer to BTH_LE_GATT_CHARACTERISTIC structure containing the parent characteristic.
Pointer to BTH_LE_GATT_CHARACTERISTIC_VALUE structure containing the characteristic value.
BTH_LE_GATT_RELIABLE_WRITE_CONTEXT structure containint the context describing the reliable write operation returned from a previous call to BluetoothGATTBeginReliableWrite.
Flags to modify the behavior of BluetoothGATTSetCharacteristicValue:
|BLUETOOTH_GATT_FLAG_NONE||The client does not have specific GATT requirements (default).|
|BLUETOOTH_GATT_FLAG_CONNECTION_ENCRYPTED||The client requests the data to be transmitted over an encrypted channel.|
|BLUETOOTH_GATT_FLAG_CONNECTION_AUTHENTICATED||The client requests the data to be transmitted over an authenticated channel.|
|BLUETOOTH_GATT_FLAG_WRITE_WITHOUT_RESPONSE||Write without response.|
|BLUETOOTH_GATT_FLAG_SIGNED_WRITE||Signed write. Profile drivers must use with BLUETOOTH_GATT_FLAG_WRITE_WITHOUT_RESPONSE in order to produce signed write without a response.|
The BluetoothGATTSetCharacteristicValue function returns the following values:
||The operation completed successfully.|
||Returned if both a parent service and a service handle are provided and the service hierarchy does not roll up to the provided parent service handle.|
||A parameter was invalid.|
||The target server did not provide an appropriate network response.|
||The request timed-out.|
||The operation ran out of memory.|
||A reliable write operation is already presently underway.|
||The attribute handle given was not valid on this server.|
||The attribute cannot be read.|
||The attribute cannot be written.|
||The attribute PDU was invalid.|
||The attribute requires authentication before it can be read or written.|
||Attribute server does not support the request received from the client.|
||Offset specified was past the end of the attribute.|
||The attribute requires authorization before it can be read or written.|
||Too many prepare writes have been queued.|
||No attribute found within the given attribute handle range.|
||The attribute cannot be read or written using the Read Blob Request.|
||The Encryption Key Size used for encrypting this link is insufficient.|
||The attribute value length is invalid for the operation.|
||The attribute request that was requested has encountered an error that was unlikely, and therefore could not be completed as requested.|
||The attribute requires encryption before it can be read or written.|
||The attribute type is not a supported grouping attribute as defined by a higher layer specification.|
||Insufficient Resources to complete the request.|
||An error that lies in the reserved range has been received.|
Calling BluetoothGATTSetCharacteristicValue after BluetoothGATTBeginReliableWrite, notifies the remote Bluetooth device to store this request into a prepare queue on the device.
If signing is required, then the operation must not require a response, and must not occur over a secure channel.
The parent characteristic is returned from a previous call to BluetoothGATTGetCharacteristics, and must not be altered. Behavior is undefined if the caller does this.
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);
|Minimum supported client||Supported in Windows 8 and later versions of Windows.|