zx_process_read_memory

摘要

从给定进程的地址空间读取数据。

声明

#include <zircon/syscalls.h>

zx_status_t zx_process_read_memory(zx_handle_t handle,
                                   zx_vaddr_t vaddr,
                                   void* buffer,
                                   size_t buffer_size,
                                   size_t* actual);

说明

zx_process_read_memory() 尝试读取指定进程的内存。

此函数最终将被以 VMO 为中心的功能所取代。

vaddr 要读取的内存块的地址。

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

buffer_size - 尝试读取的字节数。buffer 缓冲区必须较大 至少要有这么多字节就足够了buffer_size 必须大于零 且小于或等于 64MB。

actual 表示读取的实际字节数存储在此处。字节数小于 如果 vaddr+buffer_size 超出内存,则可能会返回所请求的 映射。

权限

handle 的类型必须为 ZX_OBJ_TYPE_PROCESS,包含 ZX_RIGHT_READZX_RIGHT_WRITE

返回值

如果成功,zx_process_read_memory() 会返回 ZX_OK。 如果失败,则返回负的错误值以及 写入 buffer 的字节未定义。

错误

ZX_ERR_ACCESS_DENIED 标识名没有相应的 ZX_RIGHT_READ 权限 或 由于历史原因,需要使用 ZX_WRITE_RIGHT

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

ZX_ERR_BAD_STATE:表示进程的内存无法访问(例如, 进程被终止) 或所请求的内存不可缓存。

ZX_ERR_INVALID_ARGS buffer 是无效的指针或 NULL, 或 buffer_size 为零或大于 64MB。

ZX_ERR_NOT_FOUND如果进程在 请求的地址或 ZX_ERR_OUT_OF_RANGE(如果相应的偏移量) 映射的 VMO 内的 vaddr 大于或等于 VMO 。这些错误代码与 同一地址(即 <ph type="x-smartling-placeholder">synth_code 页面错误的异常报告)。

ZX_ERR_WRONG_TYPE handle 不是进程句柄。

另请参阅