windows - 管理程序类型 1 外部中断处理
问题描述
我在处理类型 1 管理程序的外部中断时遇到问题,类型 2 在 Windows 10 上工作正常,但类型 1 导致 Windows 10 在登录屏幕中挂断。
这就是我启用外部中断的方式:在设置 cpu 时,我启用 VM 退出控制位 15“确认外部中断”和基于引脚的位 0“外部中断退出”,并且我在每个 cpu 上下文中为挂起的中断分配缓冲区。
当 VM 退出原因 1“外部中断退出”时,我执行 VMX 读取 0x4404“VM 退出中断信息”并检查位 31“有效”和位 10:8“中断类型”等于 0“外部中断”,也我检查 VMX 读取 0x4406“退出中断错误代码”的第 11 位,在注入中断之前,我检查是否可中断 VMX 读取 0x6820“访客 RFLAGS”位 9“中断启用标志”和 VMX 读取 0x4824“访客中断状态”位1 "blocking by mov ss", if guest interruptible VMX-write 0x4016 "VM-entry interrupt information field" and VMX-write 0x4018 "VM-entry error code" 如果错误代码有效,否则我将错误代码和中断信息保存到挂起的中断缓冲区并设置中断窗口退出基于主进程的位 2。
当VM退出原因7“中断窗口退出”时,我在分配的缓冲区中搜索挂起的中断,如果找到注入中断,否则清除中断窗口退出。
解决方案
推荐阅读
- guice - 在 guice 中使用地图初始化 mapbinder
- python - Df 标题:在月末插入一整年的标题行,并用零填充未填充的月份
- c# - 我如何在存储过程(sql server)c#中解决这个问题?
- memory - 在多处理器系统中,每个内核之外的内存在概念上是否总是平坦/统一/同步?
- node.js - 命名空间“NodeJS”没有导出成员“超时”
- c++ - 为什么 `assert` 宏即使使用 `NDEBUG` 也有价值?
- angular - 如何修复响应标头的 CORS 错误
- regex - 根据匹配标准将 XML 元素内容从 1 修改为 5?
- node.js - 如何从 node.js 写入 Microsoft 任务?
- mysql - 在 VPS 上安装 Apache 和 MySQL