guitar_string
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2004-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1713回复:8

如何“在我这样的情况下”获取本机IP

楼主#
更多 发布于:2003-07-22 17:45
在文章搜索中的确能找到很多有关“获取本机IP”信息,但好像都不是我所需要的。我的情况是在底层(指xpassthru的recv.c的PtReceive函数中获取本机的IP,注册表和winsock都行不通)。

另外,如何在PtReceive中使用malloc?我包含了文件<malloc.h>、<stdlib.h>,但还是出现link错误。有帖子说用ndisallocatememory能替代malloc,但它好像只能allocate一块bytes,怎样才能将该函数allocate的memory具备我所定义的结构呢?比如:malloc(sizeof(struct ip_header))返回的是有类型的内存,如何用ndisallocatememory做到这点呢,或者另外需要用到那些函数?

[编辑 -  7/22/03 by  guitar_string]
nicol
驱动大牛
驱动大牛
  • 注册日期2001-11-28
  • 最后登录2009-07-30
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-22 17:55
在文章搜索中的确能找到很多有关“获取本机IP”信息,但好像都不是我所需要的。我的情况是在底层(指xpassthru的recv.c的PtReceive函数中获取本机的IP,注册表和winsock都行不通)。

另外,如何在PtReceive中使用malloc?我包含了文件<malloc.h>、<stdlib.h>,但还是出现link错误。有帖子说用ndisallocatememory能替代malloc,但它好像只能allocate一块bytes,怎样才能将该函数allocate的memory具备我所定义的结构呢?比如:malloc(sizeof(struct ip_header))返回的是有类型的内存,如何用ndisallocatememory做到这点呢,或者另外需要用到那些函数?

[编辑 -  7/22/03 by  guitar_string]


为什么一定要在那里获取呢?可以尝试由APP把 IP信息结构传递到底层啊.

allocate memory可以申请一块和你结构同样大小的内存,再把这块bytes转换成你要的类型,不就可以了?PS:建议用Ndis函数来申请和释放.
==寂寞骆驼==
guitar_string
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2004-06-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-22 18:07
没想到这么块就有人回复! :)
谢谢!

由app下传的效率太低了,同时又产生了一个新问题:如何得到即时更新的IP呢?(将虚拟IP更改后需要及时得到更新后的IP)

第二个答复让我一呆:我怎么就没有想到,哎,想得太复杂了。谢谢!

关注!
nicol
驱动大牛
驱动大牛
  • 注册日期2001-11-28
  • 最后登录2009-07-30
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-22 18:17
没想到这么块就有人回复! :)
谢谢!

由app下传的效率太低了,同时又产生了一个新问题:如何得到即时更新的IP呢?(将虚拟IP更改后需要及时得到更新后的IP)

第二个答复让我一呆:我怎么就没有想到,哎,想得太复杂了。谢谢!

关注!


IP信息一般说来变化 的频率不是太大.所以应该不涉及到效率.
另外你可以自己去扫描注册表.或者通过APP来修改注册表,来完成IP地址的转换.

除非你有特别的用途需要去不停的换IP.
==寂寞骆驼==
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-22 20:09
1。好象大家都不用这个函数来读IP地址,偶不知道大家为什么?
NDISREADNETWORKADDRESS,
这个函数是在内核中用来从注册表中的IP地址。具体的说明看DDK
很清楚的!
//你说不从注册表中读IP,真是搞笑,IP的老家就在注册表中。
//你不从老家去请IP,到哪里去请,晕~~~~
2。NDISALLOCATEMEMORY的用法:
youstruct  *p

status = ndisallocatememory(&p,sizeof(youstruct),0,highacceptablemax)
第3个参数是表示PAGED/NOPAGED,第4个参数:是(-1,-1)
实际上是两个0XFFFFFFFF,表示在任何物理内存里申请内存 :D

[编辑 -  7/22/03 by  antspower]
放弃瘟草,现吃李草
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-23 08:56
NDISREADNETWORKADDRESS是mac地址吧。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-23 09:59
犯了低级错误,多谢MIKE的提醒.
向guitar_string致歉.
以后回帖时,会仔细检查.

 :(
放弃瘟草,现吃李草
liuzq
驱动小牛
驱动小牛
  • 注册日期2003-05-25
  • 最后登录2004-06-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-23 10:23
mikeluo :
你有没有写pcmcia卡驱动的经验,请指教
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-23 10:34
mikeluo :
你有没有写pcmcia卡驱动的经验,请指教


没有做过pcmcia卡
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
游客

返回顶部