在 x86 实模式下重启非常简单。您可以使用 BIOS 或:
jmp 0xFFFF:0000
Run Code Online (Sandbox Code Playgroud)
但是在保护模式下应该如何重新启动?
有关端口 0xCF9 的信息。
为了写入它,需要访问内核模式(即来自内核驱动程序)。
0xCF9端口可以获得三种值,用于三种类型的复位:
将 4 写入 0xCF9:(INIT) 将初始化 CPU。这意味着它将跳转到启动的初始位置,但它会保持许多 CPU 元素不变。大多数内部表、chaches 等将在 Init 调用中保持不变(但在调用期间可能会发生变化)。
将 6 写入 0xCF9:(RESET) 将重置 CPU,并将所有内部表缓存等清除到初始状态。
将 0xE 写入 0xCF9:(重新启动) 将重新启动主板及其附带的所有部件。
Windows 驱动程序中的示例:
__outbyte(0xCF9, 0xE);
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |