首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

获取MAC地址解决方法

2012-03-23 
获取MAC地址MAD地址是网卡的地址吧? 在CMD里运行 ipconfig /all,应该是 NIC 部分的物理地址吧。我下面运行

获取MAC地址
MAD地址是网卡的地址吧? 在CMD里运行 ipconfig /all,应该是 NIC 部分的物理地址吧。
我下面运行怎么全是0呢

C/C++ code
    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]        );


[解决办法]
// 获取本地 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);
}

热点排行