On what OS/Compiler? The following works on MSVC6
Code:
#include "stdafx.h"
// Obtain the Media Access Control Address (MAC)
// needs netapi32.lib
#include <windows.h>
#include <nb30.h>
#include <stdio.h>
#include <tchar.h>
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, * PASTAT;
ASTAT Adapter;
int _tmain(int argc, _TCHAR* argv[])
{
NCB ncb;
BYTE bRetCode;
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0;
bRetCode = Netbios( &ncb );
_tprintf( _T("The NCBRESET return code is: 0x%x \n"), bRetCode );
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0;
// Must be in non-unicode
strcpy( (char*) ncb.ncb_callname, "* " );
ncb.ncb_buffer = (unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);
bRetCode = Netbios( &ncb );
_tprintf( _T("The NCBASTAT return code is: 0x%x \n"), bRetCode );
if ( bRetCode == 0 )
{
_tprintf( _T("The MAC Address is: %02x%02x%02x%02x%02x%02x\n"),
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 0;
}