jylhy
驱动牛犊
驱动牛犊
  • 注册日期2008-03-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分373分
  • 威望50点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
阅读:1385回复:9

关于拒绝写操作

楼主#
更多 发布于:2008-05-26 14:34
大家好,
向大家请教个问题,我想在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,请问各位大侠这是什么原因造成的,该如何解决
bluacat
驱动小牛
驱动小牛
  • 注册日期2004-09-13
  • 最后登录2016-09-25
  • 粉丝0
  • 关注0
  • 积分1023分
  • 威望277点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2008-05-26 23:07
pageiio是不能被拒绝的。
dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-05-27 09:46
是做权限控制吗?
只拒绝缓冲写就好
jylhy
驱动牛犊
驱动牛犊
  • 注册日期2008-03-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分373分
  • 威望50点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-05-27 09:52
谢谢两位,我先试试
jylhy
驱动牛犊
驱动牛犊
  • 注册日期2008-03-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分373分
  • 威望50点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-05-27 10:17
现在我遇到的问题是,
我拒绝WORDPAD.exe对1.txt的写操作(直接拒绝写缓存,写磁盘是允许的), 但拒绝后导致原始文件长度变为0,请问这会是什么原因.
能帮忙讲解下写操作被拒绝后系统会做什么处理吗?
谢谢各位先
bluacat
驱动小牛
驱动小牛
  • 注册日期2004-09-13
  • 最后登录2016-09-25
  • 粉丝0
  • 关注0
  • 积分1023分
  • 威望277点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2008-05-27 12:26
create时候 Overwrite 后直接就是 0 了。
jylhy
驱动牛犊
驱动牛犊
  • 注册日期2008-03-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分373分
  • 威望50点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-05-27 12:50
谢谢提醒,我再查查,不知道能不能在PreCreate里把这个操作禁止掉
jylhy
驱动牛犊
驱动牛犊
  • 注册日期2008-03-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分373分
  • 威望50点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-05-27 16:50
PreCreate不能返回失败,看来在PreCreate里禁止是做不到了.
倒是查到用FltCancelFileOpen,但文档又说对于overwrite只能取消创建,但数据要恢复需要用其他方法,不知道大家有没有什么好方法
bluacat
驱动小牛
驱动小牛
  • 注册日期2004-09-13
  • 最后登录2016-09-25
  • 粉丝0
  • 关注0
  • 积分1023分
  • 威望277点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2008-05-27 18:10
PreCreate不能返回失败 why ??
jylhy
驱动牛犊
驱动牛犊
  • 注册日期2008-03-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分373分
  • 威望50点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-05-27 18:31
看错了,
是CLEANUP和CLOSE不能返回一个失败状态
游客

返回顶部