allendeng
驱动牛犊
驱动牛犊
  • 注册日期2003-10-31
  • 最后登录2007-06-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:3354回复:3

请大侠们指导一个关于TDI FILTER的问题

楼主#
更多 发布于:2004-01-30 02:42
我想写一TDI FILTER DRIVER 来实现个人防火墙.当外面的连接来到我的PC时,FILTER DRIVER的ClinetEventConnect Handler会被触发,正常的流程是 从TDI FILTER的 ClinetEventConnectHandler去调用TDI CLIENT的 ClientEvnetConnectHandler,从而取得一个TDI_ACCEPT的IRP,然后返回,连接就会建立.
我的问题是:当对方的连接请求进来后,不要急于返回TDI_ACCEPT, 而是提供一个让USER选择的机会,决定是否容许建立连接.容许之后才让这个连接建立起来,否则,拒绝连接.
PCAUSA的老大Thomas说这是不可能的,因为ClinetEventConnect Handler是工作在DISPATCH LEVEL. 真不可能的话,有没有别的方法实现我的要求?

先谢啦.

最新喜欢:

hunterforpighunter... hbnhbnhbnhbnhbn...
allendeng
驱动牛犊
驱动牛犊
  • 注册日期2003-10-31
  • 最后登录2007-06-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-01-31 03:42
我又试图在TDI_ACCEPT Request的CompletionRoutine中暂停,但也不行,因为CompletionRoutine是工作在<=DISPATCH_LEVEL. TDI_RECIEVE IRP的CompletionRoutine也是工作在<=DISPATCH_LEVEL,也停不住. 唉,只能眼睁睁地看着别人的连接建立,并向本机发包.

请大侠指点一二.
再谢!
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-02-02 19:30
我想写一TDI FILTER DRIVER 来实现个人防火墙.当外面的连接来到我的PC时,FILTER DRIVER的ClinetEventConnect Handler会被触发,正常的流程是 从TDI FILTER的 ClinetEventConnectHandler去调用TDI CLIENT的 ClientEvnetConnectHandler,从而取得一个TDI_ACCEPT的IRP,然后返回,连接就会建立.
我的问题是:当对方的连接请求进来后,不要急于返回TDI_ACCEPT, 而是提供一个让USER选择的机会,决定是否容许建立连接.容许之后才让这个连接建立起来,否则,拒绝连接.
PCAUSA的老大Thomas说这是不可能的,因为ClinetEventConnect Handler是工作在DISPATCH LEVEL. 真不可能的话,有没有别的方法实现我的要求?

先谢啦.
 


对于老大的话不能不信也不能全信。

在TDI里要阻断任何过程,都取决于IRP是否能被PENDING。显然ClientEventConnectHandle是可以被阻断的,当进来该例程,首先你回调上层ClientEventConnectHandle,得到一个ACCEPT的IRP包,首先勾挂这个TDI_ACCEPT,等下层完成这个IRP包后,像处理tdi_connect一下样去PENDING这个ACCEPT包进行了.

我思故我在,脑袋不会坏.
allendeng
驱动牛犊
驱动牛犊
  • 注册日期2003-10-31
  • 最后登录2007-06-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-12 13:21

 [/quote]

对于老大的话不能不信也不能全信。

在TDI里要阻断任何过程,都取决于IRP是否能被PENDING。显然ClientEventConnectHandle是可以被阻断的,当进来该例程,首先你回调上层ClientEventConnectHandle,得到一个ACCEPT的IRP包,首先勾挂这个TDI_ACCEPT,等下层完成这个IRP包后,像处理tdi_connect一下样去PENDING这个ACCEPT包进行了.

 [/quote]

PCAUSA的老大的话不能全信, 驱坛老大的话一定要信!!!

在gjpland的指引下, 我在TDI FILTER 中阻截了任何想阻截的IRP.

再问一下: 在TDI层,怎样枚举到活动的端口? 例如处于监听状态的端口.
游客

返回顶部