Just use GetAdaptersInfo() defined in iphlpapi.h, Link to Iphlpapi.lib.
In the struct IP_ADAPTER_INFO you may get adaptor’s MAC, IPv4 addresses, gateways, and secondary WINS servers and so on. The Address contains the MAC, and IpAddressList contains the IP information.
DWORD GetAdaptersInfo(
PIP_ADAPTER_INFO pAdapterInfo,
PULONG pOutBufLen
);
void CgetAdaptorDlg::OnBnClickedButton() { m_AdaptorCombo.ResetContent();
PIP_ADAPTER_INFO pAdapterInfo = NULL; PIP_ADAPTER_INFO pAdapter = NULL; DWORD dwRetVal = 0;
ULONG ulOutBufLen = 0;
// allocate memory if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) { //free(pAdapterInfo); pAdapterInfo = (IP_ADAPTER_INFO *) malloc(ulOutBufLen); if (pAdapterInfo == NULL) { printf("Error allocating memory needed to call GetAdaptersinfo/n"); return; } }
if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
pAdapter = pAdapterInfo; while (pAdapter) { m_AdaptorCombo.AddString(pAdapter->IpAddressList.IpAddress.String);
pAdapter = pAdapter->Next; }
} else { //printf("GetAdaptersInfo failed with error: %d/n", dwRetVal);
} if (pAdapterInfo) free(pAdapterInfo);
return ; } |