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,options 的位元設為 1 不支援此位元。

ZX_ERR_NO_MEMORY 因記憶體不足而失敗。

另請參閱