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 支援。 |
目標平台 | Universal |
標頭 | bluetoothleapis.h |
程式庫 | BluetoothApis.lib |
Dll | BluetoothAPIs.dll |