1# zx_vmo_read
2
3## NAME
4
5<!-- Updated by update-docs-from-abigen, do not edit. -->
6
7vmo_read - read bytes from the VMO
8
9## SYNOPSIS
10
11<!-- Updated by update-docs-from-abigen, do not edit. -->
12
13```
14#include <zircon/syscalls.h>
15
16zx_status_t zx_vmo_read(zx_handle_t handle,
17                        void* buffer,
18                        uint64_t offset,
19                        size_t buffer_size);
20```
21
22## DESCRIPTION
23
24`zx_vmo_read()` attempts to read exactly *buffer_size* bytes from a VMO at *offset*.
25
26*buffer* pointer to a user buffer to read bytes into.
27
28*buffer_size* number of bytes to attempt to read. *buffer* buffer should be large
29enough for at least this many bytes.
30
31## RIGHTS
32
33<!-- Updated by update-docs-from-abigen, do not edit. -->
34
35*handle* must be of type **ZX_OBJ_TYPE_VMO** and have **ZX_RIGHT_READ**.
36
37## RETURN VALUE
38
39`zx_vmo_read()` returns **ZX_OK** on success, and exactly *buffer_size* bytes will
40have been written to *buffer*.
41In the event of failure, a negative error value is returned, and the number of
42bytes written to *buffer* is undefined.
43
44## ERRORS
45
46**ZX_ERR_BAD_HANDLE**  *handle* is not a valid handle.
47
48**ZX_ERR_WRONG_TYPE**  *handle* is not a VMO handle.
49
50**ZX_ERR_ACCESS_DENIED**  *handle* does not have the **ZX_RIGHT_READ** right.
51
52**ZX_ERR_INVALID_ARGS**  *buffer* is an invalid pointer or NULL.
53
54**ZX_ERR_OUT_OF_RANGE**  *offset* starts at or beyond the end of the VMO,
55                         or VMO is shorter than *buffer_size*.
56
57**ZX_ERR_BAD_STATE**  VMO has been marked uncached and is not directly readable.
58
59## SEE ALSO
60
61 - [`zx_vmo_clone()`]
62 - [`zx_vmo_create()`]
63 - [`zx_vmo_get_size()`]
64 - [`zx_vmo_op_range()`]
65 - [`zx_vmo_set_cache_policy()`]
66 - [`zx_vmo_set_size()`]
67 - [`zx_vmo_write()`]
68
69<!-- References updated by update-docs-from-abigen, do not edit. -->
70
71[`zx_vmo_clone()`]: vmo_clone.md
72[`zx_vmo_create()`]: vmo_create.md
73[`zx_vmo_get_size()`]: vmo_get_size.md
74[`zx_vmo_op_range()`]: vmo_op_range.md
75[`zx_vmo_set_cache_policy()`]: vmo_set_cache_policy.md
76[`zx_vmo_set_size()`]: vmo_set_size.md
77[`zx_vmo_write()`]: vmo_write.md
78