能力值:
( LV2,RANK:10 )
|
-
-
2 楼
还有我已经将驱动unload了,怎么还是有保护。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
首先.不推荐使用IoCancelFileOpen这个函数在CALL FileSystem后取消一个IRP。
我估计你的拦截位置肯定在IoCallDriver之后。也就是已经调用完文件系统了。
解决的办法也就是你流程的问题。
不应该在成功调用完文件系统后再失败一个请求,应该在此之前。
Ps:
文件夹的保护不一定要处理IRP_MJ_CREATE (至少在DEMO例子里可以这样说)。你完成可以针对文件夹属性本身下手
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
多谢大牛提点,确实是流程问题,新手初学,原来这里这么讲究哈 ,对文件夹属性下手?那是什么 ,IRP_MJ_DIRECTORY_CONTROL ?
|
能力值:
( LV13,RANK:260 )
|
-
-
5 楼
汗 ...两个贴 都是你的》。。。。取消文件创建例程,是在文件创建完成之后,就是 你的完成函数返回之时....最好放在 创建前处理,因为,文件的创建 不仅仅是 你下发的过程,还有文件对象的管理以及创建..
我要分》》》》快给 ,上班去了......哈哈
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
是啊哈哈,分肯定会散的,但是文件创建成功后又用IoCancelFileOpen取消创建,这种是在什么情况下使用
|
能力值:
( LV13,RANK:260 )
|
-
-
7 楼
哎 你都不自己动手 ,这样进步 很慢的...
贴一段我的代码吧.....
ps:
if (fileName != NULL) { RtlInitUnicodeString(&filter_string,PROTECTED); CreateOptions = ((irpSp->Parameters.Create.Options>>24)&0x000000ff); if (CreateOptions == FILE_OPEN)//注意标志,如果你创建成功 ,自己手动写得话,也得修正创建标志位。 { KdPrint(("SFilter!SfCreate: hollyshit !----%wZ\n",&fileName->Name)); if (!RtlCompareUnicodeString(&filter_string,&fileName->Name,TRUE)) { IoCancelFileOpen(devExt->NLExtHeader.AttachedToDeviceObject, irpSp->FileObject);//取消 下层 文件对象创建
KdPrint(("SFilter!SfCreate: hollyshit !\n")); NLFreeNameControl( fileName, &gSfNameBufferLookasideList ); Irp->IoStatus.Status = STATUS_ACCESS_DENIED; Irp->IoStatus.Information = 0; IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_ACCESS_DENIED; }
|
能力值:
( LV13,RANK:260 )
|
-
-
8 楼
我这里只是做了 访问 禁止..其他的你就自己搞....
快洒分.... 哈哈
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
散了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
楼上给力啊,不错。
|
|
|