wondest
驱动牛犊
驱动牛犊
  • 注册日期2001-09-11
  • 最后登录2002-03-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2468回复:6

请问Huyg版主一个非常专业的问题...

楼主#
更多 发布于:2002-01-29 20:43

   我知道你做过TDI filter。有一个问题需要请教你:
   在截获TDI_SET_EVENT_HANDLER事件时,可以替换掉client端提供的事件回调函数(如ClientEventReceive、ClientEventConnect、ClientEventReceiveDatagram等),这是比较容易做到的。但是,在程序中动态Unload时,需要动态地恢复到以前的状态,即将替换掉的事件函数恢复成以前的EventHandler和EventContext。然而,在有网络流量的情况下,要动态地、不延时地恢复,而且要保证系统足够的稳定,将会非常困难。这是因为这时有很多IRP在排队,有待处理,相当多IRP会用替换后的EventHandler进行处理,而替换后的EventHandler这时已被卸掉,系统会立马down机。我的考虑是“以毒攻毒”,用TdiBuildSetEventHandler恢复以前的EventHandler,但是,必须动态维持一个与TCP/IP Protocol driver相同状态的一个EventHandler队列,这将非常困难,而且会使系统不稳定。
   请问,你对该问题是怎样考虑的?有没有更好的解决办法?谢谢!
   希望大家能共同探讨,这是一个必须面对的问题。



  
sunsetyang
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-03-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-01-29 22:03
要达到怎样的目的啊?非得需要使用tdi filter来做?
[color=red]Optimization[/color] In Progress . . . Welcome to http://mail.ustc.edu.cn/~chyang/
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2002-01-29 23:38
啊,这件事情过去很久了,我不太记得了。我甚至想不起来
ClientEventReceive这些函数。
我印象中我没有考虑动态卸载。


   我知道你做过TDI filter。有一个问题需要请教你:
   在截获TDI_SET_EVENT_HANDLER事件时,可以替换掉client端提供的事件回调函数(如ClientEventReceive、ClientEventConnect、ClientEventReceiveDatagram等),这是比较容易做到的。但是,在程序中动态Unload时,需要动态地恢复到以前的状态,即将替换掉的事件函数恢复成以前的EventHandler和EventContext。然而,在有网络流量的情况下,要动态地、不延时地恢复,而且要保证系统足够的稳定,将会非常困难。这是因为这时有很多IRP在排队,有待处理,相当多IRP会用替换后的EventHandler进行处理,而替换后的EventHandler这时已被卸掉,系统会立马down机。我的考虑是“以毒攻毒”,用TdiBuildSetEventHandler恢复以前的EventHandler,但是,必须动态维持一个与TCP/IP Protocol driver相同状态的一个EventHandler队列,这将非常困难,而且会使系统不稳定。
   请问,你对该问题是怎样考虑的?有没有更好的解决办法?谢谢!
   希望大家能共同探讨,这是一个必须面对的问题。



    
不再回忆从前,我已经生活在幸福当中。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2002-04-11 17:29
是啊,我也很想知道。
renxianfu
驱动牛犊
驱动牛犊
  • 注册日期2003-02-28
  • 最后登录2016-01-09
  • 粉丝2
  • 关注2
  • 积分48分
  • 威望365点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分1分
地下室#
发布于:2003-08-07 14:21
我连设置ClientEventReceive的回调函数都不知道呢,能告诉我么,我现在很郁闷呀(win2000) :mad:
谢谢关注!
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-07 16:07

   我知道你做过TDI filter。有一个问题需要请教你:
   在截获TDI_SET_EVENT_HANDLER事件时,可以替换掉client端提供的事件回调函数(如ClientEventReceive、ClientEventConnect、ClientEventReceiveDatagram等),这是比较容易做到的。但是,在程序中动态Unload时,需要动态地恢复到以前的状态,即将替换掉的事件函数恢复成以前的EventHandler和EventContext。然而,在有网络流量的情况下,要动态地、不延时地恢复,而且要保证系统足够的稳定,将会非常困难。这是因为这时有很多IRP在排队,有待处理,相当多IRP会用替换后的EventHandler进行处理,而替换后的EventHandler这时已被卸掉,系统会立马down机。我的考虑是“以毒攻毒”,用TdiBuildSetEventHandler恢复以前的EventHandler,但是,必须动态维持一个与TCP/IP Protocol driver相同状态的一个EventHandler队列,这将非常困难,而且会使系统不稳定。
   请问,你对该问题是怎样考虑的?有没有更好的解决办法?谢谢!
   希望大家能共同探讨,这是一个必须面对的问题。

    

你替换EVENT的时候居然不保存以前的EVENT和CONTEXT?那你怎么做FILTER?你想自由UNLOAD你就必须在UNLOAD时恢复这些EVENT和CONTEXT。
我思故我在,脑袋不会坏.
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-07 19:59
终于见到了传说中的斑竹
放弃瘟草,现吃李草
游客

返回顶部