摘要
按照指定的偏移量將資料寫入串流。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_stream_writev_at(zx_handle_t handle,
uint32_t options,
zx_off_t offset,
const zx_iovec_t* vectors,
size_t num_vectors,
size_t* actual);
說明
zx_stream_writev_at()
會嘗試將位元組寫入資料流,從
指定的「偏移」,來自 vectors 和 num_vectors 指定的緩衝區。
如果成功,系統會透過 actual 傳回實際寫入的位元組數。
如果寫入作業會在串流結束之後寫入,則函式 會試著增加串流內容大小,以便接收 並以零位元組填入任何全新、未寫入的內容。
在寫入一定數量的資料後,如果大小調整作業失敗,
串流,則函式將成功傳回。如果沒有寫入任何位元組
則作業會傳回 ZX_ERR_FILE_BIG
或 ZX_ERR_NO_SPACE
。
。
如果傳入 NULL actual,系統就會忽略該參數。
不會推進串流的跳轉偏移。
在這項作業期間,如果向量的內容發生變化 (若有任何緩衝區) 重疊,或者如果有任何緩衝區與向量重疊,系統就會未指定行為。
options 保留給日後使用,且必須為 0。
權限
handle 必須是 ZX_OBJ_TYPE_STREAM
類型,且包含 ZX_RIGHT_WRITE
。
傳回值
zx_stream_writev_at()
會在成功時傳回 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 或 options
不支援位元已設為 1。
ZX_ERR_NOT_FOUND
:向量地址,或是指定的地址
向量不會對應至位址空間中的地址。
ZX_ERR_BAD_STATE
無法寫入基礎資料來源。
ZX_ERR_FILE_BIG
串流已超過預先定義的大小上限。
ZX_ERR_NO_SPACE
基礎儲存媒介空間不足。