MAD地址是网卡的地址吧? 在CMD里运行 ipconfig /all,应该是 NIC 部分的物理地址吧。
我下面运行怎么全是0呢 WSADATA wsaData;
WORD sockVersion = MAKEWORD(2, 2);
::WSAStartup( sockVersion, &wsaData); PIP_ADAPTER_INFO padapterInfo = 0;
ULONG ulong; GetAdaptersInfo(padapterInfo, &ulong);
padapterInfo = (PIP_ADAPTER_INFO) malloc(ulong);
int a = GetAdaptersInfo(padapterInfo, &ulong);

u_char g_ucLocalMac[6];
memcpy(g_ucLocalMac, padapterInfo->Address, 6);
printf("%02X - %02X - %02X - %02X - %02X - %02X ",
g_ucLocalMac[0],
g_ucLocalMac[1],
g_ucLocalMac[2],
g_ucLocalMac[3],
g_ucLocalMac[4],
g_ucLocalMac[5]
);

解决方案 »

  1.   

    // 获取本地 MAC 地址 
    extern "C" __declspec(dllexport) int _stdcall Get_Mac_Addr( char * szMac)
    {
    NCB ncb;
    typedef struct _ASTAT_
    {
    ADAPTER_STATUS adapt;
    NAME_BUFFER NameBuff[30]; }ASTAT,*PASTAT; ASTAT Adapter;     typedef struct _LANA_ENUM
    {
    UCHAR   length;
    UCHAR   lana[MAX_LANA]; }LANA_ENUM; LANA_ENUM lana_enum;    
    UCHAR uRetCode;
    memset(&ncb, 0, sizeof(ncb));
    memset(&lana_enum, 0, sizeof(lana_enum));    
    ncb.ncb_command = NCBENUM;
    ncb.ncb_buffer = (unsigned char *)&lana_enum;
    ncb.ncb_length = sizeof(LANA_ENUM);
    uRetCode = Netbios(&ncb); if(uRetCode != NRC_GOODRET) return uRetCode;      for(int lana=0; lana<lana_enum.length; lana++)     
    {
    ncb.ncb_command = NCBRESET;
    ncb.ncb_lana_num = lana_enum.lana[lana];
    uRetCode = Netbios(&ncb); 
    if(uRetCode == NRC_GOODRET)
    break; 
    }  if(uRetCode != NRC_GOODRET) return uRetCode;      memset(&ncb, 0, sizeof(ncb));
    ncb.ncb_command = NCBASTAT;
    ncb.ncb_lana_num = lana_enum.lana[0];
    strcpy((char*)ncb.ncb_callname, "*");
    ncb.ncb_buffer = (unsigned char *)&Adapter;
    ncb.ncb_length = sizeof(Adapter);
    uRetCode = Netbios(&ncb);  if(uRetCode != NRC_GOODRET) return uRetCode; sprintf( szMac,"%02X-%02X-%02X-%02X-%02X-%02X",
    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]); return sizeof(szMac);
    }