不要用GetAdaptInfo()的方法,最好还是与最基本的硬件挂钩,遍历NIC,Wireless
解决方案 »
- 关于send,recv函数的看法
- Winse install system 9.0的问题
- 在中文win98中,某个软件出现“Unable to create default font”错误?
- 在什么情况下才使用CDocument类和CView类?
- FlexGrid控件如何像使用电子表格那样给网格输入数据?(急)
- 关于 friend r 的问题?(高分请教)
- VC++中的退出程序怎么实现?
- Windows 8 下调用 SCardEstablishContext 返回错误信息NoService
- 我知道一个CListCtrl的句柄,如何获得它的选中项?
- 电子邮件的格式有那位大侠知道?送200分
- CClientDC和CDC的几个问题,请帮忙?
- 向高手请教:如何提取进程控制块的信息
#pragma comment(lib,"netapi32.lib")
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
} ASTAT, * PASTAT;
CString GetMacAddress(CString sNetBiosName)
{
ASTAT Adapter;
NCB ncb;
UCHAR uRetCode;
memset(&ncb, 0, sizeof(ncb));
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0;
uRetCode = Netbios(&ncb);
memset(&ncb, 0, sizeof(ncb));
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0;
sNetBiosName.MakeUpper();
FillMemory(ncb.ncb_callname, NCBNAMSZ - 1, 0x20);
strcpy((char *)ncb.ncb_callname, (LPCTSTR) sNetBiosName);
ncb.ncb_callname[sNetBiosName.GetLength()] = 0x20;
ncb.ncb_callname[NCBNAMSZ] = 0x0;
ncb.ncb_buffer = (unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios(&ncb);
CString sMacAddress;
if (uRetCode == 0)
{
sMacAddress.Format(_T("%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 sMacAddress;
}