Zx_stream_readv

总结

从当前跳转偏移量处读取数据。

声明

#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() 会尝试将流中的字节从当前定位偏移量读取到由 vectorsnum_vectors 指定的缓冲区。 如果读取成功,则通过 actual 返回实际读取的字节数。

如果当前跳转偏移量超出数据流的末尾,zx_stream_readv() 将会成功读取 0 个字节。

如果传入 NULL actual,它将被忽略。

以读取的实际字节数快进流的搜寻偏移量。 如果读取失败,跳转偏移量可能会保持不变或更改为未指定的值。

如果 vectors 的内容在此操作期间发生变化、有任何缓冲区重叠,或者任何缓冲区与 vectors 重叠,则不指定行为。

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 表示 vectors 地址或 vectors 中指定的地址不会映射到地址空间中的地址。

ZX_ERR_BAD_STATE,表示底层数据源无法读取。

另请参阅