请问如何检测系统所安装的NIC?

rshcbxf 2002-03-01 10:06:58
请问有没有什么比较简单的方法(最好是Win32 API)可以用来检测系统中是否安装了网卡?
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rshcbxf 2002-03-03
  • 打赏
  • 举报
回复
感谢acptvc(微软全球技术中心 VC技术支持)的回答
acptvc 2002-03-01
  • 打赏
  • 举报
回复
感谢您使用微软产品。

在Windows 2000/XP/.NET Server及Windows 98/Me中,您可以方便地使用GetAdaptersInfo() API得到有关网卡的信息,注意其中包含了只能单向通信的网卡。
关于GetAdaptersInfo()的具体使用方法,请参考
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tcpip/tcpip_6tpr.asp

- 微软全球技术中心 VC技术支持

本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。

为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
rshcbxf 2002-03-01
  • 打赏
  • 举报
回复
此法并不能够区分NIC和拨号适配器,例如在我的机器上有一网卡,同时还有Modem,该程序报告的NIC数量为6,我把网卡下掉,该程序报告NIC数量为4
又及:该方法依赖于NetBEUI,系统中必须安装了NetBEUI才能调用Netbios函数,此点也不太方便
strip 2002-03-01
  • 打赏
  • 举报
回复
#include <windows.h>
#include <string.h>

#include <nb30.h>
#pragma comment(lib, "netapi32.lib")

int DetectNIC()
{
NCB Ncb;
LANA_ENUM lenum;
memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (UCHAR *)&lenum;
Ncb.ncb_length = sizeof(lenum);
Netbios( &Ncb );
if( NRC_GOODRET == Ncb.ncb_retcode )
return lenum.length;
else
return 0;
}
void main (void)
{
printf( "\nTotal NIC(s) = %d", DetectNIC() );
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧