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() 将成功读取零个字节。

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

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

如果矢量的内容在此操作期间发生更改(如果任何缓冲区) 重叠,或者如果任何缓冲区与矢量重叠,则该行为未指定。

options 留待将来使用,并且必须为 0。

权限

handle 的类型必须为 ZX_OBJ_TYPE_STREAM 且包含 ZX_RIGHT_READ

返回值

zx_stream_readv() 会在成功时返回 ZX_OK,并写入 actual(如果为非 NULL)读取的确切字节数。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

ZX_ERR_WRONG_TYPE handle 不是流句柄。

ZX_ERR_ACCESS_DENIED 句柄没有 ZX_RIGHT_READ 权限。

ZX_ERR_INVALID_ARGS 矢量是无效的 zx_iovec_t,或者 options 是 非零值。

ZX_ERR_NOT_FOUND矢量地址或 矢量不会映射到地址空间中的地址。

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

另请参阅