C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[765] 랜카드의 맥어드레스(Mac Address) 얻기
이점한 [redyouth] 10154 읽음    2008-04-16 13:58
배부르던차에 또 허접하지만 팁하나 올려봅니다.

간혹 랜카드의 맥어드레스가 필요한경우 있습니다. 저같은 경우 시스템의 고유 아이디를 만들때
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() 함수 사용 하시면 되겠습니다.
혹시 중복된 내용이거나 뭐 그러시면 말씀 해주세요.
방태윤 [nabty]   2008-04-22 00:28 X
가까운곳에 있었네요,,,멀리 헤메고 다닐뻔했네요,,잘 쓰겠습니다.쌩유,^^.
강재호.만해 [greenuri]   2008-05-07 14:14 X
이 방법 말고도 UUID에서 뽑아 내는 방법이 있습니다 ^^

http://en.wikipedia.org/wiki/UUID#Version_1_.28MAC_address.29
여기에 보시면 앞에 10개 바이트가 UUID를 가져오는것으로 되어 있습니다 참고 하세요 ^^

+ -

관련 글 리스트
765 랜카드의 맥어드레스(Mac Address) 얻기 이점한 10154 2008/04/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.