说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

怎样得到本机的网卡号???

编辑:说三道四文库 发布时间:2018-01-22 02:23
HTML文档下载 WORD文档下载 PDF文档下载
怎样得到本机的网卡号???
到DOS 下运行:
ipconfig /all
其中的物理地址不知道是不是你想要的网卡号
我想编程实现
BOOL bRet = FALSE; 
        NCB ncb; 
        PUCHAR pData; 
        ZeroMemory(&ncb, sizeof(ncb)); 
        pData = (PUCHAR)malloc(sizeof(ADAPTER_STATUS) + 16 * sizeof(NAME_BUFFER)); 
         
        CopyNetbiosName((char *)&ncb.ncb_callname, szName); 
        ncb.ncb_command = NCBASTAT; 
        ncb.ncb_buffer = (PUCHAR)pData; 
        ncb.ncb_lana_num = 0; 
        ncb.ncb_length = sizeof(ADAPTER_STATUS) + 16 * sizeof(NAME_BUFFER); 
        Netbios(&ncb); 
         
        CString szAddress; 
        if(ncb.ncb_retcode == NRC_GOODRET) 
        { 
                ADAPTER_STATUS *pStatus = (ADAPTER_STATUS *)pData; 
                UCHAR *pAddress = pStatus->adapter_address; 
                szAddress.Format("%02X%02X%02X%02X%02X%02X",  
                        pAddress[0], pAddress[1], pAddress[2], 
                        pAddress[3], pAddress[4], pAddress[5]); 
                 
                bRet = TRUE; 
        } 
        else 
                szAddress = "Wrong Name!"; 
你在msdn上用howto get mac查
HOWTO: Get the MAC Address for an Ethernet Adapter
ID: Q118623 

 

--------------------------------------------------------------------------------
The information in this article applies to:

Microsoft Win32 Software Development Kit (SDK), used with:
Microsoft Windows NT, versions 3.1, 3.5, 3.51, 4.0 
Microsoft Windows 2000 
Microsoft Windows versions 95, 98

--------------------------------------------------------------------------------


SUMMARY
This article demonstrates how to get the Media Access Control (MAC) address for an ethernet adapter programmatically by using NetBIOS, if your card is bound to NetBIOS. 



MORE INFORMATION
To get the Media Access Control (MAC) address for an ethernet adapter programmatically, use the Netbios() NCBASTAT command and provide a "*" as the name in the NCB.ncb_CallName field. This is demonstrated in the sample code below. 

For computers with multiple network adapters you need to enumerate the LANA numbers and perform the NCBASTAT command on each. Even when you have a single network adapter, it is a good idea to enumerate valid LANA numbers first and perform the NCBASTAT on one of the valid LANA numbers. It is considered bad programming to hardcode the LANA number to 0. 

In addition, other hardware and software may be assigned their own MAC addresses. For example, a modem can have a MAC address. Also, a RAS client or server can install "dummy" network adapters that correspond to a dialup or serial connection. Normally, these MAC addresses are randomly generated. If an adapter status is called on a LANA that corresponds to one of these adapters when no connection is present, Netbios returns error 0x34 (NRC_ENVNOTDEF) even if a reset was previously performed. 

With the NetBEUI and IPX transports, the same information can be obtained at a command prompt by using: 


   net config workstation 
The ID given is the MAC address. 

The following code enumerates all LANA numbers, performs a reset (NCBREST), and an adapter status (NCBASTAT). 
Sample Code

   #include <windows.h>
   #include <wincon.h>
   #include <stdlib.h>
   #include <stdio.h>
   #include <time.h>

   typedef struct _ASTAT_
   {

      ADAPTER_STATUS adapt;
      NAME_BUFFER    NameBuff [30];

   }ASTAT, * PASTAT;

   ASTAT Adapter;

   void main (void)
   {
      NCB Ncb;
      UCHAR uRetCode;
      char NetName[50];
      LANA_ENUM   lenum;
      int      i;

      memset( &Ncb, 0, sizeof(Ncb) );
      Ncb.ncb_command = NCBENUM;
      Ncb.ncb_buffer = (UCHAR *)&lenum;
      Ncb.ncb_length = sizeof(lenum);
      uRetCode = Netbios( &Ncb );
      printf( "The NCBENUM return code is: 0x%x \n", uRetCode );

      for(i=0; i < lenum.length ;i++)
      {
          memset( &Ncb, 0, sizeof(Ncb) );
          Ncb.ncb_command = NCBRESET;
          Ncb.ncb_lana_num = lenum.lana[i];

          uRetCode = Netbios( &Ncb );
          printf( "The NCBRESET on LANA %d return code is: 0x%x \n",
                  lenum.lana[i], uRetCode );

          memset( &Ncb, 0, sizeof (Ncb) );
          Ncb.ncb_command = NCBASTAT;
          Ncb.ncb_lana_num = lenum.lana[i];

          strcpy( Ncb.ncb_callname,  "*               " );
          Ncb.ncb_buffer = (char *) &Adapter;
          Ncb.ncb_length = sizeof(Adapter);

          uRetCode = Netbios( &Ncb );
          printf( "The NCBASTAT on LANA %d return code is: 0x%x \n",
                  lenum.lana[i], uRetCode );
          if ( uRetCode == 0 )
          {
             printf( "The Ethernet Number on LANA %d is:
                     %02x%02x%02x%02x%02x%02x\n",
            lenum.lana[i],
                  Adapter.adapt.adapter_address[0],
                  Adapter.adapt.adapter_address[1],
                  Adapter.adapt.adapter_address[2],
                  Adapter.adapt.adapter_address[3],
                  Adapter.adapt.adapter_address[4],
                  Adapter.adapt.adapter_address[5] );
          }
       }

   } 

Additional query words: 

Keywords : kbnetwork kbAPI kbNetBIOS kbNTOS310 kbNTOS350 kbNTOS351 kbSDKPlatform kbWinOS95 kbGrpNet 
Version : WINDOWS:95,98 
Platform : WINDOWS 
Issue type : kbhowto 


Last Reviewed: December 7, 1999
&copy; 2000 Microsoft Corporation. All rights reserved. Terms of Use.
 



--------------------------------------------------------------------------------
Send feedback to MSDN.Look here for MSDN Online resources.
去这里看看吧,你要的都在哪里了,取网卡地址的方法有n多种.
而且这个问题在本论坛也有很多人问了,你查一下就知道了.
用SendARP()或IP帮助中的一个函数(不好意思,具体是什么俺忘记了,等俺给你查查,晚上再来)
GetAdaptersInfo()
OpenFeint血泪史:我们是如何被苹果逼死的 或免费升级:微软2013年推Windows Blue系统 取经:《捕鱼达人2》每月捞金160万美元的秘密 AWS推数据仓库服务Redshift 价格仅是Teradata IBM Oracle的十分之一 美国开展数据中心整合计划 简化政府IT运营 测试报告 如何实现能够在treeview中看到本地工作组,并且打开+时能看到工作组里面得机器? cp文件的时候如何可以不改变文件的修改时间? 哪种设计方案更好?谢谢指教!!! 那里有tomcat4.1下载 刚学完C,想再学一种,请问学C++好还是java或是C# [高手进]海量数据网络通讯,当访问请求达3万以上时,出现coredump错误。一般是什么原因? 做播放器时遇到的问题,帮忙来看看? 最优法统计单词频率的方法 x+4x=360怎么解 x-(5/4x-360)=1/3(5/4x-360 4x-360=x-60怎么解? 1.25x加4x等于360 怎么解 (x+18)÷4=120;列方程快快快~~~ 18+120%x=24请帮我解答方程. 谁能解这个方程:1/5(x-2)=80% 120x=100(x+1)怎么解? (x-2)*180=120x怎么解 法国媒体再曝美国监听法国驻美和联合国广州一镇计生办“视频脱衣”检查在外工叙总统称叙会议日期未定 联合国特使将人民币对美元中间价报6.1330 月促进乳品营养科学进步 伊利设立营养与卢施压裁判被罚款 25000美元换格高温津贴逢夏必“热”有多尴尬习近平对李保国同志先进事迹作出重要批私募:升级风控机制 改进交易制度杜文龙:歼-20研发速度超美俄 美将全职网游异世仙道之悠悠生活异界女仆系统大汉名将绯红人生苍山大峡谷旅游苍山地质公园旅游五华楼旅游大理文献楼旅游岛依旁渔村旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘