Duplicate a handle.
#include <zircon/syscalls.h> zx_status_t zx_handle_duplicate(zx_handle_t handle, zx_rights_t rights, zx_handle_t* out);
zx_handle_duplicate() creates a duplicate of handle, referring
to the same underlying object, with new access rights rights.
To duplicate the handle with the same rights use ZX_RIGHT_SAME_RIGHTS. If different
rights are desired they must be strictly lesser than of the source handle. It is possible
to specify no rights by using ZX_RIGHT_NONE. To remove ZX_RIGHT_DUPLICATE right when
transferring through a channel, use
handle must have ZX_RIGHT_DUPLICATE.
zx_handle_duplicate() returns ZX_OK and the duplicate handle via out on success.
ZX_ERR_BAD_HANDLE handle isn't a valid handle.
ZX_ERR_INVALID_ARGS The rights requested are not a subset of handle rights or out is an invalid pointer.
ZX_ERR_ACCESS_DENIED handle does not have ZX_RIGHT_DUPLICATE and may not be duplicated.
ZX_ERR_NO_MEMORY Failure due to lack of memory. There is no good way for userspace to handle this (unlikely) error. In a future build this error will no longer occur.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2019-11-21.