NCB nInfo;
memset(&nInfo,0,sizeof(NCB));
nInfo.ncb_command=NCBRESET;
nInfo.ncb_lana_num=0;
Netbios(&nInfo);
ADAPTER_STATUS AdaInfo;
nInfo.ncb_command=NCBASTAT;
nInfo.ncb_lana_num=0;
nInfo.ncb_buffer=(unsigned char *)&AdaInfo;
nInfo.ncb_length=sizeof(ADAPTER_STATUS);
strncpy((char*)nInfo.ncb_callname,"*",NCBNAMSZ); Netbios(&nInfo); CString macAddr;
macAddr.Format("%02X-%02X-%02X-%02X-%02X-%02X",AdaInfo.adapter_address[0],AdaInfo.adapter_address[1],AdaInfo.adapter_address[2],AdaInfo.adapter_address[3],AdaInfo.adapter_address[4],AdaInfo.adapter_address[5]);
m_Mac.SetWindowText(macAddr);
提供一个:
char * General::GetMacAddr()
{
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);
char mac[17] = {0};
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)
{
//pAdapter->Description中包含"PCI"为:物理网卡
//pAdapter->Type是71为:无线网卡
//if(strstr(pAdapter->Description, "PCI") > 0 || pAdapter->Type == 71)
{
//printf("------------------------------------------------------------n");
//printf("AdapterName:t%sn",pAdapter->AdapterName);
//printf("AdapterDesc:t%sn",pAdapter->Description);
//printf("AdapterAddr:t");
for(UINT i=0; i < pAdapter->AddressLength; i++)
{
char tmp[2] = {0};
sprintf(tmp,"%02X",pAdapter->Address[i]);
strcat(mac,tmp);
}
//printf("AdapterType:t%dn", pAdapter->Type);
//printf("IPAddress:t%sn", pAdapter->IpAddressList.IpAddress.String);
//printf("IPMask:t%sn", pAdapter->IpAddressList.IpMask.String);
}
// if(!isLocalAdapter(pAdapter->AdapterName))
// {
pAdapter=pAdapter->Next;
// }
}
}
else
{
GlobalFree(pAdapterInfo);
return "000000000000";
}
// GlobalFree(pAdapterInfo);
free(pAdapterInfo);
return mac;
//return NULL;
}