【问题标题】:Programmatically determine whether a network card is integrated or discrete on Windows以编程方式确定网卡在 Windows 上是集成的还是独立的
【发布时间】:2014-08-13 17:52:10
【问题描述】:

我知道我可以使用GetAdaptersAddresses 来检索机器上网络接口的信息。此外,我想确定哪些接口是指集成在主板上的网卡。该要求类似于此处讨论的要求:https://stackoverflow.com/a/3530362/2833126/。接受的答案是检查卡是否是 PCI 设备。我认为这不会起作用,因为我相信集成卡被报告为 PCI 设备(我现在无法实际测试这个,因为我现在无法访问 Windows 机器......至少它们出现在lspci 在 Linux 上的输出)。

此用例类似于上面链接的 SO 帖子中提到的用例:根据 MA​​C 地址生成唯一的系统 ID。我想使用集成卡的 MAC 地址,因为它连接到主板,对于我的问题,我希望系统 ID 与主板相对应。

【问题讨论】:

  • 如果有一种通用且可靠的方法来区分集成和离散,我会感到惊讶。
  • 嗯,它不一定需要可靠,因为使用 MAC 地址很容易出错。像 90% 这样的东西可能就足够了。不过,通用性是一个要求。这是针对非关键特性的,所以我不想编写数百行特定于供应商的特殊情况。
  • 只要确保您处理没有板载适配器的情况!

标签: c++ windows networking uniqueidentifier mac-address


【解决方案1】:

检查Win32_OnBoardDevice class
在PowerShell中你可以这样做:

PS C:\temp> gwmi Win32_OnBoardDevice|?{$_.devicetype -eq 5} |select -expand description
Broadcom 5754 NetXtreme Gigabit Controller

【讨论】:

  • 这看起来很有希望。您知道是否有任何 Win32_OnBoardDevice 字段可以与 IP_ADAPTER_ADDRESSES 中的字段匹配?看起来NameAdapterName 可能是唯一的可能性。
  • 嗯...不容易,我认为描述会与 Win32_NetworkAdapterConfiguration 匹配,但事实并非如此...
猜你喜欢
  • 1970-01-01
  • 2022-08-12
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 2011-05-04
  • 2014-07-09
相关资源
最近更新 更多