CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

IPHLPAPI的GetAdaptersInfo()调用结果为何是87?

楼主xjb2001(便衣超人)2004-08-03 11:54:49 在 VC/MFC / 网络编程 提问

ULONG   uListSize=1;  
          PIP_ADAPTER_INFO   pAdapter;  
          int   nAdapterIndex   =   0;  
   
          DWORD   dwRet   =   GetAdaptersInfo((PIP_ADAPTER_INFO)&tempChar,   uListSize);  
          if   (dwRet   ==   ERROR_BUFFER_OVERFLOW)  
          {  
                PIP_ADAPTER_INFO   pAdapterListBuffer   =    
                      (PIP_ADAPTER_INFO)new(char[uListSize]);  
                dwRet   =   GetAdaptersInfo(pAdapterListBuffer,   &uListSize);  
                  if   (dwRet   ==   ERROR_SUCCESS)  
                  {  
  .....  
  下面的就不贴了;  
   
            问题就是,在第一次调用GetAdaptersInfo是,正常情况返回的是111;  
            可是,偶把这个代码放进线程里执行,返回就是87;  
             
            为什么会这样?  
            87是什么错误?  
            GETLASTERROR()返回的错误值是0;  
   
            无比郁闷,困惑求解; 问题点数:100、回复次数:10Top

1 楼lbird(heng)回复于 2004-08-03 12:00:37 得分 0

markTop

2 楼PrettyMurphy(土豆)回复于 2004-08-03 12:06:55 得分 0

GZTop

3 楼xjb2001(便衣超人)回复于 2004-08-03 12:23:43 得分 0

满头雾水,自己顶  
   
  有谁能告诉我  
  DWORD   dwRet   =   GetAdaptersInfo((PIP_ADAPTER_INFO)&tempChar,   uListSize);  
  dwRet==87是什么错误也好啊;  
  Top

4 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-08-03 12:26:48 得分 0

错误代码87表示你传入的参数无效(在Error.h中有定义).用在多线程环境下要注意思同步问题。其实第一次你调用GetAdapterInfo(NULL,&nSize);就行,可能你多线程环境下传入的tempChar有误,tempChar是何东东?Top

5 楼yuanbocsut(井冈星火)回复于 2004-08-03 12:41:54 得分 0

http://community.csdn.net/Expert/topic/3237/3237322.xml?temp=.8967554Top

6 楼yuanbocsut(井冈星火)回复于 2004-08-03 12:42:48 得分 0

PIP_ADAPTER_INFO   pinfo=NULL;  
   
  void   CGetComputeInfoDlg::GetLocalInfoWithIpHelp()  
  {  
  if   (pinfo!=NULL)  
  {  
  delete   (pinfo);  
  }  
  unsigned     long   nError;  
  nError=GetAdaptersInfo(pinfo,&len);  
  if   (nError==0)  
  {  
  FillLocalInfo();  
  }  
  if   (nError==ERROR_NO_DATA)  
  {  
  AfxMessageBox("No   adapter   information   exists   for   the   local   computer");  
  }  
  if   (nError==ERROR_NOT_SUPPORTED)  
  {  
  AfxMessageBox("GetAdaptersInfo   is   not   supported   by   the   operating   system   running   on   the   local   computer");  
  }  
  if   (nError==ERROR_BUFFER_OVERFLOW)  
  {  
  pinfo=   (PIP_ADAPTER_INFO)malloc(len);  
  nError=GetAdaptersInfo(pinfo,&len);  
  if   (nError==0)  
  {  
  pDNSInfo=(PFIXED_INFO)malloc(len);  
  nError=GetNetworkParams(pDNSInfo,&len);  
  if   (nError==0)    
  {  
  FillLocalInfo();  
  }  
  }  
  }  
   
  return;  
  }  
  Top

7 楼yuanbocsut(井冈星火)回复于 2004-08-03 12:45:58 得分 50

绝对可以搞定你的问题了,呵呵,怎么突然下线了,自己看,我在这里运行得很好  
  还有  
  unsigned   long   len=0;  
  PFIXED_INFO   pDNSInfo;Top

8 楼xjb2001(便衣超人)回复于 2004-08-03 17:32:53 得分 0

DentistryDoctor(牙科医生)    
   
  yuanbocsut(打盹的神仙)    
   
  的方法都成;  
   
  偶的代码是从XPPIG哪里抄来的  
   
  偶去骂他;Top

9 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-08-03 17:36:42 得分 50

这些代码吧,你安装一个PlatformSDK,其中的示例很清楚。MSDN中的示例程序也可以读读。Top

10 楼xjb2001(便衣超人)回复于 2004-08-03 17:40:00 得分 0

上面的代码是在    
  VC的网络版中,小猪的置顶的帖子里抄来的;  
   
  偶在那个帖子里,+了你说的提醒了;  
   
  做个朋友啊,偶的QQ是     14454667Top

相关问题

  • dll调用中没有结果呀?
  • C# 调用 API调用成功但是结果不对,请高手指教
  • C# 调用 API调用成功但是结果不对,请高手指教
  • 如何获取调用SQL存储过程后的结果值?
  • 求救!如何调用ASP的运行结果
  • 如何通过调用存储过程返回结果集?(ORACLE)
  • 通过WEB来调用数据挖掘的结果
  • 关于在DELPHI中调用CAD并保存结果的问题
  • vb如何调用DOS的内部命令,并返回结果!
  • 关于SQL语句结果集的调用问题

关键词

  • 代码
  • null
  • getadaptersinfo
  • nerror
  • ulistsize
  • pip
  • 调用
  • dwret
  • pdnsinfo
  • pinfo

得分解答快速导航

  • 帖主:xjb2001
  • yuanbocsut
  • DentistryDoctor

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo