Zx_vmo_read

摘要

从 VMO 读取字节。

声明

#include <zircon/syscalls.h>

zx_status_t zx_vmo_read(zx_handle_t handle,
                        void* buffer,
                        uint64_t offset,
                        size_t buffer_size);

说明

zx_vmo_read() 尝试从虚拟内存正好读取 buffer_size 字节。 对象 (VMO) 设为 offset

指向要读取字节的用户缓冲区的 buffer 指针。

buffer_size - 尝试读取的字节数。buffer 缓冲区应该较大 至少要有这么多字节就足够了

权限

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

返回值

zx_vmo_read() 会在成功时返回 ZX_OK,而恰好 buffer_size 字节 已写入缓冲区。 如果失败,则返回负的错误值以及 写入 buffer 的字节未定义。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

ZX_ERR_WRONG_TYPE handle 不是 VMO 句柄。

ZX_ERR_ACCESS_DENIED标识名没有 ZX_RIGHT_READ 权限,或者 或 [buffer, buffer + buffer_size) 不可写入。

ZX_ERR_INVALID_ARGS buffer 是无效的指针或 NULL。

ZX_ERR_NOT_FOUND buffer 地址不会映射到地址空间中的地址。

ZX_ERR_OUT_OF_RANGE 偏移量 + buffer_size 大于 VMO。

ZX_ERR_BAD_STATE VMO 已被标记为未缓存且无法直接读取,或者该 VMO 已被 而分页器或 VMO 的状态不佳,导致请求的网页 填充。

ZX_ERR_IO VMO 由分页器支持,且分页器在读入时遇到了 I/O 错误 请求的网页

ZX_ERR_IO_DATA_INTEGRITY VMO 由分页器和 分页器已损坏。

另请参阅