melchior
驱动牛犊
驱动牛犊
  • 注册日期2002-07-09
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望15点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2612回复:3

系统线程在退出时调用PsTerminateSystemThread函数不能从该调用返回?

楼主#
更多 发布于:2003-10-12 19:56
我建立了一个系统线程,线程退出时调用PsTerminateSystemThread,但执行在该函数内无法返回,真奇怪。
IRQL == PASSIVE_LEVEL

这个线程进行文件I/O操作,ZwCreateFile打开文件操作时使用
FILE_SYNCHRONOUS_IO_ALERT,是否与这个设置有关?
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-14 13:34
直接用break跳出线程消息循环即可

for(;;)
{
KeWaitForSingleObject(...);
.........
if(...)break;//Ok now
......
}
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
omo
omo
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-01 16:35
基本上,你不能在driverunload中结束线程,你应该让线程本身等待一个事件, 当该线程需要结束时,你触发该事件,这时,调用PsTerminateSystemThread是可行得。
钱就是驱动,驱动就是钱。
cross_sky
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2012-09-07
  • 粉丝0
  • 关注0
  • 积分858分
  • 威望727点
  • 贡献值0点
  • 好评度77点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-03-15 23:05
楼主这个问题解决了吗,我也遇到了,也按2楼说的试过,好像也没有用
sky
游客

返回顶部