有一个称为if_nametoindex()的函数,可将接口名称转换为接口索引。此功能似乎可在Linux和Windows上使用。在Linux上,我想这些接口名称可能看起来像“eth0”或“wlan0”。windows“界面名称”是什么样的?
我的问题是:什么是Win32接口名称的样子?是否有任何呼叫让我查询可用的接口名称?
有一个称为if_nametoindex()的函数,可将接口名称转换为接口索引。此功能似乎可在Linux和Windows上使用。在Linux上,我想这些接口名称可能看起来像“eth0”或“wlan0”。windows“界面名称”是什么样的?
我的问题是:什么是Win32接口名称的样子?是否有任何呼叫让我查询可用的接口名称?
还有if_indextoname
。我已经添加了下面的输出。这种风格的名称(例如loopback_0
)不是的 Win32接口名称。我想这些名字只存在与rfc2553兼容。 Win32实际上使用接口名称,如\DEVICE\TCPIP_{846EE342-7039-11DE-9D20-806E6F6E6963}
。
要枚举所有需要使用GetIfTable
和朋友的接口。不支持if_nameindex
。
loopback_0
tunnel_0
tunnel_2
tunnel_3
ppp_0
ethernet_0
ethernet_1
ethernet_4
ppp_1
wireless_0
ethernet_9
tunnel_4
tunnel_1
tunnel_7
tunnel_8
wireless_5
tunnel_5
tunnel_9
tunnel_10
tunnel_6
wireless_1
wireless_2
ethernet_2
ethernet_3
ethernet_5
ethernet_6
ethernet_7
wireless_3
wireless_4
wireless_6
wireless_7
wireless_8
它们看起来像\Device\NPF_{506B4345-1FC0-43F4-BFCF-4FFAD7739AFF}
。我不知道是否有更直接的方式来获取接口列表,但我从wireshark中得到了这个接口,它使用winpcap。