摘要
从 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,options 中有一个不受支持的位被设为 1。
ZX_ERR_NO_MEMORY 因内存不足而失败。