process_read_memory - Read from the given process's address space.
#include <zircon/syscalls.h>
zx_status_t zx_process_read_memory(zx_handle_t process, zx_vaddr_t vaddr,
void* buffer, size_t length, size_t* actual);
zx_process_read_memory() attempts to read memory of the specified process.
This function will eventually be replaced with something vmo-centric.
vaddr the address of the block of memory to read.
buffer pointer to a user buffer to read bytes into.
length number of bytes to attempt to read. buffer buffer must be large enough for at least this many bytes. length must be greater than zero and less than or equal to 64MB.
actual_size the actual number of bytes read is stored here. Less bytes than requested may be returned if vaddr+length extends beyond the memory mapped in the process.
TODO(ZX-2399)
zx_process_read_memory() returns ZX_OK on success. In the event of failure, a negative error value is returned, and the number of bytes written to buffer is undefined.
ZX_ERR_ACCESS_DENIED handle does not have the ZX_RIGHT_READ right or ZX_WRITE_RIGHT is needed for historical reasons.
ZX_ERR_BAD_HANDLE handle is not a valid handle.
ZX_ERR_BAD_STATE the process's memory is not accessible (e.g., the process is being terminated), or the requested memory is not cacheable.
ZX_ERR_INVALID_ARGS buffer is an invalid pointer or NULL, or length is zero or greater than 64MB.
ZX_ERR_NO_MEMORY the process does not have any memory at the requested address.
ZX_ERR_WRONG_TYPE handle is not a process handle.