摘要
設定寫入配置。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_socket_set_disposition(zx_handle_t handle,
uint32_t disposition,
uint32_t disposition_peer);
說明
zx_socket_set_disposition
會設定
zx_socket_write()
會呼叫通訊端控制代碼及其對等點。
可使用的有效處理標幟:
ZX_SOCKET_DISPOSITION_WRITE_DISABLED
- 停用指定的寫入功能
通訊端端點設定完成後,寫入指定通訊端端點的作業就會失敗
只在 ZX_ERR_BAD_STATE
。從指定的通訊端端點讀取資料
成功直到用盡指定通訊端端點中緩衝的所有資料。
且失敗時使用 ZX_ERR_BAD_STATE
。
ZX_SOCKET_DISPOSITION_WRITE_ENABLED
- 為指定值啟用寫入功能
通訊端端點設定完成後,即可從指定的通訊端寫入及讀取資料
端點的行為會與 zx_socket_write()
中指定的值相同
zx_socket_read()
。
無法在通訊端指定 ZX_SOCKET_DISPOSITION_WRITE_ENABLED
含有緩衝資料的端點這麼做
zx_socket_set_disposition
會傳回 ZX_ERR_BAD_STATE
,但沒有任何動作
。
無法同時指定 ZX_SOCKET_DISPOSITION_WRITE_DISABLED
和
disposition 或 disposition_peer 的 ZX_SOCKET_DISPOSITION_WRITE_ENABLED
;
這樣會導致 zx_socket_set_disposition
ZX_ERR_INVALID_ARGS
,且未採取任何行動。
權限
handle 必須是 ZX_OBJ_TYPE_SOCKET
類型,且包含 ZX_RIGHT_MANAGE_SOCKET
。
傳回值
zx_socket_set_disposition()
會在成功時傳回 ZX_OK
。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_BAD_STATE
disposition 或 disposition_peer 包含
ZX_SOCKET_DISPOSITION_WRITE_ENABLED
和 handle 指的是
特定通訊端端點的緩衝資料
ZX_ERR_WRONG_TYPE
處理常式不是通訊端控制代碼。
ZX_ERR_ACCESS_DENIED
帳號代碼沒有 ZX_RIGHT_MANAGE_SOCKET
。
ZX_ERR_INVALID_ARGS
disposition 或 disposition_peer 含有標記
或標記的組合無效