2014-09-19 65 views
1

我一直在研究一種關閉計算機而不切換到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

回答

2

您需要使用高級配置和電源接口 - 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