void CTCPServerApp::GetMACAddresses(CStringArray &macAdresses) {
macAdresses.RemoveAll();
PIP_ADAPTER_ADDRESSES pAddresses;
pAddresses = (IP_ADAPTER_ADDRESSES*) new BYTE[sizeof(IP_ADAPTER_ADDRESSES)];
ULONG outBufLen = 0;
DWORD dwRetVal = 0;
if (GetAdaptersAddresses(0,
0,
NULL,
pAddresses,
&outBufLen) == ERROR_BUFFER_OVERFLOW) {
delete pAddresses;
pAddresses = (IP_ADAPTER_ADDRESSES*) new BYTE[outBufLen];
}
if ((dwRetVal = GetAdaptersAddresses(0,
0,
NULL,
pAddresses,
&outBufLen)) == NO_ERROR) {
while (pAddresses) {
CString macAdr;
for( int i = 0; i < pAddresses->PhysicalAddressLength; i++ ) {
CString tmp;
tmp.Format("%02x", pAddresses->PhysicalAddress[i]);
macAdr += tmp;
if( i < 5 ) {
macAdr += "-";
}
}
if( macAdr.GetLength() > 5 ) {
macAdresses.Add(macAdr);
}
pAddresses = pAddresses->Next;
}
delete pAddresses;
return;
}
else {
// Fehler
printf("Call to GetAdaptersAddresses failed.\n");
}
return;
}