How to enumerate all network interfaces currently available on the computer (including virtual, non-connected, loopback etc)?
I need to know their IP4/6, Mask, Gateway, DNS, WINS etc
Language: C++, WinAPI
System: Windows 2000 and higher (including Win7)
Have a look at http://www.codeproject.com/KB/IP/netcfg.aspx. It's a giant example of what you want to do.
It sounds like you want a combination of a few different functions.
To get a list of adapters with their IPv4 addresses/masks, associated WINS servers and DNS servers, you can use GetAdaptersInfo
. To get IPv6 addresses, you can use GetAdaptersAddresses
.
Depending on what is included in your "etc." you might also want GetIfTable
and GetIfEntry
. GetIfTable
gets a list of network adapters. GetIfEntry
gets you information about each. These retrieve things like the amount of data that's been transmitted/retrieved over a particular interface. There's also a GetIfTable2
/GetIfEntry2
that are only for Vista and newer that get more information.
If memory serves, GetIfTable
/GetIfEntry
list all the interfaces in the machine. GetAdaptersInfo
only works with the "real" adapters.
Perversely you can use getaddrinfo ("..localmachine")
to enumerate interfaces on Windows 2003+.
http://msdn.microsoft.com/en-us/library/ms738520(v=vs.85).aspx
Windows 7 with Service Pack 1 (SP1) and Windows Server 2008 R2 with Service Pack 1 (SP1) add support to hide interfaces.
http://support.microsoft.com/kb/2386184
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With