阅读:1385回复:9
关于拒绝写操作
大家好,
向大家请教个问题,我想在PreWrite终止写操作,怎样做才安全. 我现在的做法是在PreWrite if(TRUE) { Cbd->IoStatus.Status = STATUS_UNSUCCESSFUL; Cbd->IoStatus.Information = 0;//writeLen也一样 retValue = FLT_PREOP_COMMPLETE; } 但是这样做之后,写拒绝是成功了,但是在PreCleanUp中调用 FltQueryInformationFile(FltObjects->Instance, FltObjects->FileObject, &StandardInfo, sizeof(FILE_STANDARD_INFORMATION), FileStandardInformation, NULL); 返回的StandardInfo的值为0,请问各位大侠这是什么原因造成的,该如何解决 |
|
沙发#
发布于:2008-05-26 23:07
pageiio是不能被拒绝的。
|
|
板凳#
发布于:2008-05-27 09:46
是做权限控制吗?
只拒绝缓冲写就好 |
|
地板#
发布于:2008-05-27 09:52
谢谢两位,我先试试
|
|
地下室#
发布于:2008-05-27 10:17
现在我遇到的问题是,
我拒绝WORDPAD.exe对1.txt的写操作(直接拒绝写缓存,写磁盘是允许的), 但拒绝后导致原始文件长度变为0,请问这会是什么原因. 能帮忙讲解下写操作被拒绝后系统会做什么处理吗? 谢谢各位先 |
|
5楼#
发布于:2008-05-27 12:26
create时候 Overwrite 后直接就是 0 了。
|
|
6楼#
发布于:2008-05-27 12:50
谢谢提醒,我再查查,不知道能不能在PreCreate里把这个操作禁止掉
|
|
7楼#
发布于:2008-05-27 16:50
PreCreate不能返回失败,看来在PreCreate里禁止是做不到了.
倒是查到用FltCancelFileOpen,但文档又说对于overwrite只能取消创建,但数据要恢复需要用其他方法,不知道大家有没有什么好方法 |
|
8楼#
发布于:2008-05-27 18:10
PreCreate不能返回失败 why ??
|
|
9楼#
发布于:2008-05-27 18:31
看错了,
是CLEANUP和CLOSE不能返回一个失败状态 |
|