Я ищу способ точно определить, является ли интерфейс физическим портом Ethernet 802.3 на компьютере в Windows.
Используя ipconfig / all, я могу перечислить все интерфейсы, и когда я делаю это на моем компьютере, здесь могут быть перечислены несколько записей, включая VPN, Bluetooth, Wifi и физический интерфейс Ethernet.
Я ищу что-то вроде "isPhysical (interface)".
(Можно использовать несколько физических сетевых портов, я просто хочу знать, физический это порт или нет).
ОБНОВЛЕНИЕ:
Джей и Крис, спасибо!
(Недостаточно места в комментариях, поэтому я опубликую здесь)
В настоящее время я рассматриваю использование WMI Win32_NetworkAdapter.
Тем не менее, он показывает 4 интерфейса с AdapterType = "Ethernet 802.3".
У меня только 1 физический порт на моем компьютере, остальные имеют имя «Драйвер сетевых служб виртуальной машины». (Я предполагаю, что они установлены моей компанией по какой-то гнусной причине)
Я нашел нужный мне атрибут в интерфейсе, но он не доступен в winXP !!!
PhysicalAdapter Тип данных: логическое значение
Тип доступа: только для чтения
Указывает, является ли адаптер
физический или логический адаптер. Если
Правда адаптер физический. Windows
Server 2003, Windows XP, Windows 2000,
и Windows NT 4.0: это свойство
нет в наличии.
Есть ли способ определить, является ли это физическим портом, кроме выполнения текстового фильтра для слова "Виртуальный" в имени?
ОБНОВЛЕНИЕ 12/08
Похоже, что виртуальные интерфейсы добавляются, когда у вас установлена виртуальная машина.
Вот некоторые подробности о виртуальном адаптере:
http://blogs.msdn.com/virtual_pc_guy/archive/2005/04/01/404816.aspx
Найдена проблема, из-за которой, если у пользователя нет прав администратора, интерфейс WMI не возвращает необходимые данные. Итак, теперь посмотрим на метод GetAdapterInfo. Однако, похоже, что к описанию фактического адаптера добавлен «драйвер служб виртуальной машины», что делает проверку «виртуальной» текста недействительной.
И структура, возвращаемая GetAdapterInfo:
http://msdn.microsoft.com/en-us/library/aa366062(VS.85).aspx