GetAdaptersInfo获取MAC地址
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                GetAdaptersInfo获取MAC地址
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                
                            
                            
                            源代碼:
#include<atlbase.h>
#include<atlconv.h>
#include"iphlpapi.h"
 
#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)
??? {
??? ??? GlobalFree(pAdapterInfo);
??? ??? pAdapterInfo=(IP_ADAPTER_INFO*)malloc(ulOutBufLen);
??? ??? ????
??? }
????
??? if((dwRetVal=GetAdaptersInfo(pAdapterInfo,&ulOutBufLen))==NO_ERROR)
??? {
??? ??? pAdapter=pAdapterInfo;
??? ??? while(pAdapter)
??? ??? {
??? ??? ??? if(strstr(pAdapter->Description,"PCI")>=0//pAdapter->Description中包含"PCI"為:物理網(wǎng)卡
??? ??? ??? ? || pAdapter->Type==71????????? //pAdapter->Type是71為:無線網(wǎng)卡
??? ??? ??? ? )
??? ??? ? {
??? ??? ??? ? printf("--------\n");
??? ??? ??? ? printf("AdapterName:%s\n",pAdapter->AdapterName);
??? ??? ??? ? printf("AdapterDesc:%s\n",pAdapter->Description);
??? ??? ??? ? printf("AdapterAddr:");
??? ??? ??? ? for(UINT i=0;i<pAdapter->AddressLength;i++)
??? ??? ??? ? {
??? ??? ??? ??? ? printf("%02X%c",pAdapter->Address[i],i==pAdapter->AddressLength-1?'\n':'-');
??? ??? ??? ? }
??? ??? ??? ? 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
??? {
??? ??? printf("CalltoGetAdaptersInfofailed\n");
??? }
 
??? return 0;
}
 
備注: "iphlpapi.h","Iphlpapi.lib"可能找不到,這個(gè)庫在VC安裝目錄可能有,也可能沒有,如果沒有,可以安裝winddk,在winddk相應(yīng)目錄能找到該頭文件和庫文件,找到之后,將頭文件所在目錄加入到工程的additional include directories,將庫文件所在目錄加入到工程的additional library path。
                        
                        
                        #include<atlbase.h>
#include<atlconv.h>
#include"iphlpapi.h"
#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)
??? {
??? ??? GlobalFree(pAdapterInfo);
??? ??? pAdapterInfo=(IP_ADAPTER_INFO*)malloc(ulOutBufLen);
??? ??? ????
??? }
????
??? if((dwRetVal=GetAdaptersInfo(pAdapterInfo,&ulOutBufLen))==NO_ERROR)
??? {
??? ??? pAdapter=pAdapterInfo;
??? ??? while(pAdapter)
??? ??? {
??? ??? ??? if(strstr(pAdapter->Description,"PCI")>=0//pAdapter->Description中包含"PCI"為:物理網(wǎng)卡
??? ??? ??? ? || pAdapter->Type==71????????? //pAdapter->Type是71為:無線網(wǎng)卡
??? ??? ??? ? )
??? ??? ? {
??? ??? ??? ? printf("--------\n");
??? ??? ??? ? printf("AdapterName:%s\n",pAdapter->AdapterName);
??? ??? ??? ? printf("AdapterDesc:%s\n",pAdapter->Description);
??? ??? ??? ? printf("AdapterAddr:");
??? ??? ??? ? for(UINT i=0;i<pAdapter->AddressLength;i++)
??? ??? ??? ? {
??? ??? ??? ??? ? printf("%02X%c",pAdapter->Address[i],i==pAdapter->AddressLength-1?'\n':'-');
??? ??? ??? ? }
??? ??? ??? ? 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
??? {
??? ??? printf("CalltoGetAdaptersInfofailed\n");
??? }
??? return 0;
}
備注: "iphlpapi.h","Iphlpapi.lib"可能找不到,這個(gè)庫在VC安裝目錄可能有,也可能沒有,如果沒有,可以安裝winddk,在winddk相應(yīng)目錄能找到該頭文件和庫文件,找到之后,將頭文件所在目錄加入到工程的additional include directories,將庫文件所在目錄加入到工程的additional library path。
總結(jié)
以上是生活随笔為你收集整理的GetAdaptersInfo获取MAC地址的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: ARM中断分析之二:裸机下面的中断处理
 - 下一篇: 核显跑3A不是梦:AMD R5 6600