摘要
从 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 由分页器和
分页器已损坏。
另请参阅
zx_vmo_create()
zx_vmo_create_child()
zx_vmo_get_size()
zx_vmo_op_range()
zx_vmo_set_cache_policy()
zx_vmo_set_size()
zx_vmo_write()