如何在32位保护模式下关闭机器

如何在32位保护模式下关闭机器

问题描述:

我一直在研究一种关闭计算机而不切换到16位实模式的方法。我无法在32位保护模式下调用BIOS功能。虽然我一直在寻找关于这方面的信息近一周,但我一直没能找到任何能够正确工作的文档或源代码。因为我对低级编程非常陌生,所以我怀疑不切换到实模式就不能关闭计算机。是吗?谢谢。如何在32位保护模式下关闭机器

+0

计算机运行操作系统。操作系统支持关机。在使这个变得复杂的时候没有什么意义,它并不像它会得到很多的使用:) – 2014-09-19 16:46:37

+0

好吧。由于电脑运行操作系统,因此不需要学习任何东西。 – user2972185 2014-09-19 16:52:39

+0

了解如何对操作系统进行编程。学习的好技巧。攻击16位代码不是一项技能,它在20年前变得无关紧要。 – 2014-09-19 17:07:40

您需要使用高级配置和电源接口 - ACPI - 为此。 ACPI是一组庞大而复杂的结构和接口,用于处理诸如电源状态,电池电量,关机,设备省电等事物。如果你正在开发一个操作系统,你必须编写一个驱动程序来设置ACPI及其表格,以便你可以干净地关闭计算机。

我不确定如何直接在Linux下使用ACPI,而且我几乎肯定Windows甚至不允许您直接对ACPI执行任何操作。

http://uefi.org/specifications以下是由UEFI论坛维护的ACPI规范的链接。祝你好运,神速。

+0

谢谢。我已经找到一些关于ACPI的信息,但是我无法使它工作。我需要一个初学者教程或一个解释性的源代码。 – user2972185 2014-09-19 22:17:22

+1

好吧,只要'outw(0xB004,0x00002000)'关闭了机器,而'outb(0x64,0xFE)'重新启动它。谢谢。 – user2972185 2014-09-23 13:48:03

+1

公平的警告,魔术失败(0xB004,0x2000)关闭**只**在qemu和bochs中起作用。我很确定它在VirtualBox或VMWare中不起作用,并且我确信没有物理芯片组支持它。 – 2014-09-24 15:32:57