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「實際」,系統會忽略此值。

如果通訊端沒有足夠空間容納所有緩衝區ZX_SOCKET_STREAM 通訊端寫入可能會變得很短。如果寫入通訊端的資料量非零,則會透過實際傳回的資料量,讓呼叫成功。否則,如果通訊端已滿,呼叫會傳回 ZX_ERR_SHOULD_WAIT,而用戶端應等待 (例如使用 zx_object_wait_one()zx_object_wait_async())。

ZX_SOCKET_DATAGRAM 通訊端寫入永不短。如果通訊端的緩衝區空間不足,則通訊端不會寫入任何內容,並傳回 ZX_ERR_SHOULD_WAIT。如果寫入成功,buffer_size 會透過實際傳回。如果嘗試寫入的封包大於資料元通訊端的容量,ZX_ERR_OUT_OF_RANGE 就會失敗。

權限

handle 必須是 ZX_OBJ_TYPE_SOCKET 類型,且具有 ZX_RIGHT_WRITE

傳回值

zx_socket_write() 會在成功時傳回 ZX_OK

錯誤

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

已透過 zx_socket_set_disposition() 停用這個通訊端端點的 ZX_ERR_BAD_STATE 寫入功能。

ZX_ERR_WRONG_TYPE 處理常式不是通訊端控點。

ZX_ERR_INVALID_ARGS 緩衝區 是無效指標。

ZX_ERR_ACCESS_DENIED 處理常式沒有 ZX_RIGHT_WRITE

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

ZX_ERR_OUT_OF_RANGE 通訊端是使用 ZX_SOCKET_DATAGRAM 建立,且緩衝區大於通訊端中的其他空間。

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

ZX_ERR_NO_MEMORY 因記憶體不足而失敗。使用者空間無法以任何方式處理這個錯誤 (極可能) 錯誤。日後的建構作業不會再發生這個錯誤。

另請參閱