Macアドレスの取得方法
こんにちは、
Macアドレスの取得方法で悩んでいます。
現在NetBiosを使った方法で取得する方法までは出来たのですが、ネットワークに接続していない環境も想定しているため、ネットワークカードが稼動していない場合取得が出来ないようです。色々調べて見ましたがこの方法しか見つかりませんでした。
どなたか、ネットワークに接続されていない(LANケーブルがつながっていない)PCのMacアドレスの取得方法をご存知の方いらしましたら、ご教授願います。
//NetBiosを使った取得のソースコードを以下に示します。
#include "stdafx.h"
#include "Nb30.h"
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
}ASTAT, * PASTAT;
ASTAT Adapter;
bool GetMacAddress(char* pMacAddress)
{
NCB Ncb;
UCHAR uRetCode;
// reset
memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = 0;
uRetCode = Netbios( &Ncb );
// get
memset( &Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = 0;
strcpy( (char*)Ncb.ncb_callname, "*" );
Ncb.ncb_buffer = (UCHAR*)&Adapter;
Ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios( &Ncb );
if ( uRetCode == 0 )
{
char strBuffer[12];
sprintf(strBuffer, "%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] );
strcpy(pMacAddress, strBuffer);
return true;
}
return false;
}
お礼
ご回答ありがとうございました。 結構コストがかかるんですね。 検討したいと思います。