CString GetMacAddress(LPCTSTR szIPAddress)
{
CString strResult;
HRESULT hr = S_OK;
IPAddr ipAddr = inet_addr(szIPAddress);
ULONG pulMac[2];
memset(pulMac, 0xff, sizeof(pulMac));
ULONG ulLen = 6;
hr = ::SendARP(ipAddr, 0, pulMac, &ulLen);
if (FAILED(hr))
{
return CString();
}
// TRACE("Return %08x, length %8d\n", hr, ulLen);
size_t i, j;
char* szMac = new char[ulLen * 3];
PBYTE pbHexMac = (PBYTE)pulMac;
// Convert the binary MAC address into human-readable
for (i = 0, j = 0; i < ulLen - 1; ++i)
{
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}
sprintf (szMac + j, "%02X", pbHexMac[i]);
// TRACE ("MAC address %s\n", szMac);
strResult = szMac;
delete [] szMac;
return strResult;
}