关闭一台电脑的最简单方法就是按电源键,或者点击操作系统(如Windows)的关机按钮,当触发该操作时,操作系统将会将自己关闭,然后断掉主板的电源。更暴力一点的就是长按电源键,甚至拔电源。

本文将介绍一种通过软件的方式,将电脑瞬间关闭。

以Windows操作系统为例,为了实现该操作,需要下载一个免费的软件rweverything,也称为RW,可以通过该链接直接在官网上下载http://rweverything.com/downloads/RwPortableX64V1.7.zip,该软件不用安装,解压后就可以直接运行。

1. 进入Windows操作系统后,以管理员身份打开Rw.exe,然后点击上方的ACPI按钮:

2. 在弹出的ACPI表界面中选择DSDT标签页

3. 在DSDT页面中,寻找_S4 Package,可以通过多次点击左边的_S4来快速定位到_S4 Package的位置,同时记下_S4 Package的第一个值,在本例中是0x05

4. 点开ACPI Table中的FACP标签页,然后找到PM1a_CNT_BLK项,PM1a_CNT_BLK项的值为一个IO port的地址,在本例中为0x4004,也就是十进制的16388,记住这个地址。

5. 点击RW上边的IO Space按钮,打开IO Space窗口

然后将IO Base设置为前面PM1a_CNT_BLK项的值,由于设置的是Base,可以有一定的偏移量所以这边将IO Base设置为0x4000,可以访问到0x4004的地址即可,点击OK,打开IO Space窗口。

6. 点击IO Space窗口的16 bit按钮,让窗口中的数据以16bit为单元进行显示。同时双击PM1a_CNT_BLK位置即位置为0x4004的数值(如下红框所示)

打开IO Space 4004的编辑界面

7. 对0x4004的数据进行编辑(点击相应的位置,输入数值即可实现编辑),将bit13设置为1,同时bit10~bit12设置为步骤3中查找的_S4 Package的第一个数值,本例中为0x05,即将bit10~12设置为二进制的101。

最后点击"Done"按钮后,电脑瞬间就被关闭了。

基本原理说明

计算机行业中,有一个标准ACPI(Advanced Configuration and Power Management Interface),对计算机的电源管理进行了规定(只是标准的一小部分),其中包括对计算机电源状态的基本定义,包括以下几种基本状态:

  • S0,电脑正常工作,计算机的所有硬件设备全部处于打开或正常工作状态。
  • S1,也称为POS(Power on Suspend),CPU停止工作,其它的硬件设备仍然正常工作。
  • S2,CPU处于停止运作状态,总线时钟也被关闭,但其余的硬件设备仍然运转。
  • S3,STR(Suspend to RAM,挂起到内存),电源继续为内存供电,以确保数据未丢失,而其它的设备均处于关闭状态。该状态对应到Windows的睡眠状态。
  • S4,STD(Suspend to Disk,挂起到磁盘),将内存数据保存到磁盘,然后关闭系统。该状态对应到Windows的休眠状态。
  • S5,所有硬件设备(包括电源)全部关闭,即关机(shutdown)。

通常情况下,我们的电脑只会向用户提供S3、S4和S5的状态,分别对应了睡眠、休眠和关机。而S1和S2的定义比较模糊,现实中很少使用。

计算机上,ACPI相关的信息由UEFI/BIOS在初始化系统的时候,通过建立ACPI Table的形式传递给OS,ACPI表是一个大表,里面又会分很多小的表,如步骤2、4中提到的DSDT(Differentiated System Description Table)和FACP(Fixed ACPI Description Table)表。这些表一方面提供了计算机系统中的一些硬件设备相关的信息,另一方面也提供了一些操作方法。

另外计算机主板为了支持ACPI标准,还需要实现一些ACPI标准中定义的硬件寄存器用于控制主板的电源,如前面步骤4中提到的PM1a_CNT_BLK寄存器,该寄存器用于控制主板的电源状态。如下图所示:

  • 其中bit 12:10即为Sleep Type,也就是对应到前面的Sx状态,而具体Sx状态要对应到那个具体的数值,则在步骤3中的_Sx Package中定义,所以在对该区域进行写的时候,需要先查询DSDT表中_Sn Package的值(有些主板可能会实现多个PM Control Register,所以会看到_Sn Package的值可能不止一个,不过一般情况下,个人PC一般只会实现一个PM Control Register,所以大部分情况下只需要关注_Sn Package的第一个值即可)。
  • bit13则是提供一个接口,让写到SLP_TYPx的值生效。

目前,大部分的计算机都会遵循ACPI标准,即在硬件上实现ACPI标准规定的寄存器,同时UEFI/BIOS在初始化系统的时候,会收集ACPI相应的信息,以ACPI Table的形式呈现给OS。

在本例中,我们实际上是将S4对应的SLP_TYPx值写进去,即让计算机主板在电源上直接进入休眠对应的状态(一般情况下,S4休眠状态和S5关机状态,在主板电源来看是一样的,故在本例中,_S4 Pakage和_S5 Package的值是一样的),没有等OS在软件上进行相应的准备和处理,如应用程序和操作系统的关闭。

所以,在本质上,该操作和直接长按电源键强关电脑的操作是一样的,也会造成数据的丢失,只是我们是通过软件的方式更加直接地去操控主板上电源管理相关的寄存器。

教你如何将电脑瞬间关掉相关推荐

  1. 未能初始化appscan应用程序现在将关闭_教你如何将电脑瞬间关掉

    关闭一台电脑的最简单方法就是按电源键,或者点击操作系统(如Windows)的关机按钮,当触发该操作时,操作系统将会将自己关闭,然后断掉主板的电源.更暴力一点的就是长按电源键,甚至拔电源. 本文将介绍一 ...

  2. 学用计算机图片,电脑怎么截图?1分钟教你学会用电脑自带截图工具瞬间截图...

    电脑截图相信很多朋友经常都会用到,其实通过电脑自带的截图工具就可以非常方便的截图,下面小编花1分钟教大家如何用电脑自带截图工具瞬间截图,希望对电脑小白同学快速掌握技能有所帮助. 步骤一:首先找到键盘上 ...

  3. 教你怎样解除电脑开机密码

    教你怎样解除电脑开机密码!!!此方法仅供计算机教师交流,严禁作为非法手段使用! 方法一在开机时,按下F8进入"带命令提示符的安全"模式: 输入"NET USER+用户名+ ...

  4. Tool:微信使用技巧之手把手教你如何在电脑端同时登录多个微信账号之图文教程详细攻略

    Tool:微信使用技巧之手把手教你如何在电脑端同时登录多个微信账号之图文教程详细攻略 导读:有时候,微信满了,需要多个微信账号在电脑端同时登陆来洽谈业务,那么如何在电脑端,同时登陆多个微信账号呢?今天 ...

  5. 教你如何让电脑的ADSL宽带连接开机自动拨号

    教你如何让电脑的ADSL宽带连接开机自动拨号. 事情是这样的,因为黯神伤情很不习惯ADSL每次开机都要自己拨号. 那么能不能让ADSL开机就自己拨号呢?答案当然是肯定的.(以下内容高手跳过) 黯神伤情 ...

  6. 教你怎样在电脑上建一个绝密目录

    教你怎样在电脑上建一个绝密目录 电脑中总有一些私密文件或者公司客户关键文件不想让别人看到或者窃取篡改,怎样建立一个别人都打不开的目录,简单几招请往下看! 1.在e盘中,建一个命名为"绝密文件 ...

  7. 计算机windows10属性配置,电脑显示属性设置,教你win10系统电脑显示属性的设置教程...

    今天小编教你win10系统电脑显示属性的设置教程,显卡作为计算机最为基本的配置和最重要的配件之一,承担着输出显示图形的任务.不知电脑显卡设置在哪里打开及如何设置的用户,请来看看下面的介绍吧.显卡是一台 ...

  8. xpwifi热点设置android,教你在XP电脑中开启设置WiFi热点使用的步骤

    对于系统中网络的连接问题是最重要的,那在处理不同的错误的情况中,对于无线网络的设置也就是我们说的WiFi的使用也是会遇到问题的,那在操作的时候对于电脑中是怎么实现设置WiFi热点的的,对于这个问题今天 ...

  9. python查看电脑配置_怎么查看电脑配置(教你如何查看电脑配置信息和型号)

    如今,由于游戏.影音.学习或者工作的需要,用户都会有购买电脑的时候,不过对于一些不懂电脑的小白来说,如果连电脑配置都不会差的话,是十分容易被宰的.比如组装台式机的时候,可能一个不注意就被JS调包了,如 ...

最新文章

  1. SQL SERVER触发器使用实例
  2. sonarqube中,分析maven聚合工程时,不必分析parent工程,只需分析下面的module子工程即可
  3. web 表单,脚本验证
  4. python startswitch_使用python esl 实现FreeSWITCH自动外呼
  5. 《代码大全》程序员们怎样花费自己的时间
  6. 中国云市场生变:华为云 Q2 份额超 AWS,IaaS+PaaS 迎来整体增长
  7. STM32的Bootloader实现
  8. docker php amqp 扩展,docker搭建rabbitmq,配合php-amqplib+supervisor使用(下)
  9. Java支付宝app wap支付接入
  10. JavaScript 图片转文字,文字转语音
  11. Android模拟器Root
  12. EfficientDet实验笔记
  13. python erp源码_分享|值得考虑的 9 个开源 ERP 系统
  14. 配置项目外网访问(公网IP+DDNS)
  15. flip game java_LeetCode 293. Flip Game
  16. 华为手机微信无法连接到服务器1-500,Wi-Fi 6 路由器买不起?华为新品路由 500 元不到就能买...
  17. 华为机试真题 Python 实现【相同数字的积木游戏】【2022.11 Q4 新题】
  18. Kotlin扩展方法进化之Context Receiver
  19. IOS应用内购买App开发完整流程
  20. C语言中%d等的意义

热门文章

  1. u盘中毒了格式化有用吗 u盘中毒了文件被隐藏了怎么办恢复
  2. 决策规划算法四:Piecewise Jerk Path Optimizer
  3. python 计算a除以b_Python中a,b=b,a+b的计算方式
  4. StrutsPrepareAndExecuteFilter与FilterDispatcher的区别
  5. Erwin通过excel导入实体
  6. ubuntu20.04重装nvidia驱动之后无法正常进入图形化界面
  7. Java获取对象内存地址
  8. 计算机的学生应该考什么证书
  9. git pull和git pull -- rebase
  10. mysql数字有效位_保留十位有效数字