首先在头文件定义中加入#include "nb30.h"
#pragma comment(lib,"netapi32.lib")
typedef struct _astat_
{
adapter_status adapt;
name_buffer namebuff[30];
} astat, * pastat;
就可以这样调用来获取远程网卡mac地址了:
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;
}