classfree
驱动小牛
驱动小牛
  • 注册日期2004-05-23
  • 最后登录2019-01-06
  • 粉丝1
  • 关注1
  • 积分873分
  • 威望276点
  • 贡献值0点
  • 好评度85点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2662回复:5

为什么minifilter过滤读写时文件长度和偏移和FileMon抓出来的不同?

楼主#
更多 发布于:2012-09-08 20:40
我用minifilter做了个监视文件读写的驱动,在 IRP_MJ_READ 的回调中,


FLT_PREOP_CALLBACK_STATUS
 TMDSYSPreRead (
     __inout PFLT_CALLBACK_DATA Data,
      __in PCFLT_RELATED_OBJECTS FltObjects,
      __deref_out_opt PVOID *CompletionContext)
{
        ULONG nLength = Data->Iopb->Parameters.Read.Length;
        LONGLONG nOffset = Data->Iopb->Parameters.Read.ByteOffset.QuadPart;

        if (FLT_IS_FASTIO_OPERATION(Data) )
        {
                return   FLT_PREOP_DISALLOW_FASTIO;
        }
        DbgPrint("Offset: %I64d       Length: %d\n",  nOffset , nLength);
        
        return FLT_PREOP_SUCCESS_NO_CALLBACK;
}

在这里获取的读取文件的偏移量和长度, 打印出来的结果,和FileMon中抓出来的不同。
为什么会这样呢?

各位知道原因的,请教教我啊,谢谢!
低调点!
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2012-09-08 23:44
filemapping 之类的 page io会导致读取的长度是按页对齐的。不知道是不是这个?
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
classfree
驱动小牛
驱动小牛
  • 注册日期2004-05-23
  • 最后登录2019-01-06
  • 粉丝1
  • 关注1
  • 积分873分
  • 威望276点
  • 贡献值0点
  • 好评度85点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2012-09-09 10:08
感谢老大回复!

Data->Iopb->Parameters.Read.Length;
获取到的长度,的确大部分是按页对齐的,但是也有部分是没有按页对齐。

而且在定义FLT_OPERATION_REGISTRATION回调的时候加上如下标志
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO
获取到的长度还是不对,和FileMon都不同。

低调点!
classfree
驱动小牛
驱动小牛
  • 注册日期2004-05-23
  • 最后登录2019-01-06
  • 粉丝1
  • 关注1
  • 积分873分
  • 威望276点
  • 贡献值0点
  • 好评度85点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2012-09-10 12:08
继续等待,各位大侠救救小弟吧
低调点!
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2012-09-11 00:30
去掉FLT_IS_FASTIO_OPERATION的判断再看看
提问归提问,还是只能靠自己
classfree
驱动小牛
驱动小牛
  • 注册日期2004-05-23
  • 最后登录2019-01-06
  • 粉丝1
  • 关注1
  • 积分873分
  • 威望276点
  • 贡献值0点
  • 好评度85点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2012-09-14 19:57
感谢楼上的。

我最开始就没加 FLT_IS_FASTIO_OPERATION 判断,
但是所获取到的偏移和长度还是和FileMon相差很大啊。

低调点!
游客

返回顶部