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