tujunhong
驱动牛犊
驱动牛犊
  • 注册日期2008-05-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望53点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1567回复:1

filemon过滤???

楼主#
更多 发布于:2008-06-15 15:11
请问有谁研究过filemon,本人最近研究了下,改写后有些功能不能实现,比如过滤功能,请哪位大牛帮帮忙吧。留个联系方式,细细讨论下。
还有就是如下程序:
for ( ptr = (void *)Stats; (char *)ptr < min(Stats+StatsLen,Stats + sizeof (Stats)); ) {
// Add to list
size_t len = strlen(ptr->text);

itemsAdded |= ListAppend( hList, ptr->seq, ptr->perftime.QuadPart,
ptr->datetime.QuadPart, ptr->text );

if( IsNT ) {

len += 4; len &= 0xFFFFFFFC; // +1 for null-terminator +3 for 32bit alignment
ptr = (void *)(ptr->text + len);
} else
ptr = (void *)(ptr->text + len + 1);
}
麻烦谁能解释下这段程序中的Stats,和if(isNT)后面的程序是干什么的?“|=”符号是什么意思?
firfor
驱动牛犊
驱动牛犊
  • 注册日期2009-11-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分121分
  • 威望451点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分1分
沙发#
发布于:2010-01-15 15:41
虽然这个帖很久了。回了你也不一定看得到。说不定现在的你的也个驱动大牛了。不过我不是说一说我的看法。Status是一个字符串数组。程序前面有声明的。
(char *)ptr < min(Stats+StatsLen,Stats + sizeof (Stats)); )这一个是说从下层驱动程序接收的irp的记录的长度。与本身 这一个缓存的长度中的小者。也就是说在没有到缓存的结尾时就会一直循环取出记录。
if( IsNT ) {
这一个是说在NT文件系统中的字节 的对齐问题。因为这一个是从下层filem.sys传上来的时候规定好的格式。你看下filem的源代码就晓得了哈。
游客

返回顶部