c - 区分 VMware 网络适配器与物理网络适配器 - 或 - 检测虚拟网络适配器

标签 c windows networking vmware nic

我必须使用任何 Windows API 区分真实地址和虚拟机地址。 我正在使用 GetAdaptersAddresses API 来填充本地计算机的 IP 地址列表。除了与 VMware 网络适配器和其他地址(自动配置和隧道适配器地址)关联的地址之外,我只需要提取“真实”地址。我一直无法找到任何 API 或任何标志来区分这一点。有什么办法可以做到这一点?

PS:GetAdaptersAddresses 返回的 IP_ADAPTER_ADDRESSES 结构中的 IfType 标志无法帮助我区分VMware地址和真实地址。

最佳答案

mac 地址的开头(前 3 段)显示接口(interface)是否为虚拟接口(interface):

"00:05:69"; //vmware1
"00:0C:29"; //vmware2
"00:50:56"; //vmware3
"00:1C:42"; //parallels1
"00:03:FF"; //microsoft virtual pc
"00:0F:4B"; //virtual iron 4
"00:16:3E"; //red hat xen , oracle vm , xen source, novell xen
"08:00:27"; //virtualbox

编辑
更清楚地说,如果一个接口(interface)有一个 MAC address以任何上述给定的字符串开头,则它是虚拟的。

关于c - 区分 VMware 网络适配器与物理网络适配器 - 或 - 检测虚拟网络适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062594/

相关文章:

C int打印格式化问题

python - 启动外部程序而不对路径进行硬编码

java - 获取 Mac 中运行的驱动程序

android - 设备之间的Android套接字

c - 正确解析 C 中的命令行参数

c - 无法将元素插入链表

.net - P/Invoke 和非托管 DLL 状态

windows - Delphi XE2 将 Application.MainForm.Handle 分配给 DLL 中的 Application.Handle

java - 登录按钮在 Java 应用程序中没有可见效果

c - Wireshark 解剖器 : How to Identify Missing UDP Frames?