test001
驱动小牛
驱动小牛
  • 注册日期2006-11-12
  • 最后登录2008-11-07
  • 粉丝0
  • 关注0
  • 积分990分
  • 威望170点
  • 贡献值0点
  • 好评度169点
  • 原创分0分
  • 专家分0分
阅读:1253回复:4

各位大牛看看这段代码有什么问题?

楼主#
更多 发布于:2007-09-06 18:29
我想实现对某个文件的只读控制,代码如下:
  if(irpSp->Parameters.Create.FileAttributes |= FILE_ATTRIBUTE_READONLY)
    {
    Irp->IoStatus.Status = STATUS_ACCESS_DENIED;
    Irp->IoStatus.Information = 0;
    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return STATUS_ACCESS_DENIED;
    }

      可是驱动加载后,访问目标文件时,系统提示“拒绝访问”,不知道是什么原因?
   恳请各位大牛帮忙看看!
   多谢!!!
silon212
驱动牛犊
驱动牛犊
  • 注册日期2007-03-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-06 18:58
不太懂你的程序流程,你那个if()中的总是TRUE吧,是不该是if ( FlagOn(irpSp->Parameters.Create.FileAttributes, FILE_ATTRIBUTE_READONLY) )
wanghui219
禁止发言
禁止发言
  • 注册日期2007-08-28
  • 最后登录2019-07-29
  • 粉丝4
  • 关注3
  • 积分101166分
  • 威望505351点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分4分
  • 社区居民
板凳#
发布于:2007-09-06 23:13
用户被禁言,该主题自动屏蔽!
XO威士忌
驱动牛犊
驱动牛犊
  • 注册日期2007-07-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望153点
  • 贡献值1点
  • 好评度40点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-07 09:16
引用第2楼wanghui219于2007-09-06 23:13发表的  :
你的这个条件会成立,返回值是STATUS_ACCESS_DENIED,当然在你以读方式打开的时候就弹出失败了。(这么控制只读本身就是错误的)


请教应该如何控制文件的只读,谢谢!
abc13271552
驱动小牛
驱动小牛
  • 注册日期2007-08-13
  • 最后登录2023-12-05
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望552点
  • 贡献值0点
  • 好评度160点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2007-09-07 16:25
if(irpSp->Parameters.Create.FileAttributes & FILE_ATTRIBUTE_READONLY) //是& 不是 |哟
    {
    Irp->IoStatus.Status = STATUS_ACCESS_DENIED;
    Irp->IoStatus.Information = 0;
    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return STATUS_ACCESS_DENIED;
    }
驱网无线,快乐无限
游客

返回顶部