zx_socket_write

摘要

將資料寫入通訊端。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_socket_write(zx_handle_t handle,
                            uint32_t options,
                            const void* buffer,
                            size_t buffer_size,
                            size_t* actual);

說明

zx_socket_write() 會嘗試將 buffer_size 位元組寫入通訊端 帳號代碼。如果 buffer_size 的值,指向 bytes 的指標可能是 NULL 零時差弱點

如果傳入 NULL actual,系統就會忽略該參數。

如果通訊端沒有通訊端沒有 ZX_SOCKET_STREAM 通訊端的寫入功能, 足以容納所有緩衝區空間。如果寫入的資料量不是零 通訊端,則寫入量會透過 actual 傳回,且呼叫作業成功。 否則,如果通訊端已滿,呼叫會傳回 ZX_ERR_SHOULD_WAIT 和用戶端應等待 (例如 zx_object_wait_one()zx_object_wait_async())。

ZX_SOCKET_DATAGRAM 通訊端寫入不短。如果通訊端 空間不足,無法寫入緩衝區,它不會寫入任何資料並傳回 ZX_ERR_SHOULD_WAIT。如果寫入成功,會透過以下方式傳回 buffer_size實際。嘗試寫入超過 Datagram 通訊端的封包 將會失敗 ZX_ERR_OUT_OF_RANGE

權限

handle 必須是 ZX_OBJ_TYPE_SOCKET 類型,且包含 ZX_RIGHT_WRITE

傳回值

zx_socket_write() 會在成功時傳回 ZX_OK

錯誤

ZX_ERR_BAD_HANDLE 帳號代碼不是有效的帳號代碼。

已透過下列方式,停用這個通訊端端點的ZX_ERR_BAD_STATE寫入功能 zx_socket_set_disposition()

ZX_ERR_WRONG_TYPE 處理常式不是通訊端控制代碼。

ZX_ERR_INVALID_ARGS buffer 為無效指標。

ZX_ERR_ACCESS_DENIED 帳號代碼沒有 ZX_RIGHT_WRITE

ZX_ERR_SHOULD_WAIT 通訊端的基礎緩衝區已滿。

ZX_ERR_OUT_OF_RANGE 通訊端是透過 ZX_SOCKET_DATAGRAMbuffer 大於通訊端剩餘的空間。

ZX_ERR_PEER_CLOSED通訊端的另一端已關閉。

ZX_ERR_NO_MEMORY 因記憶體不足而失敗。 使用者空間無法妥善處理這種 (異常) 錯誤。 在日後的版本中不會再發生這個錯誤。

另請參閱