| <!-- Generated by zircon/scripts/update-docs-from-fidl, do not edit! --> | 
 | # zx_vmar_destroy | 
 |  | 
 | ## Summary | 
 |  | 
 | Destroy a virtual memory address region. | 
 |  | 
 | ## Declaration | 
 |  | 
 | ```c | 
 | #include <zircon/syscalls.h> | 
 |  | 
 | zx_status_t zx_vmar_destroy(zx_handle_t handle); | 
 | ``` | 
 |  | 
 | ## Description | 
 |  | 
 | `zx_vmar_destroy()` unmaps all mappings within the given region, and destroys | 
 | all sub-regions of the region.  Note that this operation is logically recursive. | 
 |  | 
 | This operation does not close *handle*.  Any outstanding handles to this | 
 | VMAR will remain valid handles, but all VMAR operations on them will fail. | 
 |  | 
 | The root VMAR, as obtained by `zx_process_create()`, cannot be destroyed. | 
 |  | 
 | ## Rights | 
 |  | 
 | TODO(fxbug.dev/32253) | 
 |  | 
 | ## Return value | 
 |  | 
 | `zx_vmar_destroy()` returns **ZX_OK** on success. | 
 |  | 
 | ## Errors | 
 |  | 
 | **ZX_ERR_BAD_HANDLE**  *handle* is not a valid handle. | 
 |  | 
 | **ZX_ERR_WRONG_TYPE**  *handle* is not a VMAR handle. | 
 |  | 
 | **ZX_ERR_BAD_STATE**  This region is already destroyed. | 
 |  | 
 | **ZX_ERR_NOT_SUPPORTED** *handle* is a root VMAR. | 
 |  | 
 | ## Notes | 
 |  | 
 | ## See also | 
 |  | 
 |  - [`zx_vmar_allocate()`] | 
 |  - [`zx_vmar_map()`] | 
 |  - [`zx_vmar_protect()`] | 
 |  - [`zx_vmar_unmap()`] | 
 |  | 
 | [`zx_vmar_allocate()`]: vmar_allocate.md | 
 | [`zx_vmar_map()`]: vmar_map.md | 
 | [`zx_vmar_protect()`]: vmar_protect.md | 
 | [`zx_vmar_unmap()`]: vmar_unmap.md | 
 |  |