为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

查看本机物理网卡地址

2017-09-21 19页 doc 42KB 20阅读

用户头像

is_219945

暂无简介

举报
查看本机物理网卡地址查看本机物理网卡地址 为了得到本地的物理网卡地址,可以直接使用GetAdaptersInfo,它能得到所有的适配器信息,如本地物理网卡,无线网卡或是虚拟机的网卡; 但是这样问题就来了,如果我只想得到本地真识的物理地址,这时候怎么做呢? 我仔细研究了IP_ADAPTER_INFO这个结构体,判断最新可能解决问题要注意以下属性 1.AdapterName 试验后发现是网卡在注册表里的注册ID,放弃 2.Description 是网卡的描述信息 3.Type 网卡类型 我的本机网卡有3种 1.Description=1x...
查看本机物理网卡地址
查看本机物理网卡地址 为了得到本地的物理网卡地址,可以直接使用GetAdaptersInfo,它能得到所有的适配器信息,如本地物理网卡,无线网卡或是虚拟机的网卡; 但是这样问题就来了,如果我只想得到本地真识的物理地址,这时候怎么做呢? 我仔细研究了IP_ADAPTER_INFO这个结构体,判断最新可能解决问题要注意以下属性 1.AdapterName 试验后发现是网卡在注册里的注册ID,放弃 2.Description 是网卡的描述信息 3.Type 网卡类型 我的本机网卡有3种 1.Description=1x1 11b/g/n Wireless LAN PCI Express Half Mini Card Adapter ; type=71,我在有关的头文件里没有看到相应的宏 2.Description=Realtek PCIe GBE Family Controller type=MIB_IF_TYPE_ETHERNET 3.Description=VirtualBox Host-Only Ethernet Adapter type=MIB_IF_TYPE_ETHERNET 可参考 #define MIB_IF_TYPE_OTHER 1 #define MIB_IF_TYPE_ETHERNET 6 #define MIB_IF_TYPE_TOKENRING 9 #define MIB_IF_TYPE_FDDI 15 #define MIB_IF_TYPE_PPP 23 #define MIB_IF_TYPE_LOOPBACK 24 #define MIB_IF_TYPE_SLIP 28 总结后,我通过过滤PCI总线,还有网卡类型最终得到了我想要的本机真实的mac但是事实真的这样吗? 这就要了解网卡总线的概念了, 网卡目前主要有ISA、PCI、PCI-X、PCMCIA、USB和EXPRESS CARD等几种总线类型。 (1)ISA总线接口 这是早期网卡使用的一种总线接口,目前在市面上基本上看不到有ISA总线类型的网卡。那此类网卡就不考虑了 (2)PCI总线接口 PCI总线的英文全称为Peripheral Component Interconnect。即外部设备互联总线,是于1993年推出的PC局部总线。PCI总线的主要特点是传输速度高,目前可实现66M的工作频率,在64位总线宽度下可达到突发(Burst)传输速率533MB/s。可以满足大吞吐量的外设的需求。采用 这种总线类型的网卡在当前的台式机上相当普遍,也是目前最主流的一种网卡接口类型。因为它的I/O速度远比ISA总线型的网卡快(ISA最高仅为33MB/s,而目前的PCI 2.2标准32位的PCI接口数据传输速度最高可达133MB/s),所以在这种总线技术出现后很快就替代了原来老式的ISA总线。它通过网卡所带的两个指示灯颜色初步判断网卡的工作状态。目前能在市面上买到的网卡基本上是这种总线类型的网卡,一般的PC机和服务器中也提供了好几个PCI总线插槽,基本上可以满足常见PCI适配器(包括显示卡、声卡等,不同的产品利用金手指的数量是不同的)安装。 (3)PCI-X总线接口 这是目前服务器网卡经常采用的总线接口,它与原来的PCI相比在I/O速度方面提高了一倍,比PCI接口具有更快的数据传输速度(2.0版本最高可达到266MB/s的传输速率)。PCI-X总线接口的网卡一般32位总线宽度,也有的是用64位数据宽度的。 (4)PCMCIA总线接口 采用这种总线类型的网卡是笔记本电脑专用的,它受笔记本电脑的空间限制,体积远不可能像PCI接口网卡那么大。随着笔记本电脑的日益普及,这种总线类型的网卡目前在市面上较为常见。PCMCIA总线分为两类,一类为16位的PCMCIA,另一类为32位的CardBus。 CardBus是一种用于笔记本计算机的新的高性能PC卡总线接口标准,就像广泛地应用在台式计算机中的PCI总线一样。该总线标准与原来的PC卡标准相比,具有以下的优势:第一,32位数据传输和33MHz操作。CardBus快速以太网PC卡的最大吞吐量接近90 Mbps,而16位快速以太网PC卡仅能达到20-30 Mbps。第二,总线自主。使PC卡可以独立于主CPU,与计算机内存间直接交换数据,这样CPU就可以处理其它的任务。第三,3.3V供电,低功耗。提高了电池的寿命,降低了计算机内部的热扩散,增强了系统的可靠性。第四,后向兼容16位的PC卡。老式以太网和Modem设备的PC卡仍然可以插在CardBus插槽上使用。 (5)USB总线接口 作为一种新型的总线技术,USB(Universal Serial Bus,通用串行总线)已经被广泛应用于鼠标、键盘、打印机、扫描仪、Modem、音箱等各种设备。USB总线的网卡一般是外置式的,具有不占用计算机扩展槽和热插拔的优点,因而安装更为方便。这类网卡主要是为了满足没有内置网卡的笔记本电脑用户。USB总线分为USB2.0和USB1.1标准。USB1.1标准的传输速率的理论值是12Mbps,而USB2.0标准的传输速率可以高达480Mbps。 (6)EXPRESS CARD总线接口 1989年由200多家公司确立了PCMCIA(Personal Computer Memory Card International Association)标准。Express Card这个标准是由许多PCMCIA 的成员公司一同开发,其中包括了技术的领先者,系统开发商及卡的生产商。Express Card 不仅体积细小,而且传输速度更快,适合于移动或者桌面平台系统,使用USB 2.0以及PCI Express通道。这种新一代的卡具有两种规格,但都小于目前CARDBUS 卡规格,其中最小的卡是ExpressCard/34 标准,它仅有目前PC卡的一半,这种尺寸更适合于移动设备的接入,比如PDA等。第二种是ExpressCard/54 标准,这种标准用来支持那些需要更大尺寸卡的技术,其中这些应用包括了SMAERCARD 读卡器,CF卡读卡器,以及1.8英寸的硬盘驱动器。不过所有ExprssCard 标准都是5mm厚,但该标准同时允许卡的开发商开发属于它们自己的“扩展”标准。由于卡同时支持USB2.0 规格和PCI Express 界面规格,因此卡的生产商可以任意选用一种总线来支持它们的应用程序。要么是性能强大的PCI Express 界面规格,要么是应用广泛的USB 2.0 规格。这种卡同时可以兼容以前的接口和总线,无需另外再增加芯片组来对其进行修正。 所以,为了得到想要的物理地址,我写了下面的小程序 // mac.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include"iphlpapi.h" #include #include using namespace std; #pragma comment(lib,"Iphlpapi.lib") int main(int argc,char*argv[]) { PIP_ADAPTER_INFO pAdapterInfo; PIP_ADAPTER_INFO pAdapter=NULL; DWORD dwRetVal=0; pAdapterInfo=(IP_ADAPTER_INFO*)malloc(sizeof(IP_ADAPTER_INFO)); ULONG ulOutBufLen=sizeof(IP_ADAPTER_INFO); if(GetAdaptersInfo(pAdapterInfo,&ulOutBufLen)!=ERROR_SUCCESS) { free(pAdapterInfo); pAdapterInfo=(IP_ADAPTER_INFO*)malloc(ulOutBufLen); } if((dwRetVal=GetAdaptersInfo(pAdapterInfo,&ulOutBufLen))==NO_ERROR) { pAdapter=pAdapterInfo; while(pAdapter) { //pAdapter->Description中包含"PCI","ISA","PCMCIA","USB","EXPRESS CARD"为物理网卡,pAdapter->Type是71为:无线网卡 if(((strstr(pAdapter->Description,"PCI")>0)|| (strstr(pAdapter->Description,"ISA")>0)|| (strstr(pAdapter->Description,"PCMCIA")>0)|| (strstr(pAdapter->Description,"USB")>0)||(strstr(pAdapter->Description,"EXPRESS CARD")>0)) &&pAdapter->Type!=71) { printf("AdapterName:%s\n",pAdapter->AdapterName); printf("AdapterDesc:%s\n",pAdapter->Description); printf("AdapterAddressLength:%d\n",pAdapter->AddressLength); printf("AdapterIndex:%d\n",pAdapter->Index); cout<<"Adapter_DHCP="<DhcpEnabled<CurrentIpAddress<IpAddressList<DhcpServer.IpMask.String<DhcpServer.IpAddress.String<HaveWins<PrimaryWinsServer.IpAddress.String<PrimaryWinsServer.IpMask.String<LeaseObtained<LeaseExpires<AddressLength;i++) { printf("%02X%c",pAdapter->Address[i],i==pAdapter->AddressLength-1?'\n':'-'); sprintf_s(mac,20,"%02X%c",pAdapter->Address[i],i==pAdapter->AddressLength-1? ' ':'-'); string strtemp(mac); str+=strtemp; memset(mac,0,20); } printf("AdapterType:%d\n",pAdapter->Type); printf("IPAddress:%s\n",pAdapter->IpAddressList.IpAddress.String); printf("IPMask:%s\n",pAdapter->IpAddressList.IpMask.String); } pAdapter=pAdapter->Next; } } else { cout<<"CalltoGetAdaptersInfofailed"<
/
本文档为【查看本机物理网卡地址】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索