阅读:1621回复:1
filemon过滤???
请问有谁研究过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)后面的程序是干什么的?“|=”符号是什么意思? |
|
沙发#
发布于:2010-01-15 15:41
虽然这个帖很久了。回了你也不一定看得到。说不定现在的你的也个驱动大牛了。不过我不是说一说我的看法。Status是一个字符串数组。程序前面有声明的。
(char *)ptr < min(Stats+StatsLen,Stats + sizeof (Stats)); )这一个是说从下层驱动程序接收的irp的记录的长度。与本身 这一个缓存的长度中的小者。也就是说在没有到缓存的结尾时就会一直循环取出记录。 if( IsNT ) { 这一个是说在NT文件系统中的字节 的对齐问题。因为这一个是从下层filem.sys传上来的时候规定好的格式。你看下filem的源代码就晓得了哈。 |
|