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

怎样用C语言获取硬件信息?

楼主Giroal(凌宇剑客)2005-06-04 13:24:35 在 C/C++ / 新手乐园 提问

用C语言编程,获取硬件信息,如CPU序列号,网卡MARK地址等等能唯一标识此PC机的信息。本人新手,解释问题请详细点。 问题点数:20、回复次数:11Top

1 楼mostideal(三甲)回复于 2005-06-04 15:09:54 得分 0

我也不搞过,,帮你顶了。。Top

2 楼ice_yezh(椰树)回复于 2005-06-04 16:21:23 得分 0

我在linux下的proc文件系统中搞过,不知道windows怎么搞Top

3 楼xxandxx(luck)回复于 2005-06-04 17:19:54 得分 0

想学学怎么搞Top

4 楼love1998424(迟到的人)回复于 2005-06-04 17:37:12 得分 0

我也想知道啊   ~Top

5 楼tian_su(问天(渺小得惶恐))回复于 2005-06-04 21:11:38 得分 0

我也想知道  
  不过应该要用到APITop

6 楼MagicCarmack(MagiC++)回复于 2005-06-05 04:08:21 得分 0

要想获得这些高级东西最好还是去问硬件制造商好了  
   
  Top

7 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-06-06 18:24:43 得分 0

通过系统APITop

8 楼foochow(无聊,灌水......)回复于 2005-06-06 19:06:53 得分 20

获取网卡的MAC地址  
  #include   "stdafx.h"  
   
  #include   <windows.h>  
   
  #include   <wincon.h>  
   
  #include   <stdlib.h>  
   
  #include   <stdio.h>  
   
  #include   <time.h>  
   
  //   因为是通过NetAPI来获取网卡信息,所以需要包含其题头文件nb30.h  
   
  #include   <nb30.h>  
   
  typedef   struct   _ASTAT_  
   
  {  
   
  ADAPTER_STATUS   adapt;  
   
  NAME_BUFFER  
   
  NameBuff   [30];  
   
  }   ASTAT,   *   PASTAT;  
   
  ASTAT   Adapter;  
   
  //   定义一个存放返回网卡信息的变量  
   
  //   输入参数:lana_num为网卡编号,一般地,从0开始,但在Windows   2000中并不一定是连续分配的  
   
  void   getmac_one   (int   lana_num)  
   
  {  
   
  NCB   ncb;  
   
  UCHAR   uRetCode;  
   
  memset(   &ncb,   0,   sizeof(ncb)   );  
   
  ncb.ncb_command   =   NCBRESET;  
   
  ncb.ncb_lana_num   =   lana_num   //   指定网卡号  
   
  //   首先对选定的网卡发送一个NCBRESET命令,以便进行初始化  
   
  uRetCode   =   Netbios(   &ncb   );  
   
  printf(   "The   NCBRESET   return   code   is:   0x%x   \n",   uRetCode   );  
   
  memset(   &ncb,   0,   sizeof(ncb)   );  
   
  ncb.ncb_command   =   NCBASTAT;  
   
  ncb.ncb_lana_num   =   lana_num;   //   指定网卡号  
   
  strcpy((char   *)ncb.ncb_callname,"*"   );  
   
  ncb.ncb_buffer   =   (unsigned   char   *)   &Adapter;   //   指定返回的信息存放的变量  
   
  ncb.ncb_length   =   sizeof(Adapter);  
   
  //   接着,可以发送NCBASTAT命令以获取网卡的信息  
   
  uRetCode   =   Netbios(   &ncb   );  
   
  printf(   "The   NCBASTAT   return   code   is:   0x%x   \n",   uRetCode   );  
   
  if   (   uRetCode   ==   0   )  
   
  {  
   
  //   把网卡MAC地址格式化成常用的16进制形式,如0010-A4E4-5802  
   
  printf(   "The   Ethernet   Number[%d]   is:   %02X%02X-%02X%02X-%02X%02X\n",  
   
  lana_num,  
   
  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]   );  
   
  }  
   
  }  
   
  int   main(int   argc,   char*   argv[])  
   
  {  
   
  NCB   ncb;  
   
  UCHAR   uRetCode;  
   
  LANA_ENUM   lana_enum;  
   
  memset(   &ncb,   0,   sizeof(ncb)   );  
   
  ncb.ncb_command   =   NCBENUM;  
   
  ncb.ncb_buffer   =   (unsigned   char   *)   &lana_enum;  
   
  ncb.ncb_length   =   sizeof(lana_enum);  
   
  //   向网卡发送NCBENUM命令,以获取当前机器的网卡信息,如有多少个网卡、每张网卡的编号等  
   
  uRetCode   =   Netbios(   &ncb   );  
   
  printf(   "The   NCBENUM   return   code   is:   0x%x   \n",   uRetCode   );  
   
  if   (   uRetCode   ==   0   )  
   
  {  
   
  printf(   "Ethernet   Count   is   :   %d\n\n",   lana_enum.length);  
   
  //   对每一张网卡,以其网卡编号为输入编号,获取其MAC地址  
   
  for   (   int   i=0;   i<lana_enum.length;   ++i)  
   
  getmac_one(   lana_enum.lana[i]);  
   
  }  
   
  return   0;  
   
  }  
  Top

9 楼tian_su(问天(渺小得惶恐))回复于 2005-06-06 19:18:34 得分 0

楼上这段代码  
   
  我在VC6.0中不行啊  
  有这样的错误,不知为什么  
  cqianggg.obj   :   error   LNK2001:   unresolved   external   symbol   _Netbios@4  
  Debug/cqianggg.exe   :   fatal   error   LNK1120:   1   unresolved   externals  
  Error   executing   link.exe.Top

10 楼yangman211()回复于 2005-06-10 17:03:33 得分 0

upTop

11 楼jswang79(大山)回复于 2005-06-10 22:27:50 得分 0

up  
  Top

相关问题

  • c语言中怎样获取内码?
  • c语言中怎样获取内码
  • 如何获取各种硬件信息和系统信息(最好用标准C,C++)
  • c语言能代替汇编吗?不在硬件编程方面。
  • 如何获取cpu的主频,使用c语言,请给出代码,谢谢!!!
  • 硬件信息的获取
  • 学C语言。。。
  • C语言书!
  • C语言中如何获取指针指向的空间的大小(十万火急!!)
  • 请教在C语言中怎样在快速循环中利用系统时间获取随机数

关键词

  • 硬件
  • 信息
  • ncb
  • uretcode
  • 网卡
  • lana
  • 获取
  • ncbastat
  • ncbreset
  • astat

得分解答快速导航

  • 帖主:Giroal
  • foochow

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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