zx_process_read_memory


英文原文快照


名称

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

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_process_read_memory(zx_handle_t process, zx_vaddr_t vaddr,
  3. void* buffer, size_t length, size_t* actual);

描述

zx_process_read_memory() 的功能是尝试读取指定进程的内存数据。

该函数最终会被一些以vmo为中心的函数功能所取代。

vaddr:需要读取的内存块地址。 buffer:指向用户要读取的字节的缓冲区的指针。

length是尝试读取的字节数。 buffer必须至少有length字节的空间。 length必须大于零且不超过64MB。

读取的实际字节数存储在actual_size中。 如果vaddr+length超出进程中映射的内存,则可能会返回比请求的字节数少的字节。

权限

TODO(ZX-2399)

返回值

zx_process_read_memory() 调用成功则返回ZX_OK。如果调用失败,则返回负的错误码,并且写入到buffer的字节数是不确定的。

错误码

ZX_ERR_ACCESS_DENIEDhandle没有ZX_RIGHT_READ权限或因历史原因需要的ZX_WRITE_RIGHT

ZX_ERR_BAD_HANDLEhandle是无效句柄。

ZX_ERR_BAD_STATE:进程的内存不可访问(例如,进程正在终止过程中),或者请求的内存区域不可被缓存。

ZX_ERR_INVALID_ARGSbuffer是无效指针或为NULL,或length为零或大于64MB。

ZX_ERR_NO_MEMORY:进程在请求的地址参数上没有映射的内存。

ZX_ERR_WRONG_TYPEhandle不是进程类型的句柄。

另见

process_write_memory.