sojod
驱动牛犊
驱动牛犊
  • 注册日期2006-10-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分170分
  • 威望18点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
阅读:1299回复:2

把IRP_MJ_CREATE失败后需要做其他处理么

楼主#
更多 发布于:2007-08-26 21:58
在IRP_MJ_CREATE的完成例程中得到路径名,把该IRP失败掉,除了Irp->Status.status和information赋值并completerequest外,是否还需要手动发IRP_MJ_CLOSE的包下去把object 做close处理呢?还是系统会自动为create的file object做善后处理?
如果是把READ WRITE的IRP失败掉呢?
谢谢指点!!
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
沙发#
发布于:2007-08-28 03:00
There's no proper way of failing a CREATE IRP in completion routine especially if the CREATE IRP actually created a new file. You should move your logic into dispatch routine.

It's not good idea to deny READ or WRITE either. Deny them in CREATE.
sojod
驱动牛犊
驱动牛犊
  • 注册日期2006-10-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分170分
  • 威望18点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-29 23:12
引用第1楼michaelgz于2007-08-28 03:00发表的  :
There's no proper way of failing a CREATE IRP in completion routine especially if the CREATE IRP actually created a new file. You should move your logic into dispatch routine.

It's not good idea to deny READ or WRITE either. Deny them in CREATE.

michaelgz您的意思是:
Irp->Iostatus.Status = STATUS_ACCESS_DENIED;
Irp->Iostatus.Information = 0;
IoCompleteRequese(Irp,IO_NO_INCREMENT);
return status;
这种做法不能有效的令一个IRP失败么?谢谢
游客

返回顶部