## vm_read

Function - Read the specified range of target task's address space.

### SYNOPSIS

    kern_return_t   vm_read
                    (vm_task_t                          target_task,
                     vm_address_t                           address,
                     vm_size_t                                 size,
                     size                                  data_out,
                     target_task                         data_count);

#### Overwrite form:

    kern_return_t   vm_read_overwrite
                    (vm_task_t                          target_task,
                     vm_address_t                           address,
                     vm_size_t                                 size,
                     pointer_t                              data_in,
                     target_task                         data_count);

### PARAMETERS

target_task
  [in task send right] The port for the task whose memory is to be read.

address
  [in scalar] The address at which to start the read.

size
  [in scalar] The number of bytes to read.

data_out
  Out-pointer to dynamic array of bytes returned by the read.

data_in
  In-pointer to array of bytes that will be overwritten with the data returned by the read.

data_count
  [in/out scalar] On input, the maximum size of the buffer; on output, the size returned (in natural-sized units).

### DESCRIPTION

The vm_read and vm_read_overwrite functions read a portion of a task's virtual memory (they enable tasks to read other tasks' memory). The vm_read function returns the data in a dynamically allocated array of bytes; the vm_read_overwrite function places the data into a caller-specified buffer (the data_in parameter).

### NOTES

This interface is machine word length specific because of the virtual address parameter.

### RETURN VALUES

KERN_PROTECTION_FAILURE
  Specified memory is valid, but does not permit reading.

KERN_INVALID_ADDRESS
  The address is illegal or specifies a non-allocated region, or there are less than size bytes of data following the address, or the region specified by the data_in parameter cannot be written to.

### RELATED INFORMATION

Functions: vm_copy, vm_deallocate, vm_write.