Note: disabled adapters will not be enumerated.
Source Code:
DWORD EnumNetworkAdapters() { IP_ADAPTER_INFO* pAdapterList = NULL; IP_ADAPTER_INFO* pAdapter = NULL; ULONG ulBufLen = 0; DWORD err; err = ::GetAdaptersInfo(pAdapterList, &ulBufLen); if (err == ERROR_BUFFER_OVERFLOW) { pAdapterList = (IP_ADAPTER_INFO*) ::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, ulBufLen); err = ::GetAdaptersInfo(pAdapterList, &ulBufLen); } else if (err != ERROR_SUCCESS) { return err; } if (pAdapterList == NULL) { return ERROR_BAD_ARGUMENTS; } pAdapter = pAdapterList; while (pAdapter != NULL) { cout << "-----------------------------------------------" << endl; cout << pAdapter->AdapterName << endl; cout << pAdapter->Description << endl; IP_ADDR_STRING *ipAddrString = &pAdapter->IpAddressList; while (ipAddrString != NULL) { cout << ipAddrString->IpAddress.String << endl; ipAddrString = ipAddrString->Next; } pAdapter = pAdapter->Next; } ::HeapFree(::GetProcessHeap(), 0, pAdapterList); return 0; } |