1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
bool TForm1::GetAdapterInfo(int nAdapterNum, String & sMAC)
{
NCB Ncb;
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = nAdapterNum;
if (Netbios(&Ncb) != NRC_GOODRET)
{
char acTemp[80];
ostrstream outs(acTemp, sizeof(acTemp));
sMAC = acTemp;
return false;
}
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = nAdapterNum;
strcpy((char *) Ncb.ncb_callname, "*");
struct ASTAT
{ ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
}Adapter;
memset(&Adapter, 0, sizeof(Adapter));
Ncb.ncb_buffer = (unsigned char *)&Adapter;
Ncb.ncb_length = sizeof(Adapter);
if (Netbios(&Ncb) == 0)
{char acMAC[18];
// mode decimal
sprintf(acMAC, "%02d%02d%02d%02d%02d%02d",
int (Adapter.adapt.adapter_address[0]),
int (Adapter.adapt.adapter_address[1]),
int (Adapter.adapt.adapter_address[2]),
int (Adapter.adapt.adapter_address[3]),
int (Adapter.adapt.adapter_address[4]),
int (Adapter.adapt.adapter_address[5]));
sMAC = acMAC;
// mode hexadecimal
sprintf(acMAC, "%02x%02x%02x%02x%02x%02x",
int (Adapter.adapt.adapter_address[0]),
int (Adapter.adapt.adapter_address[1]),
int (Adapter.adapt.adapter_address[2]),
int (Adapter.adapt.adapter_address[3]),
int (Adapter.adapt.adapter_address[4]),
int (Adapter.adapt.adapter_address[5]));
oMAC = acMAC;
return true;
}
else
{char acTemp[80];
ostrstream outs(acTemp, sizeof(acTemp));
sMAC = acTemp;
return false;
}
} |
Partager