摘要
在目前跳轉偏移中讀取串流資料。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_stream_readv(zx_handle_t handle,
uint32_t options,
zx_iovec_t* vectors,
size_t num_vectors,
size_t* actual);
說明
zx_stream_readv()
會嘗試從目前跳轉位移,從向量和num_vectors指定的緩衝區中讀取串流的位元組。如果成功,系統會透過「實際」傳回實際讀取的位元組數。
如果目前跳轉偏移超出串流的結尾,zx_stream_readv()
將成功讀取零位元組。
如果傳入 NULL「實際」,系統會忽略此值。
將串流的跳轉偏移量乘以實際讀取的位元組數。如果讀取失敗,搜尋偏移值可以維持不變,或已變更為未指定的值。
如果在此作業期間,「向量」的內容有重疊、任何緩衝區重疊,或是有任何緩衝區與「向量」重疊,系統就會未指定行為。
options 保留供日後使用,且必須為 0。
權限
handle 必須是 ZX_OBJ_TYPE_STREAM
類型,且具有 ZX_RIGHT_READ
。
傳回值
zx_stream_readv()
會在成功時傳回 ZX_OK
,如為實際 (非 NULL) 讀取到確切讀取的位元組數。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
帳號代碼不是串流帳號代碼。
ZX_ERR_ACCESS_DENIED
處理常式沒有 ZX_RIGHT_READ
權利。
ZX_ERR_INVALID_ARGS
向量是無效的 zx_iovec_t
,或者選項為非零。
ZX_ERR_NOT_FOUND
「向量」地址或是「向量」中指定的地址,與地址空間中的地址不符。
ZX_ERR_BAD_STATE
無法讀取基礎資料來源。