ztztztztztzt
驱动牛犊
驱动牛犊
  • 注册日期2007-09-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望84点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:1901回复:6

求助:TDI Server模式下监听,只能监听到本机的请求

楼主#
更多 发布于:2007-11-27 17:46
采用的是TDI_ACCEPT然后加TDI_EVENT_CONNECT的方式,本机的请求可以连接,但别的IP的请求没有任何反映,用抓包工具确实可以抓到请求的包;

搞了一天了,实在不知道怎么搞,痛苦中……
ztztztztztzt
驱动牛犊
驱动牛犊
  • 注册日期2007-09-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望84点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-11-28 13:43
是先TDI_ACCEPT建立一个IRP,然后加TDI_EVENT_CONNECT ,而且也加成功了,最后在接收到事件后用TdiBuildAccept,本机上的请求没有任何问题,可是通过网卡的根本就进不了Connect Event里面去,好像没加TDI_EVENT_CONNECT 一样;
没有人遇到这样的问题吗
麻烦高手回答下下,谢谢了
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-11-28 14:02
你是如何处理TDI_EVENT_CONNECT的?
ztztztztztzt
驱动牛犊
驱动牛犊
  • 注册日期2007-09-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望84点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-11-28 14:58
谢谢关注

加事件是:
pIrp = TdiBuildInternalDeviceControlIrp(TDI_SET_EVENT_HANDLER,
            pTcpDevObj,  
            pAddrFileObj,
            &Event,      
            &IoStatus
            );

TdiBuildSetEventHandler(pIrp,
            pTcpDevObj,
            pAddrFileObj,
            NULL,                  
            NULL,                  
            TDI_EVENT_CONNECT,
            TDIEventConnect,        
            pEventContext          
            );
status = IoCallDriver(pTcpDevObj, pIrp);
if (STATUS_PENDING==status)
    KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, 0);

可是现在根本就没有进入到TDIEventConnect中去,
奇怪的是本机发送的请求就可以进去
实在不知道什么原因
ztztztztztzt
驱动牛犊
驱动牛犊
  • 注册日期2007-09-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望84点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-11-28 16:35
具体顺序是:
OpenTransportAddress
OpenEndPoint
Set TDI_EVENT_DISCONNECT
Set TDI_EVENT_ERROR_EX
Set TDI_EVENT_CONNECT
AssocAddr
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-11-28 17:21
呵呵,这个理解不对,当然看不到了。正确的做法应该是做一个tdi filter,在接到TDI_EVENT_CONNECT的时候,替换掉tdi client的函数指针,这样系统先调到你的函数,通过这种方式来实现监控的。
参考网上的tdi_fw,和tdisamp的代码。
ztztztztztzt
驱动牛犊
驱动牛犊
  • 注册日期2007-09-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望84点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-11-28 17:41
这样子啊,我按你的方法再试试,多谢多谢!!!
游客

返回顶部