你这个MAC是什么地缩写,是Media Access Control(媒体访问控制)吗?如果是去网卡的MAC地址来进行校验的话,下面是取网卡MAC地址的代码: NCB ncb;
LANA_ENUM lana;
ADAPTER_STATUS adapter;
UCHAR uRetCode;
CString sTemp; memset(&ncb,0,sizeof(ncb)); // Issue enum command
ncb.ncb_command=NCBENUM;
uRetCode=Netbios(&ncb); // Reissue enum command
ncb.ncb_buffer = (unsigned char *)&lana;
ncb.ncb_length = sizeof(LANA_ENUM);
uRetCode=Netbios(&ncb);
if (uRetCode!=0)
return; // Reset adapter
memset(&ncb,0,sizeof(ncb));
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = lana.lana[0];
uRetCode= Netbios(&ncb);
if (uRetCode!=0)
return; // Get adapter address
memset(&ncb,0,sizeof(ncb));
ncb.ncb_command=NCBASTAT;
ncb.ncb_lana_num = lana.lana[0];
strcpy((char *)ncb.ncb_callname, "*");
ncb.ncb_buffer = (unsigned char *)&adapter;
ncb.ncb_length = sizeof(ADAPTER_STATUS);
uRetCode= Netbios(&ncb); m_MACAddr="";
for(int i= 0;i<6;i++)
{
sTemp.Format("%02X",adapter.adapter_address[i]);
if (i==5)
m_MACAddr+=sTemp;
else
m_MACAddr+=sTemp + "-";
}
LANA_ENUM lana;
ADAPTER_STATUS adapter;
UCHAR uRetCode;
CString sTemp; memset(&ncb,0,sizeof(ncb)); // Issue enum command
ncb.ncb_command=NCBENUM;
uRetCode=Netbios(&ncb); // Reissue enum command
ncb.ncb_buffer = (unsigned char *)&lana;
ncb.ncb_length = sizeof(LANA_ENUM);
uRetCode=Netbios(&ncb);
if (uRetCode!=0)
return; // Reset adapter
memset(&ncb,0,sizeof(ncb));
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = lana.lana[0];
uRetCode= Netbios(&ncb);
if (uRetCode!=0)
return; // Get adapter address
memset(&ncb,0,sizeof(ncb));
ncb.ncb_command=NCBASTAT;
ncb.ncb_lana_num = lana.lana[0];
strcpy((char *)ncb.ncb_callname, "*");
ncb.ncb_buffer = (unsigned char *)&adapter;
ncb.ncb_length = sizeof(ADAPTER_STATUS);
uRetCode= Netbios(&ncb); m_MACAddr="";
for(int i= 0;i<6;i++)
{
sTemp.Format("%02X",adapter.adapter_address[i]);
if (i==5)
m_MACAddr+=sTemp;
else
m_MACAddr+=sTemp + "-";
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货