BOOL GetMacAddress(WCHAR address[])
{
IP_ADAPTER_INFO *pAdapterInfo;
IP_ADAPTER_INFO *pAdapter = NULL;
DWORD dwRetVal = 0;
ULONG ulOutBufLen;
pAdapterInfo=(IP_ADAPTER_INFO*)malloc(sizeof(IP_ADAPTER_INFO));
ulOutBufLen = sizeof(IP_ADAPTER_INFO);
if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO*) malloc(ulOutBufLen);
}
if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR)
{
pAdapter = pAdapterInfo;
WCHAR sz[20];
memset(sz, 0, 20*sizeof(WCHAR));
while (pAdapter)
{
if ( (0 == strcmp(pAdapter->AdapterName,"SDCSD30AG1")) || (0 == strcmp(pAdapter->AdapterName,"SDIO86861")))
{
swprintf (sz, L"%02x.%02x.%02x.%02x.%02x.%02x/0", pAdapter->Address[0], pAdapter->Address[1], pAdapter->Address[2], pAdapter->Address[3], pAdapter->Address[4], pAdapter->Address[5]);
//RETAILMSG(1,(TEXT("--sz--(%s)------/n"),sz));
break;
}
pAdapter = pAdapter->Next;
}
wcscpy(address,sz);
free(pAdapterInfo);
return TRUE;
}
wcscpy(address,TEXT(""));
free(pAdapterInfo);
return FALSE;
}
关键是对IP_ADAPTER_INFO理解和应用。