chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
阅读:2829回复:15

TDI过滤驱动获得本地IP地址的问题?

楼主#
更多 发布于:2007-07-31 19:47
小弟使用TDI过滤驱动想获得一个连接的本地IP地址和端口号,在IRP_MJ_CREATE的完成函数发IRP查询,在又一个完成函数中得到一个TDI_ADDRESS_IP结构,按理说这个结构中有IP地址和端口号,但是我却只得到了端口号,而IP地址却为0?
为什么?
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-31 21:18
我是按照楚狂人的教程来做的
clicx
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-08-01 18:31
0 不是代表任意IP么
---内核开发合作或提供基础技术服务QQ:22863668 ---
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-02 10:35
但如果这样的话,怎样获得这个连接的本地IP地址呢,我想获得和netstat的结果一样
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-02 10:37
这样在create包中是不是抓不到IP地址啊
如果他在应用层使用任意IP地址的话
那我应该去哪里抓呀?
jackiefzj
驱动牛犊
驱动牛犊
  • 注册日期2004-10-28
  • 最后登录2024-03-01
  • 粉丝0
  • 关注0
  • 积分495分
  • 威望135点
  • 贡献值0点
  • 好评度58点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-08-02 15:38
本地IP对应本地网块,在你还没完成连接的时候,怎么可能确定哪块本地网块去连接?
在TDI_CONNECT或TDI_EVENT_CONNECT的完成函数里,才能取得本地IP,具体看tdi_fw
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-08-03 16:04
谢谢  jackiefzj  兄,我先去看看
TDI还真是不太好学呢
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2007-08-03 16:36
TDI对于初学来说,不好学。
人不靓仔心灵美,版头不正红花仔!
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-08-05 18:27
jackiefzj 兄,我看了tdi_fw的TDI_CONNECT和TDI_EVENT_CONNECT的完成函数,但是发现它那里面获得IP地址是从一个数据结构中得到的,而这个数据结构是在CREATE的处理函数中写入的,并不像你所说的那样啊?
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-08-05 21:36
我想到一个办法,不知道可行不?
我想目的是想获得网络通信的IP地址和端口信息。
我可以在发送和接受的函数里查询IP地址信息啊,这样应该没有问题吧?
jackiefzj
驱动牛犊
驱动牛犊
  • 注册日期2004-10-28
  • 最后登录2024-03-01
  • 粉丝0
  • 关注0
  • 积分495分
  • 威望135点
  • 贡献值0点
  • 好评度58点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2007-08-05 22:03
我想你似乎并没有认真仔细得去看,去看Complete函数中调用的update_conn_info(),看一下这函数的调用时注释与定义时注释。
个人感觉TDI里,这里是最复杂的地方。真正取到地址的地方,是update_conn_info()完成函数update_conn_info_complete()里面。中间还有一个小插曲,要通过申请一个工作队列delayed_ucn,把IRQL降到PASSIVE_LEVEL

发送接收函数里,理论上应该是可行的,你可以去试一下。
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-08-06 17:03
好,我再去看看
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-08-06 19:57
谢谢jackiefzj ,我看了下,关键果然是在那里。我又有一个问题,tcp可以通过这个获得本地IP地址,UDP可以吗?
好象tcp的IRPs->fileobject是连接对象的指针,而udp的irps->fileobject 是传输层地址的指针,处理应该不同吧?
chenting1987
驱动牛犊
驱动牛犊
  • 注册日期2006-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分530分
  • 威望54点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-08-06 20:08
jackiefzj ,不好意思哈,我问的问题太傻了
没看到update_conn_info()里确实对TCP和UDP分别有处理哈,谢谢了哈,各位~~~``
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2007-08-13 10:07
......
人不靓仔心灵美,版头不正红花仔!
niumowangmeng
驱动牛犊
驱动牛犊
  • 注册日期2008-02-22
  • 最后登录2008-06-07
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2008-03-23 20:55
受教了,呵呵
游客

返回顶部