关闭一台电脑的最简单方法就是按电源键,或者点击操作系统(如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在软件上进行相应的准备和处理,如应用程序和操作系统的关闭。

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

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

  1. 未能初始化appscan应用程序现在将关闭_企业区块链应用程序的两个关键问题

    点击上方"蓝色字体",选择 "设为星标" 关键讯息,D1时间送达! 很多架构师在使用区块链技术之前需要考虑一些关键问题,而这些问题与数据隐私和区块链类型有关. ...

  2. 程序员下班关闭显示器,却从不关电脑,你知道为什么吗?

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Don't try to keep someone in life, if ...

  3. 免费制作微信小程序开发关于旅游_教大家怎么一步步免费自己做微信小程序

    小程序很火,很好的流量入口,但是没有编程基础的很难写出小程序,找网络公司做又太贵,今天就教大家怎么自己去制作一个属于自己的小程序! 想制作小程序需要准备的清单如下: 1.微信公众平台(mp.weixi ...

  4. swing tree 去掉双击默认展开 关闭_如何保护自己的电脑,关闭危险端口(一)

    前段时间的"EnternalBlue"(蓝之永恒)勒索蠕虫就是通过电脑445端口,进行勒索. 首先,我们查看电脑打开那些端口,可以使用Netstat命令: 依次点击"开始 ...

  5. python程序怎么保存运行_教你如何编写、保存与运行 Python 程序

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  6. 怎样设置计算机u盘启动程序,设置u盘启动|教您怎么设置电脑U盘启动

    设置U盘启动项对于小白用户来说是比较麻烦的一键事,小编现在给大家介绍电脑设置第一启动项为U盘的方法,不同的主板有不同的设置方法,但是都大同小异,知道大概的方法参考着设置就可以. 电脑U盘用U盘进入PE ...

  7. 安装oracle12.1  32位客户端时,出现[INS-10102]未能初始化安装程序错误

    安装oracle12.1  32位客户端时,出现[INS-10102]未能初始化安装程序错误,无法继续安装. 查看C:\Users\S\AppData\Local\Temp\OraInstall201 ...

  8. Windows安装程序初始化时出错。安装程序将立即关闭。(原)

    安装Microsoft .Net Framework 1.1时出错:Windows安装程序初始化时出错.安装程序将立即关闭.错误如下图所示: [img]http://msdn.iteye.com/up ...

  9. Centos8安装Oracle12C未能初始化安装程序

    缺少Java环境 dnf install java INS-10102未能初始化安装程序 dnf install libnsl解决缺少libnsl package INS-13001此操作系统不支持O ...

最新文章

  1. 一些常用的IHTMLXX接口
  2. hash hashcode变化_没想到 Hash 冲突还能这么玩,你的服务中招了吗?
  3. 原生JS实现点击导航栏鼠标左右滑动(适用于PC端和移动端)
  4. ejb 2.1 jboss_JBoss AS7 JNDI和EJB 3.1命名更改
  5. 做移动端视频通话软件,大致看了下现有的开源软件(转)
  6. Kafka从上手到实践 - 庖丁解牛:Consumer | 凌云时刻
  7. 统计过程控制图SPC(2)
  8. Android中Xposed框架篇---修改系统位置信息实现自身隐藏功能
  9. Silverlight4启动无法调试
  10. 共享计算机用户帐户限制怎么办,win7系统使用共享功能被提示用户账户限制的解决方法...
  11. 融云实践:主流叙事之外,科技如何助力民生改善
  12. 豫科技版计算机七年级上册,一上册 信息技术
  13. PHP过滤昵称中emoji表情
  14. Spark入门学习交流—Spark生态圈
  15. 平板作为主机扩展屏的实现
  16. matlab绘制分段函数,二维函数
  17. 某程序员哀叹:做码农真的很悲哀,有的35岁就没人要了
  18. Centos7 jdk8,Tomcat9的安装与配置
  19. Linux磁盘无法umount的问题
  20. spice-gtk-0.35源代码解析之spicy解析

热门文章

  1. r语言 读取dta_R语言与计量经济学(三)异方差
  2. Tomcat 5 5 JNDI Resource 配置
  3. Python案例:打印杨辉三角形
  4. Java实训项目3:GUI学生信息管理系统 - 涉及知识点
  5. 数据库笔记05:创建与管理数据库
  6. 【codevs2800】送外卖,状态压缩DP练习
  7. 【codevs2452】【SCOI2005】【BZOJ1088】扫雷Mine
  8. 将来时的条件句_58
  9. matlab时频分析工具箱安装_科研小班 | 加州大学伯克利分校 | 物理、电子工程:MATLAB信号和数据处理课题...
  10. idea @value提示_IDEA 中springboot 项目使用 注解Autowired 出现红线