shyandsy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分447分
  • 威望183点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
阅读:1674回复:9

从DDK帮助中复制了一份SFILTER代码 可是create处理中加入任何代码都不能被执行

楼主#
更多 发布于:2008-10-11 10:19
原来没有这样的情况的
这次调程序 想在sfilter基础上做记事本监控

可是在SfCreate中加入的任何操作都不能被执行
经过调试发现 无论我怎么写都不被执行

下面是Sfilter中部分代码
下面这个if语句一直为真 我在系统里面新建删除复制打开 甚至安装OFFICE
所以这个模块一直就是IoSkipCuurentIrpStackLocation
下面的WINDBG语句永远不执行
 if (!FlagOn( SfDebug, SFDEBUG_DO_CREATE_COMPLETION |
                          SFDEBUG_GET_CREATE_NAMES|
                          SFDEBUG_DISPLAY_CREATE_NAMES )) {
    DbgPrint("\n进入  CREATE系统荣操作被放过   处理\n");
        //
        //  Don't put us on the stack then call the next driver
        //
        IoSkipCurrentIrpStackLocation( Irp );
        return IoCallDriver( ((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject, Irp );
    } else {
    
        KEVENT waitEvent;
   DbgPrint("\n进入  CREATE正式  处理\n");
        //
        //  Initialize an event to wait for the completion routine to occur
        //


有没有哪位大侠知道这是为什么啊
选择喜欢做的事,就要努力去做!
shyandsy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分447分
  • 威望183点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-10-11 11:29
if (!FlagOn( SfDebug, SFDEBUG_DO_CREATE_COMPLETION |
                          SFDEBUG_GET_CREATE_NAMES|
                          SFDEBUG_DISPLAY_CREATE_NAMES ))
这条语句 在什么时候为永真
在线等大侠回复
选择喜欢做的事,就要努力去做!
liio
驱动小牛
驱动小牛
  • 注册日期2005-12-24
  • 最后登录2022-06-16
  • 粉丝4
  • 关注1
  • 积分24分
  • 威望343点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2008-10-11 14:04
FlagOn 就定义在你源码里了。你自己看下不就知道~晕

SfDebug初始化值是0,如果你不改这条语句永远都不会是真~
shyandsy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分447分
  • 威望183点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-10-11 22:31
Re:从DDK帮助中复制了一份SFILTER代码 可是create处理中加入任何代码都不能
ULONG SfDebug = 0;

这条没错啊  
我直接复制的sfilter微软例子文件啊

原来调就不会这样
有一个月没搞了 现在怎么调都不行

从WinDbg显示的消息来看  这个FlagOn判断式永远为真

我就觉得很奇怪

所有IRP都不经过SfCreateComlete模块
选择喜欢做的事,就要努力去做!
zh002008
驱动牛犊
驱动牛犊
  • 注册日期2004-08-22
  • 最后登录2013-09-06
  • 粉丝1
  • 关注1
  • 积分545分
  • 威望155点
  • 贡献值0点
  • 好评度51点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-10-12 14:04
看一下启动顺序,调试一下看收到的设备对象是不是都是你程序的设备对象。是的话就被返回了。
shyandsy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分447分
  • 威望183点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-10-12 19:49
Re:从DDK帮助中复制了一份SFILTER代码 可是create处理中加入任何代码都不能
麻烦能不能说具体些  真的没明白是怎么回事
启动顺序指得什么
为什么收到的会全是我的设备对象

小弟真的很是抑郁。。。。。。。。谢谢你了
选择喜欢做的事,就要努力去做!
hurtdeep
驱动牛犊
驱动牛犊
  • 注册日期2003-07-17
  • 最后登录2009-04-01
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望35点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-10-16 10:01
在driverentry最后加入
    SetFlag(SfDebug,SFDEBUG_DO_CREATE_COMPLETION);
    SetFlag(SfDebug,SFDEBUG_GET_CREATE_NAMES);
    SetFlag(SfDebug,SFDEBUG_DISPLAY_CREATE_NAMES);
shyandsy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分447分
  • 威望183点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-10-16 18:03
Re:从DDK帮助中复制了一份SFILTER代码 可是create处理中加入任何代码都不能
真的很谢谢你  这样就OK了
可这是为什么呢
选择喜欢做的事,就要努力去做!
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
8楼#
发布于:2008-10-16 20:33
看一下SfDebug 的定义,和它怎样用就明白了.

sfilter中靠bit来控制哪些消息要打印
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
shyandsy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分447分
  • 威望183点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-10-16 20:47
Re:从DDK帮助中复制了一份SFILTER代码 可是create处理中加入任何代码都不能
好的 谢谢了
小弟实在是鄙陋的紧
选择喜欢做的事,就要努力去做!
游客

返回顶部