wxWidgets 상에서는 MAC 정보 조회에 대한 library가 현재 없는 상태이다.
해당 기능 추가를 위해서는 OS 별 구현을 해야한다.
아래는 MSW 환경 상에서의 MAC address 조회 코드 이다.
typedef struct _ASTAT_ { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff [30]; }ASTAT, *PASTAT; ASTAT Adapter; NCB Ncb; UCHAR uRetCode; LANA_ENUM lenum; int i; memset( &Ncb, 0, sizeof(Ncb) ); Ncb.ncb_command = NCBENUM; Ncb.ncb_buffer = (UCHAR *)&lenum; Ncb.ncb_length = sizeof(lenum); uRetCode = Netbios( &Ncb ); wxMessageBox( wxString::Format( _("The NCBENUM return code is: 0x%08x \n"), uRetCode ) ); // if (uRetCode == NRC_BADNCB) // printf("Bad NCB returned, cannot retrieve adapter information!\n"); wxString str = wxEmptyString; 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 ); wxMessageBox( wxString::Format( _("The NCBRESET on LANA %d return code is: 0x%02x \n"), lenum.lana[i], uRetCode ) ); memset( &Ncb, 0, sizeof (Ncb) ); Ncb.ncb_command = NCBASTAT; Ncb.ncb_lana_num = lenum.lana[i]; UCHAR temp[] = "* "; memcpy( Ncb.ncb_callname, temp, NCBNAMSZ ); Ncb.ncb_buffer = (UCHAR *) &Adapter; Ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios( &Ncb ); wxMessageBox( wxString::Format( _("The NCBRESET on LANA %d return code is: 0x%02x \n"), lenum.lana[i], uRetCode ) ); if ( uRetCode == 0 ) { str = wxString::Format( _("The Eth Num on LANA %d is: %02x-%02x-%02x-%02x-%02x-%02x"), lenum.lana[i], 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] ); wxMessageBox(str); } }