Поделиться через


Функция BluetoothGATTSetCharacteristicValue (bluetoothleapis.h)

Функция BluetoothGATTSetCharacteristicValue записывает указанное значение характеристики на устройство Bluetooth.

Синтаксис

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:

Flag Описание
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 возвращает следующие значения:

Код возврата Описание
S_OK
Операция выполнена успешно.
ERROR_ACCESS_DENIED
Возвращается, если предоставляются как родительская служба, так и дескриптор службы, а иерархия служб не выполняет свертку до предоставленного дескриптора родительской службы.
ERROR_INVALID_PARAMETER
Был указан недопустимый параметр.
ERROR_BAD_NET_RESP
Целевой сервер не предоставил соответствующий ответ сети.
ERROR_SEM_TIMEOUT
Истекло время ожидания запроса.
ERROR_NO_SYSTEM_RESOURCES
Для операции не хватает памяти.
ERROR_INVALID_FUNCTION
В настоящее время уже выполняется надежная операция записи.
E_BLUETOOTH_ATT_INVALID_HANDLE
Указанный дескриптор атрибута был недопустимым на этом сервере.
E_BLUETOOTH_ATT_READ_NOT_PERMITTED
Атрибут не может быть прочитан.
E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED
Атрибут не может быть записан.
E_BLUETOOTH_ATT_INVALID_PDU
Недопустимый атрибут PDU.
E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION
Атрибут требует проверки подлинности, прежде чем его можно будет прочитать или записать.
E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED
Сервер атрибутов не поддерживает запрос, полученный от клиента.
E_BLUETOOTH_ATT_INVALID_OFFSET
Указанное смещение прошло после конца атрибута.
E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION
Для чтения или записи атрибута требуется авторизация.
E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL
Слишком много операций подготовки записей поставлено в очередь.
E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND
Атрибут не найден в заданном диапазоне дескрипторов атрибута.
E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG
Атрибут не может быть прочитан или записан с помощью запроса на чтение BLOB-объекта.
E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE
Размер ключа шифрования, используемый для шифрования этой ссылки, недостаточен.
E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH
Длина значения атрибута недопустима для операции.
E_BLUETOOTH_ATT_UNLIKELY
Запрошенный запрос атрибута обнаружил ошибку, которая была маловероятна и поэтому не может быть выполнена в соответствии с запросом.
E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION
Атрибут требует шифрования, прежде чем его можно будет прочитать или записать.
E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE
Тип атрибута не является поддерживаемым атрибутом группирования, как определено в спецификации более высокого уровня.
E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES
Недостаточно ресурсов для выполнения запроса.
E_BLUETOOTH_ATT_UNKNOWN_ERROR
Получено сообщение об ошибке, которая находится в зарезервированном диапазоне.

Комментарии

Вызов BluetoothGATTSetCharacteristicValue после BluetoothGATTBeginReliableWrite уведомляет удаленное устройство Bluetooth о хранении этого запроса в очереди подготовки на устройстве.

Если требуется подписывание, операция не должна требовать ответа и не должна выполняться через безопасный канал.

Родительская характеристика возвращается из предыдущего вызова 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
Библиотека BluetoothAPIs.lib
DLL BluetoothAPIs.dll

См. также раздел

BTH_LE_GATT_CHARACTERISTIC

BTH_LE_GATT_CHARACTERISTIC_VALUE