zx_stream_create

摘要

从 VMO 创建数据流。

声明

#include <zircon/syscalls.h>

zx_status_t zx_stream_create(uint32_t options,
                             zx_handle_t vmo,
                             zx_off_t seek,
                             zx_handle_t* out_stream);

说明

zx_stream_create() 会创建一个流,用于读取和写入底层 VMO 中的数据。

音频流的跳转偏移量初始化为 seek

选项

ZX_STREAM_MODE_READ:该信息流将用于读取。如果指定的 vmo 缺少 ZX_RIGHT_READ,此函数将返回 ZX_ERR_ACCESS_DENIED。否则,系统会将 ZX_RIGHT_READ 作为权限包含在创建的串流对象中。

ZX_STREAM_MODE_WRITE 该流将用于写入。如果给定的 vmo 缺少 ZX_RIGHT_WRITE,此函数将返回 ZX_ERR_ACCESS_DENIED。否则,系统会将 ZX_RIGHT_WRITE 作为权限包含在创建的串流对象中。

ZX_STREAM_MODE_APPEND 流是在附加模式下创建的。在追加模式下,流会在向 zx_stream_writev() 写入数据之前,将流的跳转偏移量原子地设置为流的内容大小。

权限

TODO(https://fxbug.dev/42107318)

返回值

zx_stream_create() 会在成功时返回 ZX_OK。如果出现 则会返回以下某个值。

错误

ZX_ERR_BAD_HANDLE vmo 不是有效的句柄。

ZX_ERR_WRONG_TYPE vmo 是连续的、物理或非 VMO 句柄。

ZX_ERR_ACCESS_DENIED vmo 不具备指定 选项。

ZX_ERR_INVALID_ARGS out_stream 是无效的指针或 NULL,out_stream 将不受支持的位设为 1。

ZX_ERR_NO_MEMORY 因内存不足而失败。

另请参阅