摘要
設定寫入配置。
宣告
#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
,且不執行任何動作。
在 disposition 或 disposition_peer 中指定 ZX_SOCKET_DISPOSITION_WRITE_DISABLED
和 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
和 dispositionle 是指在指定通訊端端點上具有緩衝資料的通訊端。
ZX_ERR_WRONG_TYPE
處理常式不是通訊端控點。
ZX_ERR_ACCESS_DENIED
處理常式沒有 ZX_RIGHT_MANAGE_SOCKET
。
ZX_ERR_INVALID_ARGS
disposition 或 disposition_peer 包含上方標記以外的標記或無效的標記組合。