阅读:2468回复:6
请问Huyg版主一个非常专业的问题...我知道你做过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队列,这将非常困难,而且会使系统不稳定。 请问,你对该问题是怎样考虑的?有没有更好的解决办法?谢谢! 希望大家能共同探讨,这是一个必须面对的问题。 |
|
沙发#
发布于:2002-01-29 22:03
要达到怎样的目的啊?非得需要使用tdi filter来做?
|
|
|
板凳#
发布于:2002-01-29 23:38
啊,这件事情过去很久了,我不太记得了。我甚至想不起来
ClientEventReceive这些函数。 我印象中我没有考虑动态卸载。
|
|
|
地板#
发布于:2002-04-11 17:29
是啊,我也很想知道。
|
|
地下室#
发布于:2003-08-07 14:21
我连设置ClientEventReceive的回调函数都不知道呢,能告诉我么,我现在很郁闷呀(win2000) :mad:
|
|
|
5楼#
发布于:2003-08-07 16:07
你替换EVENT的时候居然不保存以前的EVENT和CONTEXT?那你怎么做FILTER?你想自由UNLOAD你就必须在UNLOAD时恢复这些EVENT和CONTEXT。 |
|
|
6楼#
发布于:2003-08-07 19:59
终于见到了传说中的斑竹
|
|
|