怎么获取无线网络MAC地址
如何获取无线网络MAC地址?
下面的代码可以获取物理网线连接机器的MAC地址, 但是连接无线网络的笔记本就获取不到MAC, 求大神分析, 我的代码需要怎么改?
下面的代码可以获取物理网线连接机器的MAC地址, 但是连接无线网络的笔记本就获取不到MAC, 求大神分析, 我的代码需要怎么改?
STDMETHODIMP CWin32ShellCore::GetMACAddress(BSTR* bstrRet)
{
CStringA cstrMac;
IP_ADAPTER_INFO pAdapterInfo;
ULONG len = sizeof(pAdapterInfo);
if(GetAdaptersInfo(&pAdapterInfo, &len) != ERROR_SUCCESS)
{
LOG_WARN("GetAdaptersInfo ERROR!");
//GetAdaptersInfo获取失败,尝试用NetBios去获取
NCB ncb;
UCHAR uRetCode;
int num = 0;
LANA_ENUM lana_enum;
memset(&ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBENUM; // 对网卡发送请求的命令,获取网卡数
ncb.ncb_buffer = (unsigned char*)&lana_enum;
ncb.ncb_length = sizeof(lana_enum);
struct ASTAT //copy头文件中定义
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuf[30];
};
//向网卡发送NCBENUM命令,以获取当前机器的网卡信息,如有多少个网卡
//每张网卡的编号等
uRetCode = Netbios(&ncb);
if (uRetCode == 0)
{
num = lana_enum.length;
LOG_DEBUG(_T("num = ")<<num);
//对每一张网卡,以其网卡编号为输入编号,获取其MAC地址
for(int i = 0; i < num; i++)
{
ASTAT Adapter;
/*if(GetAddressByIndex(lana_enum.lana[i],Adapter) == 0)
{
pMacAddr[i].b1 = Adapter.adapt.adapter_address[0];
pMacAddr[i].b2 = Adapter.adapt.adapter_address[1];
pMacAddr[i].b3 = Adapter.adapt.adapter_address[2];
pMacAddr[i].b4 = Adapter.adapt.adapter_address[3];
pMacAddr[i].b5 = Adapter.adapt.adapter_address[4];
pMacAddr[i].b6 = Adapter.adapt.adapter_address[5];
} */
memset(&ncb,0,sizeof(ncb)); //使用之前要使ncb结构清0
ncb.ncb_command=NCBRESET; //对选定的网卡发送命令,以便进行初始化
ncb.ncb_lana_num=lana_enum.lana[i];
uRetCode=Netbios(&ncb);
//
memset(&ncb,0,sizeof(ncb));
ncb.ncb_command=NCBASTAT;
strcpy((char*)ncb.ncb_callname,"*");
ncb.ncb_buffer=(UCHAR*)&Adapter;
ncb.ncb_length=sizeof(Adapter);
//接着发送命令获取网卡信息
uRetCode=Netbios(&ncb);
if(uRetCode==0)
{
char mac[15];
sprintf(mac,"%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]);