下面的代码可以获取物理网线连接机器的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]);
//cout<<lpmac<<endl;
LOG_DEBUG(_T("mac = ")<<mac);
cstrMac = mac;
}
else
{
//cout<<"exceptions:"<<(int)uRetCode<<endl;
LOG_WARN(_T("exceptions:")<<(int)uRetCode);
}
}
}

else 
{
size_t i, j;
char * szMac = new char[16];
for (i = 0, j = 0; i < 5; ++i)
j += sprintf (szMac + j, "%02X", pAdapterInfo.Address[i]);
sprintf (szMac + j, "%02X", pAdapterInfo.Address[i]);
LOG_DEBUG("MAC address "<<szMac); cstrMac = szMac;
LOG_DEBUG("MAC address "<<(LPCSTR)cstrMac); *bstrRet = CComBSTR(CA2W(cstrMac)).Detach();
delete[] szMac;
} cstrMac.MakeLower();
*bstrRet = CComBSTR(CA2W(cstrMac)).Detach(); return S_OK;
}