次の方法で共有


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 の動作を変更するためのフラグ:

フラグ 説明
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
予約範囲内にあるエラーが受信されました。

解説

BluetoothGATTBeginReliableWrite の後に BluetoothGATTSetCharacteristicValue を呼び出すと、この要求をデバイスの準備キューに格納するようにリモート 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 でサポートされています。
対象プラットフォーム ユニバーサル
Header bluetoothleapis.h
Library BluetoothAPIs.lib
[DLL] BluetoothAPIs.dll

関連項目

BTH_LE_GATT_CHARACTERISTIC

BTH_LE_GATT_CHARACTERISTIC_VALUE