阅读:1713回复:8
如何“在我这样的情况下”获取本机IP
在文章搜索中的确能找到很多有关“获取本机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] |
|
沙发#
发布于:2003-07-22 17:55
在文章搜索中的确能找到很多有关“获取本机IP”信息,但好像都不是我所需要的。我的情况是在底层(指xpassthru的recv.c的PtReceive函数中获取本机的IP,注册表和winsock都行不通)。 为什么一定要在那里获取呢?可以尝试由APP把 IP信息结构传递到底层啊. allocate memory可以申请一块和你结构同样大小的内存,再把这块bytes转换成你要的类型,不就可以了?PS:建议用Ndis函数来申请和释放. |
|
|
板凳#
发布于:2003-07-22 18:07
没想到这么块就有人回复! :)
谢谢! 由app下传的效率太低了,同时又产生了一个新问题:如何得到即时更新的IP呢?(将虚拟IP更改后需要及时得到更新后的IP) 第二个答复让我一呆:我怎么就没有想到,哎,想得太复杂了。谢谢! 关注! |
|
地板#
发布于:2003-07-22 18:17
没想到这么块就有人回复! :) IP信息一般说来变化 的频率不是太大.所以应该不涉及到效率. 另外你可以自己去扫描注册表.或者通过APP来修改注册表,来完成IP地址的转换. 除非你有特别的用途需要去不停的换IP. |
|
|
地下室#
发布于: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] |
|
|
5楼#
发布于:2003-07-23 08:56
NDISREADNETWORKADDRESS是mac地址吧。
|
|
|
6楼#
发布于:2003-07-23 09:59
犯了低级错误,多谢MIKE的提醒.
向guitar_string致歉. 以后回帖时,会仔细检查. :( |
|
|
7楼#
发布于:2003-07-23 10:23
mikeluo :
你有没有写pcmcia卡驱动的经验,请指教 |
|
8楼#
发布于:2003-07-23 10:34
mikeluo : 没有做过pcmcia卡 |
|
|