Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1080回复:2

关于截取文件关闭时的irp,和之后的操作!

楼主#
更多 发布于:2003-01-08 18:55
一个文件被一个应用程序打开,关闭时最后一个irp是什么?
是不是vdtask的irp_mj_close?

我截取到这个irp,然后,IoSetCompletionRoutine(),在completionroutine里面通知应用程序,由应用程序将另外一个文件删除(remove(file)),驱动里面没有问题,但是运行到应用程序里面的remove(file)时,应用程序就停在那里不动了,死了?

这是为什么?应该怎么解决阿?

ps:
vdtask是什么东东?能不能解释一下?
驱动里面有没有什么函数可以直接删除文件的?

万分感谢!

最新喜欢:

okincnokincn
认认真真过一生
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-09 12:39
最后一个IRP是IRP_MJ_CLOSE. 但是IRP_MJ_CLOSE不是应用程序一关HANDLE就发出的. CACHE MANAGER会等一段时间才发出该CALL.
每个CLOSEHANDLE对应1个IRM_MJ_CLEANUP.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-09 14:05
vdtask是不是就是CACHE MANAGER,因为我截取到的最后一个IRP是由
VDTASK发出的 IRP_MJ_CLOSE.

然后,我是不是要等到VDTASK完成了IRP_MJ_CLOSE之后才可以进行应用程序的工作?例如remove()等!

认认真真过一生
游客

返回顶部