当前位置:  开发笔记 > 编程语言 > 正文

使用组件关闭计算机

如何解决《使用组件关闭计算机》经验,为你挑选了3个好方法。

如何仅使用汇编代码关闭计算机?



1> user9876..:

您需要说明它是什么处理器系列以及您正在使用的操作系统.还有你的代码运行的特权 - 如果它是内核代码,那么它拥有比用户代码更多的特权.

假设您在Intel x86系列CPU上使用Windows NT系列的某些成员(包括XP或Vista),并且您的代码是正常(用户空间)代码,那么......您需要调用Windows内置函数做这个.你不能只执行一些神奇的装配序列.

即使您可以执行一些神奇的汇编序列,您也不会想要 - 您几乎肯定希望让操作系统有机会将数据从磁盘缓存写入磁盘,并执行其他优雅关闭的操作.

如果您正在为x86编写自己的操作系统,那么您需要查看ACPI(或APM)规范.如果GPL代码没问题,那么相关的Linux内核例程就在这里(ACPI)和这里(APM).



2> Synetech..:

这是我用来在DOS模式下关闭电脑多年的29字节程序.

;Connect to APM API
MOV     AX,5301
XOR     BX,BX
INT     15

;Try to set APM version (to 1.2)
MOV     AX,530E
XOR     BX,BX
MOV     CX,0102
INT     15

;Turn off the system
MOV     AX,5307
MOV     BX,0001
MOV     CX,0003
INT     15

;Exit (for good measure and in case of failure)
RET

您可以在DJGPP使用Ralf Brown的中断列表查找更多功能.



3> 小智..:

在Linux中读取reboot(2).

来源文件:

kernel/sys.c kernel/exit.c和arch/x86/kernel/apm.c

不是一个完整的答案,但我认为这是一个良好的开端.我将不得不阅读我的BIOS机器代码,看看他们做了什么.但这部分是机器特定的.如果您知道主板上的IC控制电源,您可以找出所需的IO端口,寄存器和命令.然后设置正确的板/设备状态,然后发出命令关闭电源.

BIOS通过INT 15h ah = 53h管理电源(所谓的高级电源管理又称APM)函数al = 07在Linux中使用的是设置电源状态cmd.参数bx = 0001h表示所有设备,cx = 0003k表示停止.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有