得到本机第一块网卡的mac地址

来源:互联网 发布:excel表数据分类汇总 编辑:程序博客网 时间:2024/05/16 04:38

 

#include "iphlpapi.h"
//---------------------------------------------------------------------------
typedef struct tagAdapterInfo         
{
        char szDeviceName[128];           // 名字
        char szIPAddrStr[16];             // IP
        char szHWAddrStr[18];             // MAC
        DWORD dwIndex;                    // 编号
}       INFO_ADAPTER, *PINFO_ADAP


bool   GetFirstMac(BYTE * MacBuf)
{
        char tempChar;
       ULONG uListSize=1;
       PIP_ADAPTER_INFO pAdapter;   // 定义PIP_ADAPTER_INFO结构存储网卡信息
       int nAdapterIndex = 0;

       DWORD dwRet = GetAdaptersInfo((PIP_ADAPTER_INFO)&tempChar,
                                      &uListSize); // 关键函数
       char * pAlloc;
       bool IsFind = false;
       if (dwRet == ERROR_BUFFER_OVERFLOW)
       {
              pAlloc = new char[uListSize];
              PIP_ADAPTER_INFO pAdapterListBuffer = (PIP_ADAPTER_INFO) pAlloc;
                          
              dwRet = GetAdaptersInfo(pAdapterListBuffer, &uListSize);
              if (dwRet == ERROR_SUCCESS)
              {
                      pAdapter = pAdapterListBuffer;
                      if(pAdapter) // 枚举网卡
                      {
                              IsFind = true;
                              memcpy(MacBuf,pAdapter->Address,MAX_ADAPTER_ADDRESS_LENGTH);

                      }

              }
              delete   [] pAlloc;
       }
       return IsFind;


}