阅读:1155回复:0
TDI_LISTEN成功后,为什么不会产生一个新的连接对象
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 |
|