中断处理程序中输出调试信息导致无法计算机无法启动
来源:互联网 发布:人工智能高清在线观看 编辑:程序博客网 时间:2024/06/14 23:03
中断处理程序中输出调试信息导致无法计算机无法启动
BOOLEAN OnInterrupt(PKINTERRUPT InterruptObject, PDEVICE_EXTENSION pExtension){ // OnInterrupt DisableInterrupt(pExtension); KdPrint(("==============interrupt!!!\n")); IoRequestDpc(pExtension->fdo, NULL, pExtension); EnableInterrupt(pExtension); return TRUE;}
上面这段代码是WDM的中断处理例程,在第二行输出了一句调试信息。但是有时候在电脑启动时崩溃。原因在于KdPrint函数有优先级的限制,详细见https://msdn.microsoft.com/en-us/library/windows/hardware/ff543632(v=vs.85).aspx。
KdPrint函数的优先级 IRQL>DIRQL,所以将KdPrint((“==============interrupt!!!\n”));改为
KIRQL irql;irql = KeGetCurrentIrql();if (irql <= DISPATCH_LEVEL) KdPrint(("==============interrupt!!!\n"));
就不会有问题了。
0 0
- 中断处理程序中输出调试信息导致无法计算机无法启动
- 如何处理更改计算机名称导致oracle无法启动
- 计算机名称修改导致监听无法启动
- “无法启动此程序,因为计算机中丢失LIBEAY32.DLL”
- 无法启动此程序,因为计算机中丢失pthreadVC2.dll
- 无法启动此程序,因为计算机中丢失MSVCP120D.dll
- 无法启动此程序 因为计算机中丢失ijl15.dll
- 无法启动此程序,因为计算机中丢失msvcp90d.dll
- 无法启动此程序,因为计算机中丢失msvcp100.dll。
- 关于:无法启动程序,因为计算机中丢失mfc110.dll。
- 无法启动此程序,因为计算机中丢失MSVCP120D.dll
- 无法启动此程序 因为计算机中丢失LIBEAY32.DLL
- 无法启动此程序,因为计算机中丢失mspdb100.dll !
- "无法启动程序,因计算机中丢失MSVCP100D"解决方法
- 无法启动此程序因为计算机中丢失msvcr120
- 无法启动此程序,因为计算机中丢失QT5Core.dll
- 无法启动此程序因为计算机中丢失msvcr110.dll
- “无法启动此程序,因为计算机中丢失LIBEAY32.DLL”
- 基于物理渲染的理论基础
- node中的path模块
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- Leetcode no. 152
- 在线教育的心得
- 中断处理程序中输出调试信息导致无法计算机无法启动
- NYOJ Distribution---1241第八届
- Linux中的计划任务-Crontab
- EL表达式
- 基于Redis实现分布式锁
- Volley框架初识01
- 记Bstar复赛
- overload重载、override重写
- 【Java】常用二叉树考点