Windows 内核下系统线程的创建与终止
2010-07-15 23:17
381 查看
今天在公司遇到一个WLK测试failed的Issue,failed的原因是driver在unload时,发生了BSOD。
Check了MiniDump File后,bug check 0xCE:
DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS
可能的原因是:
This driver failed to cancel lookaside lists, DPCs, worker threads, or other such items before unload.
遇到这种问题,一般是比较难查的,但是可以去看driver中到底那些地方用到了DPC,thread等,首先可以从code上分析可能出现问题的case。我首先将driver中创建的系统线程disable了(本线程通过INF注册表键值控制)。在运行一下WLK测试,通过了。
分析我们创建的系统线程,发现没有调用PsTerminateThread()来终止线程,当unload driver时。
其实原作者在code中用到了终止,只是他的想法是break跳出系统的while循环,但是系统没有被杀死。
PsCreateSystemThread()创建系统线程只能自杀。
明天在附上code示例。
Check了MiniDump File后,bug check 0xCE:
DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS
可能的原因是:
This driver failed to cancel lookaside lists, DPCs, worker threads, or other such items before unload.
遇到这种问题,一般是比较难查的,但是可以去看driver中到底那些地方用到了DPC,thread等,首先可以从code上分析可能出现问题的case。我首先将driver中创建的系统线程disable了(本线程通过INF注册表键值控制)。在运行一下WLK测试,通过了。
分析我们创建的系统线程,发现没有调用PsTerminateThread()来终止线程,当unload driver时。
其实原作者在code中用到了终止,只是他的想法是break跳出系统的while循环,但是系统没有被杀死。
PsCreateSystemThread()创建系统线程只能自杀。
明天在附上code示例。
相关文章推荐
- 漫谈兼容内核之二十:Windows线程的系统空间堆栈
- 在内核模式下创建和终止线程
- 转帖】在内核模式下创建和终止线程 收藏
- 【转帖】在内核模式下创建和终止线程
- Windows线程的创建和终止
- java开发系统内核:实现窗口创建API,由DOS进入windows
- 漫谈兼容内核之二十:Windows线程的系统空间堆栈
- 为什么CreateThread()调用创建线程时,系统设置线程内核对象的引用计数为1,在Create函数返回前是2
- windows系统调用 线程创建
- Windows系统的四个重要概念——进程、线程、虚拟内存、内核模式和用户模式
- windows系统中创建线程常用哪几个函数,有什么区别?
- 详细介绍windows系统下创建进程、线程的过程
- 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站
- Windows终止线程运行的四种方法
- c# 创建、终止线程
- windows下利用_popen,_wpoen创建管道进行系统命令输出数据
- 第9章 线程编程(2)_线程创建和终止
- 线程创建与终止(Linux_C++)
- Windows内核之进程基本含义以及进程的创建
- Windows终止线程的四种方法