johannes
驱动牛犊
驱动牛犊
  • 注册日期2010-03-04
  • 最后登录2010-03-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1703回复:3

请问应用层调用GetFileAttributes函数,会不会产生IRP?

楼主#
更多 发布于:2010-03-04 14:34
小弟刚接手文件过滤驱动的开发,有个问题让我比较迷茫,请知道的大侠帮小弟一把。不胜感激!
小弟的项目是对某个目录下的文件访问进行监控,在Dispatch函数中对不同的MajorFunction采取不同的控制手段。问题是这样的:对文件的打开、读、写、关闭、设安全属性等操作都能在过滤驱动中捕获对应IRP,而应用层调用GetFileAttributes函数时却发现没有捕获到任何该文件的IRP,我想问一下,是我的方法错了还是GetFileAttributes确实不会产生IRP?若确实不产生IRP,那我该采用什么方法来监控到应用层调用GetFileAttributes函数?

我的大致方法:
PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLocation(Irp);
从irpSp->FileObject->FileName中获取本次IRP所对应的文件名,然后将其与我事先设置好的目录进行比较,若属于该目录则打印调试信息。比对和打印的代码估计没什么问题,因为其他种类的IRP(如:IRP_MJ_CREATE、IRP_MJ_READ、IRP_MJ_WRITE、IRP_MJ_SET_INFORMATION等)都能正常输出调试信息。
xicao
驱动牛犊
驱动牛犊
  • 注册日期2006-02-25
  • 最后登录2017-07-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望131点
  • 贡献值0点
  • 好评度30点
  • 原创分1分
  • 专家分0分
  • 社区居民
沙发#
发布于:2010-03-04 16:05
以前在一篇文章看到说GetFileAttributes走的是FAST IO
johannes
驱动牛犊
驱动牛犊
  • 注册日期2010-03-04
  • 最后登录2010-03-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-03-04 16:44
哦,原来这样,谢谢!继续回去啃资料。
johannes
驱动牛犊
驱动牛犊
  • 注册日期2010-03-04
  • 最后登录2010-03-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-03-08 14:41
的确,经试验后GetFileAttributes走的是FastIoQueryOpen。
游客

返回顶部