LiDanN
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1336回复:4

难题请教:驱动如何得知调用它而被阻塞的用户进程被杀死或强行结束?

楼主#
更多 发布于:2003-11-09 10:55
比如,用户进程发出一个IRP_MJ_READ请求,驱动将其PENDING。而在IoCompleteRequest之前,用户进程被强制结束。如何得知?
我发现如果发出Ctrl-Break或者结束任务,会导致窗口关闭,而进程却无法释放。如果一直没有合适的数据完成IoCompleteRequest,这个进程就成了僵尸。怎么办呢?
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2003-11-09 11:19
你的驱动没有处理IRP Cancel吧?
LiDanN
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-09 18:52
IRP Cancel?这个是驱动主动发出的吧,还是系统向驱动发出的?如果是前者,但驱动里面不知道用户进程被结束,所以不知道何时Cancel;如果是后者,DDK文档并没有类似于IRP_MJ_CANCEL啊。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2003-11-09 19:36
IRP Cancel?这个是驱动主动发出的吧,还是系统向驱动发出的?如果是前者,但驱动里面不知道用户进程被结束,所以不知道何时Cancel;如果是后者,DDK文档并没有类似于IRP_MJ_CANCEL啊。
每个IRP都可以设置一个CancelRoutine,当IRP被Cancel的时候,会调用这个函数。
LiDanN
驱动牛犊
驱动牛犊
  • 注册日期2003-10-27
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-10 19:58
多谢指教,问题解决了。版主果然厉害,谢谢!
游客

返回顶部