【问题标题】:How can I programmatically detect a Window's network adapter's duplex state?如何以编程方式检测 Window 的网络适配器的双工状态?
【发布时间】:2009-09-28 21:03:40
【问题描述】:

我正在使用 WMI 来检测有关网络适配器状态的许多项目。我需要了解的内容包括 (a) 速度和 (b) 双工。

我已经能够使用 WMI 和以下 Python 代码检测网络适配器的速度:

from pycom.client import wmi

dev_name = r"\\DEVICE\\{287EB4BB-5C2A-4108-B377-15E1D0B0E760}"
query1 = """
SELECT * 
FROM  MSNdis_EnumerateAdapter
WHERE DeviceName = '%s'""" % dev_name


wmi_ndis = wmi.WMI("root\\WMI")
results = wmi_ndis.ExecQuery(query1)
instance_name = results[0].InstanceName

del results

query2="""
SELECT * 
FROM MSNdis_LinkSpeed
WHERE InstanceName='%s'""" % instance_name
results = wmi_ndis.ExecQuery(query2)
linkspeed = results[0].NdisLinkSpeed

del results

print instance_name, linkspeed

del instance_name
del linkspeed
del wmi_ndis

我想要的数据似乎有一个完美的类:MSNDis_LinkParameters。但是,此表似乎没有填充。 Win32_NetworkAdapter 中也有值,但它们也没有填充。

我很乐意使用原生 C API 或 WMI,但我不能进行屏幕抓取,因为应用程序需要使用任意语言。谢谢!

【问题讨论】:

    标签: windows network-programming wmi detection


    【解决方案1】:

    显然,这里的根本问题是 WMI 提供程序的实现是由 NIC 供应商处理的,而不是由操作系统处理的——所以一些 NIC 可能支持某些设置,而(正如您所发现的)其他不支持。

    有关链接速度,请查看this 了解一些可能适用于大多数 NIC 的 WMI 脚本。

    对于双工,我认为你不走运,至少根据topic。查看该线程中的最后一篇文章 - 在某些情况下如何绕过限制似乎非常具体,但不适用于所有 NIC。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多