zx_stream_writev

摘要

按照目前的跳轉偏移將資料寫入串流。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_stream_writev(zx_handle_t handle,
                             uint32_t options,
                             const zx_iovec_t* vectors,
                             size_t num_vectors,
                             size_t* actual);

說明

zx_stream_writev() 會嘗試將位元組寫入資料流,從 目前的跳轉偏移 (來自向量num_vectors 指定的緩衝區)。 如果成功,系統會透過 actual 傳回實際寫入的位元組數。

如果 options 包含 ZX_STREAM_APPEND,或者串流處於附加模式,則 串流的跳轉偏移會以不可分割的形式設為串流的內容大小 寫入資料的程序

如果寫入作業會在串流結束之後寫入,則函式 會試著增加串流內容大小,以便接收 並以零位元組填入任何全新、未寫入的內容。

在寫入一定數量的資料後,如果大小調整作業失敗, 串流,則函式將成功傳回。如果沒有寫入任何位元組 則作業會傳回 ZX_ERR_FILE_BIGZX_ERR_NO_SPACE。 。

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

將串流的跳轉偏移依實際寫入的位元組數提前。 如果寫入失敗,跳轉位移可以維持不變,或 已變更為未指定的值

在這項作業期間,如果向量的內容發生變化 (若有任何緩衝區) 重疊,或者如果有任何緩衝區與向量重疊,系統就會未指定行為。

權限

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

傳回值

zx_stream_writev() 會在成功時傳回 ZX_OK,並將寫入 「actual」 (非空值) 的確切寫入位元組數。

錯誤

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

ZX_ERR_WRONG_TYPE 帳號代碼不是串流帳號代碼。

ZX_ERR_ACCESS_DENIED 帳號代碼沒有 ZX_RIGHT_WRITE 的權利。

ZX_ERR_INVALID_ARGS 向量是無效的 zx_iovec_t選項, 不支援位元已設為 1。

ZX_ERR_NOT_FOUND向量地址,或是指定的地址 向量不會對應至位址空間中的地址。

ZX_ERR_BAD_STATE 無法寫入基礎資料來源。

ZX_ERR_FILE_BIG串流已超過預先定義的大小上限。

ZX_ERR_NO_SPACE 基礎儲存媒介空間不足。

另請參閱