wujiabao
驱动牛犊
驱动牛犊
  • 注册日期2006-05-16
  • 最后登录2009-05-08
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:1157回复:0

TDI_LISTEN成功后,为什么不会产生一个新的连接对象

楼主#
更多 发布于:2007-04-12 16:21
  KeInitializeEvent(&event, NotificationEvent, FALSE);
pirp=TdiBuildInternalDeviceControlIrp(TDI_LISTEN,tcpdevice,pconn_point,&event,&iostatus);
TdiBuildListen(pirp,tcpdevice,pconn_point,0,0,0,0,0);
status=IoCallDriver(tcpdevice,pirp);
if(status==STATUS_PENDING)
{
       status=KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, 0);//在这里阻断,直到有连接过来.
}

执行成功后,利用pconn_point就可以跟远程连接点进行通信.

但我有一个疑问,在应用态利用SOCKET编程, 侦听的SOCKET对象一直都处在侦听状态.当有连接过来时,

就会产生一个新的SOCKET对象,利用新产生的SOCKET对象跟客户端进行通信.为什么TDI不产生一个新

的连接对象.如果这样,那接收到一个连接后,不又要重复前面的操作(打开地址,打开连接,建立联系,开始侦

听).

高手能不能解释一下呀,初学TDI
游客

返回顶部