阅读:1300回复:2
把IRP_MJ_CREATE失败后需要做其他处理么
在IRP_MJ_CREATE的完成例程中得到路径名,把该IRP失败掉,除了Irp->Status.status和information赋值并completerequest外,是否还需要手动发IRP_MJ_CLOSE的包下去把object 做close处理呢?还是系统会自动为create的file object做善后处理?
如果是把READ WRITE的IRP失败掉呢? 谢谢指点!! |
|
沙发#
发布于:2007-08-29 23:12
引用第1楼michaelgz于2007-08-28 03:00发表的 : michaelgz您的意思是: Irp->Iostatus.Status = STATUS_ACCESS_DENIED; Irp->Iostatus.Information = 0; IoCompleteRequese(Irp,IO_NO_INCREMENT); return status; 这种做法不能有效的令一个IRP失败么?谢谢 |
|
板凳#
发布于: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. |
|