blob: 64c14f775579bdf1e8ea81f1b2fc366cb44d1d0f [file] [log] [blame] [view]
# zx_process_write_memory
## NAME
process_write_memory - Write into the given process's address space.
## SYNOPSIS
```
#include <zircon/syscalls.h>
zx_status_t zx_process_write_memory(zx_handle_t handle, zx_vaddr_t vaddr,
const void* buffer, size_t length, size_t* actual);
```
## DESCRIPTION
**zx_process_write_memory**() attempts to write memory of the specified process.
This function will eventually be replaced with something vmo-centric.
*vaddr* the address of the block of memory to write.
*buffer* pointer to a user buffer containing the bytes to write.
*length* number of bytes to attempt to write. *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 written is stored here.
Less bytes than requested may be returned if *vaddr*+*length*
extends beyond the memory mapped in the process.
## RIGHTS
TODO(ZX-2399)
## RETURN VALUE
**zx_process_write_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.
## ERRORS
**ZX_ERR_ACCESS_DENIED** *handle* does not have the **ZX_RIGHT_WRITE** right.
**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.
## SEE ALSO
[process_read_memory](process_read_memory.md).