Chris,
Here you have a working example.
In order to compile it you need to copy this mprapi.h to c:\vce\include\arm\mprapi.h:
http://www.mediafire.com/?sharekey=f67b ... 6e282a0ee8
Also, you have to link this vce library:
echo %vcdir%\lib\arm\iphlpapi.lib >> msvc.tmp
Test.prg
<div class="xpp" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"> </li><li style="" class="li2">#include "FWCE.ch"</li><li style="" class="li1"> </li><li style="" class="li2">function Main()</li><li style="" class="li1"> </li><li style="" class="li2"> local aInfo := GetNetCardID()</li><li style="" class="li1"> </li><li style="" class="li2"> if ValType( aInfo ) == "C"</li><li style="" class="li1"> MsgInfo( aInfo )</li><li style="" class="li2"> else</li><li style="" class="li1"> MsgInfo( aInfo[ 1 ] )</li><li style="" class="li2"> endif </li><li style="" class="li1"> </li><li style="" class="li2">return nil</li><li style="" class="li1"> </li><li style="" class="li2">// FiveTech Software (c) 2009</li><li style="" class="li1"> </li><li style="" class="li2">#pragma BEGINDUMP</li><li style="" class="li1"> </li><li style="" class="li2">#include <Windows.h></li><li style="" class="li1">#include <iphlpapi.h></li><li style="" class="li2"> </li><li style="" class="li1">#include <hbapi.h></li><li style="" class="li2">#include <hbapiitm.h></li><li style="" class="li1"> </li><li style="" class="li2">char * WideToAnsi( WCHAR * cWide );</li><li style="" class="li1"> </li><li style="" class="li2">static PIP_ADAPTER_INFO pAdapterInfo = NULL; // Contains pointer to</li><li style="" class="li1"> // current adapter info</li><li style="" class="li2">static void GetMACaddress( void )</li><li style="" class="li1">{</li><li style="" class="li2"> IP_ADAPTER_INFO AdapterInfo[ 16 ]; // Allocate information</li><li style="" class="li1"> // for up to 16 NICs</li><li style="" class="li2"> DWORD dwBufLen = sizeof( AdapterInfo ); // Save memory size of buffer</li><li style="" class="li1"> </li><li style="" class="li2"> DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo</li><li style="" class="li1"> AdapterInfo, // [out] buffer to receive data</li><li style="" class="li2"> &dwBufLen); // [in] size of receive data buffer</li><li style="" class="li1"> WCHAR wText[ 40 ];</li><li style="" class="li2"> char * szResult;</li><li style="" class="li1"> PHB_ITEM pText = hb_itemNew( NULL );</li><li style="" class="li2"> </li><li style="" class="li1"> pAdapterInfo = AdapterInfo;</li><li style="" class="li2"> </li><li style="" class="li1"> do </li><li style="" class="li2"> {</li><li style="" class="li1"> wsprintf( ( void * ) wText, L"%02X-%02X-%02X-%02X-%02X-%02X",</li><li style="" class="li2"> ( unsigned char * ) pAdapterInfo->Address[ 0 ],</li><li style="" class="li1"> ( unsigned char * ) pAdapterInfo->Address[ 1 ],</li><li style="" class="li2"> ( unsigned char * ) pAdapterInfo->Address[ 2 ],</li><li style="" class="li1"> ( unsigned char * ) pAdapterInfo->Address[ 3 ],</li><li style="" class="li2"> ( unsigned char * ) pAdapterInfo->Address[ 4 ],</li><li style="" class="li1"> ( unsigned char * ) pAdapterInfo->Address[ 5 ] );</li><li style="" class="li2"> </li><li style="" class="li1"> szResult = WideToAnsi( ( WCHAR * ) wText ); </li><li style="" class="li2"> hb_itemPutCL( pText, szResult, strlen( szResult ) );</li><li style="" class="li1"> hb_xfree( szResult );</li><li style="" class="li2"> hb_arrayAdd( hb_param( -1, HB_IT_ANY ), pText ); </li><li style="" class="li1"> </li><li style="" class="li2"> if( pAdapterInfo->Next ) </li><li style="" class="li1"> pAdapterInfo = pAdapterInfo->Next; // Progress through</li><li style="" class="li2"> else // linked list</li><li style="" class="li1"> pAdapterInfo = NULL;</li><li style="" class="li2"> </li><li style="" class="li1"> } while( pAdapterInfo ); // Terminate if last adapter</li><li style="" class="li2">}</li><li style="" class="li1"> </li><li style="" class="li2">HB_FUNC( GETNETCARDID ) // --> nMac netcard ID number</li><li style="" class="li1">{</li><li style="" class="li2"> hb_reta( 0 );</li><li style="" class="li1"> GetMACaddress();</li><li style="" class="li2"> </li><li style="" class="li1"> if( hb_arrayLen( hb_param( -1, HB_IT_ANY ) ) == 1 )</li><li style="" class="li2"> hb_retc( hb_parc( -1, 1 ) );</li><li style="" class="li1">}</li><li style="" class="li2"> </li><li style="" class="li1">#pragma ENDDUMP</li><li style="" class="li2"> </li></ol></div>