Ответ 1
Посмотрите http://www.codeproject.com/KB/IP/netcfg.aspx. Это гигантский пример того, что вы хотите сделать.
Как перечислить все сетевые интерфейсы, доступные на данный момент на компьютере (включая виртуальные, не связанные, loopback и т.д.)?
Мне нужно знать их IP4/6, Mask, Gateway, DNS, WINS и т.д.
Язык: С++, WinAPI
Система: Windows 2000 и выше (включая Win7)
Посмотрите http://www.codeproject.com/KB/IP/netcfg.aspx. Это гигантский пример того, что вы хотите сделать.
Похоже, вам нужна комбинация нескольких различных функций.
Чтобы получить список адаптеров с их IPv4-адресами/масками, связанными WINS-серверами и DNS-серверами, вы можете использовать GetAdaptersInfo
. Чтобы получить адреса IPv6, вы можете использовать GetAdaptersAddresses
.
В зависимости от того, что включено в ваш "и т.д.", вам также могут понадобиться GetIfTable
и GetIfEntry
. GetIfTable
получает список сетевых адаптеров. GetIfEntry
получает информацию о каждом из них. Они извлекают такие вещи, как объем данных, которые были переданы/извлечены по определенному интерфейсу. Там также есть GetIfTable2
/GetIfEntry2
, которые предназначены только для Vista и новее, которые получают дополнительную информацию.
Если память обслуживается, GetIfTable
/GetIfEntry
перечислит все интерфейсы в аппарате. GetAdaptersInfo
работает только с "настоящими" адаптерами.
Неправильно вы можете использовать getaddrinfo ("..localmachine")
для перечисления интерфейсов в Windows 2003 +.
http://msdn.microsoft.com/en-us/library/ms738520(v=vs.85).aspx
Windows 7 с пакетом обновления 1 (SP1) и Windows Server 2008 R2 с пакетом обновления 1 (SP1) добавляет поддержку для скрытия интерфейсов.