阅读:2550回复:5
请教TDI_CONNECT的一个问题
请教各位大侠,我想在Tdiconnect的时候得到原地址和目的地址,有没有办法实现。
NTSTATUS TDIH_TdiConnect( PTDIH_DeviceExtension pTDIH_DeviceExtension, PIRP Irp, PIO_STACK_LOCATION IrpSp ) { NTSTATUS RC; PTDI_REQUEST_KERNEL p; NDIS_SPIN_LOCK ng_io_lock; DbgPrint(( "TDIH_TdiConnect: Entry...\n" )); NdisAllocateSpinLock(&ng_io_lock); p = (PTDI_REQUEST_KERNEL )&IrpSp->Parameters; // 我可以从这得到连接的目的地址,请问有没有办法得到原地址呢? (p->RequestConnectionInformation)->RemoteAddress); ... } |
|
沙发#
发布于:2007-04-13 09:41
怎么没有人回呢,自己顶一下吧,就是我想再对本地端口过滤,在TDICONNECT的时候,如果我判断该端口是否是我想过滤的端口。 通过什么方法可取到本地端口,有没有什么TDI函数? 或者要通过QueryInformation?
|
|
板凳#
发布于:2007-04-13 14:31
在完成例程里面获取地址
|
|
|
地板#
发布于:2007-04-13 14:44
能不能提供多一点信息?是在TDIH_TdiConnectComplete里面取吗?具体怎么个取法,需不需要用到TDIBuildQueryInformation?
|
|
地下室#
发布于:2007-04-17 14:45
一般情况下,是在传输地址对象被创建的时候获得本地地址,在TDI_ASSOCIATE_ADDRESS中将传输地址对象中保存的IP/Port拷贝给连接地址对象,在TDI_CONNECT的时候只是需要考虑远端IP/Port就行了。使用TDIBuildQureyInformation在TDIH_TdiConnectComplete中取应该可以的,但是没有试过。
|
|
|
5楼#
发布于:2007-04-23 16:01
TDIBuildQureyInformation是运行在PASSIVE_LEVEL上的,在TDIH_TdiConnectComplete里面取不到的。不过这个问题我已经解决了,是在TDI_OpenAddressComplete里面取到的。谢谢楼上了,
![]() |
|