总结
从具有指定偏移量的数据流中读取数据。
声明
#include <zircon/syscalls.h>
zx_status_t zx_stream_readv_at(zx_handle_t handle,
uint32_t options,
zx_off_t offset,
zx_iovec_t* vectors,
size_t num_vectors,
size_t* actual);
说明
zx_stream_readv_at()
会尝试从数据流中从给定的 offset 开始将字节读取到 vectors 和 num_vectors 指定的缓冲区。如果成功,将通过 actual 返回实际读取的字节数。
如果给定的 offset 超出了数据流末尾,zx_stream_readv_at()
将成功读取 0 个字节。
如果传入 NULL actual,它将被忽略。
不推进流的定位偏移量。
如果 vectors 的内容在此操作期间发生变化、有任何缓冲区重叠,或者任何缓冲区与 vectors 重叠,则不指定行为。
options 已预留以供将来使用,并且必须为 0。
权限
handle 必须为 ZX_OBJ_TYPE_STREAM
类型,且具有 ZX_RIGHT_READ
。
返回值
zx_stream_readv_at()
会在成功时返回 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
表示 vectors 地址或 vectors 中指定的地址不会映射到地址空间中的地址。
ZX_ERR_BAD_STATE
,表示底层数据源无法读取。