배부르던차에 또 허접하지만 팁하나 올려봅니다.
간혹 랜카드의 맥어드레스가 필요한경우 있습니다. 저같은 경우 시스템의 고유 아이디를 만들때
IDE Serial + Mac Address로 고유 아이디를 내부적으로 만들어서 쓰거든요.
예전에 여기저기서 참조 하고 끌어다 써서 정확한 출처는 모르겠네요 ^^;
- 먼제 헤더에 들어갈 내용
//----------- Lan Card Mac Address 얻기 위한 선언들 (시작)....
#include
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, * PASTAT;
//----------- Lan Card Mac Address 얻기 위한 선언들 (끝)....
- 소스에 들어갈 내용...
//------------------------------------------------------------------------------
// 랜카드 맥어드레스 알아내기
AnsiString GetMacAddressValue()
{
ASTAT Adapter;
NCB Ncb;
UCHAR uRetCode;
LANA_ENUM lenum;
int i;
AnsiString string;
memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (UCHAR *)&lenum;
Ncb.ncb_length = sizeof(lenum);
uRetCode = Netbios( &Ncb );
// printf( "The NCBENUM return code is: 0x%x n", uRetCode );
for(i=0; i < lenum.length ;i++)
{
memset( &Ncb, 0, sizeof(Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = lenum.lana[i];
uRetCode = Netbios( &Ncb );
// printf( "The NCBRESET on LANA %d return code is: 0x%x n",lenum.lana[i], uRetCode );
memset( &Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = lenum.lana[i];
strcpy( (char*)Ncb.ncb_callname, "* " );
Ncb.ncb_buffer = (unsigned char *) &Adapter;
Ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios( &Ncb );
// printf( "The NCBASTAT on LANA %d return code is: 0x%x n",lenum.lana[i], uRetCode );
if ( uRetCode == 0 )
{
string.sprintf("%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 string;
}
//------------------------------------------------------------------------------
위 소스에서 보시다 시피 GetMacAddressValue() 함수 사용 하시면 되겠습니다.
혹시 중복된 내용이거나 뭐 그러시면 말씀 해주세요.
|