阅读:1743回复:3
请问应用层调用GetFileAttributes函数,会不会产生IRP?
小弟刚接手文件过滤驱动的开发,有个问题让我比较迷茫,请知道的大侠帮小弟一把。不胜感激!
小弟的项目是对某个目录下的文件访问进行监控,在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等)都能正常输出调试信息。 |
|
沙发#
发布于:2010-03-04 16:05
以前在一篇文章看到说GetFileAttributes走的是FAST IO
|
|
板凳#
发布于:2010-03-04 16:44
哦,原来这样,谢谢!继续回去啃资料。
|
|
地板#
发布于:2010-03-08 14:41
的确,经试验后GetFileAttributes走的是FastIoQueryOpen。
|
|