强制重启N种方法

2015-12-24 17:19 146人阅读 评论(0) 收藏 举报
本文章已收录于:

 

分类:
驱动开发学习(458)

1.

无意中看到一种通过控制92H端口bit0位,将其置1来实现重启的方法,刚才测试了一下,效果真好

mov al, 01
    out 92h, al

2.

另一种,模拟键盘的reset

mov al, 0xfe
     out 0x64, al

i8042 :键盘控制器 
8042的端口在cpu的io空间地址如下:

port----Read/Write-----Function 
0x60----Read----------Read Input Buffer 
0x60----Write---------Write Output Buffer 
0x64----Read----------Read Status Register 
0x64----Write---------Send Command

再者

3.

status=ZwInitiatePowerAction(PowerActionShutdown, 
     PowerSystemShutdown, 
     0, 
     TRUE 
    );

再者

4.

HalReturnToFirmware(HalRebootRoutine);

驱动中直接使用由Hal.dll导出的HalReturnToFirmware函数来实现关机,这是系统正常关机时调用的最后一个API,也是最实效的一个API,这个函数会直接调用Bois例程,然后系统就真的关机了

再者

5.
KeBugCheck(POWER_FAILURE_SIMULATE);

也许你会认为这是BugCheck,那么你错了,这并不会引发bugcheck

这样实际上会调用了HalReturnToFirmware(HalRebootMachine)

当执行了BugCheck回调后,无BSOD,无Crash dump,只会进行非常干净、简单和直接的重启动

实现源码为

/* Check if this is power failure simulation */
    if (BugCheckCode == POWER_FAILURE_SIMULATE)
    {
        /* Call the Callbacks and reboot */;
        KiDoBugCheckCallbacks();
        HalReturnToFirmware(HalRebootRoutine);
    }

强制重启N种方法的更多相关文章

  1. iis 重启 (三种方法)

    iis 重启 (三种方法) WINDOWS提供WEB服务的IIS有时候会出现访问过大导致网站打不开,这时重启IIS是最好的选择. 方法/步骤 1 1.界面操作 打开“控制面板”->“管理工具”- ...

  2. nginx重启几种方法

    http://blog.csdn.net/zqinghai/article/details/71125045 ps -ef|grep nginx 平滑重启命令: kill -HUP 住进称号或进程号文 ...

  3. 强制重启Linux系统的几种方法

    实际生产环境中某些情况下 Linux 服务器系统在出现致命错误需要远程进行重启,通过常规的 reboot.init 6 等方法无法正常重启(例如重启时卡在驱动程序里等情况),这时就需要通过下面介绍的几 ...

  4. linux 清空catalina.out日志 不需要重启tomcat(五种方法)【转】

    1.重定向方法清空文件   [root@localhost logs]# du -h catalina.out  查看文件大小17M catalina.out[root@localhost logs] ...

  5. js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)

    js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...

  6. 重启网卡的几种方法(命令行,API,

    1.重启windows网卡命令 rem 禁用网卡netsh interface set interface 本地连接 disabledrem 启用网卡 netsh interface set inte ...

  7. ubuntu14.04重启网卡的三种方法

    Linux重启网卡的三种方法: 一.network 利用root帐户 # service network restart 或者/etc/init.d/networking restart 二.ifdo ...

  8. 【Qt】实现程序重启的两种方法

    Qt5/PyQt5 实现程序重启的两种方法 前言 最近在写一个开源项目,需要实现一个程序自动重启的功能.尝试了好几种方式,效果均不太理想. 一开始的实现思路是,记为思路一吧.大概就是写一些 shell ...

  9. Mac小技巧:强制退出程序的六种方法

    原帖地址: http://www.cnbeta.com/articles/175447.htm 1.使用键盘快捷键强制退出处于活跃状态的Mac程序 快捷键:Command+Option+Shift+E ...

随机推荐

  1. NOIP模拟赛 最大匹配

    问题描述 mhy12345学习了二分图匹配,二分图是一种特殊的图,其中的点可以分到两个集合中,使得相同的集合中的点两两没有连边.     图的“匹配”是指这个图的一个边集,里面的边两两不存在公共端点. ...

  2. 关于oracle with as用法

    with as语法–针对一个别名with tmp as (select * from tb_name) –针对多个别名with   tmp as (select * from tb_name),   ...

  3. mac系统使用内置的 PHP

    从 OS X 10.0.0 版本开始,PHP 作为 Mac 机的标准配置被提供.在默认的 web 服务器中启用 PHP,只需将 Apache 配置文件 httpd.conf 中的几行配置指令最前面的注 ...

  4. Swift函数编程之Map、Filter、Reduce

    在Swift语言中使用Map.Filter.Reduce对Array.Dictionary等集合类型(collection type)进行操作可能对一部分人来说还不是那么的习惯.对于没有接触过函数式编 ...

  5. WPF DatePicker默认显示当前日期

    WPF的日历选择控件默认为当前日期,共有两种方法,一种静态,一种动态. 静态的当然写在DatePicker控件的属性里了,动态的写在对应的cs文件里,具体请看下面.     1.方法一:     my ...

  6. Apache Rewrite 拟静态配置

    1.mod_rewrite 简介和配置 Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.mod_ ...

  7. Web Api其中的PUT功能演示

    Insus.NET这几天均在学习Web API知识,并练习.怎样获取数据,提交数据或是保存数据.你可以温习一下<Post model至Web Api创建或是保存数据>http://www. ...

  8. C语言 memset函数盲点

    #include <stdio.h> #include <stdlib.h> #include <string.h> struct packet { int len ...

  9. QT TCP文件上传服务器

    利用QT做为client端,纯C语言做为server端,利用tcp协议,实现client端向server端传递文件 Linux服务器端 //头文件 #include <stdio.h> # ...

  10. 爱春秋之戏说春秋 Writeup

    爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...