zx_restricted_bind_state

摘要

创建受限状态 VMO 并将其绑定到当前线程。

声明

#include <zircon/syscalls-next.h>

zx_status_t zx_restricted_bind_state(uint32_t options, zx_handle_t* out_vmo);

说明

创建一个 VMO 以保存 zx_restricted_state_t。将 VMO 绑定到当前的 以便后续对 zx_restricted_enter() 的调用使用它 在进入/退出受限模式时恢复/保存受限模式状态。

返回的 VMO out_vmo 类似于 zx_vmo_create(),有些操作不受支持,可能会失败并报错。 例如,不支持调整大小和创建子级 VMO。地图绘制 取消映射,以及通过 zx_vmo_read()/zx_vmo_write() 执行读取/写入操作 支持。

一个线程一次只能绑定一个受限状态 VMO。正在尝试 绑定另一个虚拟机将替换已绑定的 VMO。

只有在关闭最后一个用户句柄、 移除上一位用户映射,并发生以下情况之一:

  • 而是通过 zx_restricted_bind_state() 替换的。

  • 系统会通过 zx_restricted_unbind_state() 明确将其移除。

  • 线程被销毁。

与任何其他 VMO 一样,VMO 映射完毕后,系统会根据其 这样,调用方就可以通过 映射。

在 VMO 的偏移量 0 处进入受限模式 zx_restricted_state_t 后 系统将加载 ,执行将相应地继续。进入受限模式时 则线程的受限状态将以 VMO 的偏移量 0 保存。

options 必须为零。

权限

调用方的作业政策必须允许 ZX_POL_NEW_VMO

错误

ZX_ERR_INVALID_ARGS out_vmo 是无效的指针、NULL 或 out_vmo 是 0 以外的任何值。

ZX_ERR_NO_MEMORY 因内存不足而失败。 用户空间没有好办法处理这种(不太可能)错误。 在将来的版本中,此错误不会再发生。

另请参阅