【问题标题】:Reading NDIS miniport statistic value读取 NDIS 微型端口统计值
【发布时间】:2020-05-02 13:20:08
【问题描述】:

NDIS 6.0 微型端口驱动程序提供由函数 MiniportQueryInformation 提供的统计计数器。信息请求在NdisRequest 参数中传递。该实际查询由NdisRequest 的成员Oid 定义。

我想在申请过程中查询其中的一些信息,例如OID_802_3_RCV_OVERRUN 的值。微型端口驱动程序在内核进程的 NDIS 上下文中运行。通常只有协议驱动程序可以调用导致微型端口函数调用的函数。

IP Helper Functions API 包括函数 GetIfEntry 和 GetIFEntry2 以检索有关网络接口的信息。结果是一个 MIB_IF_ROW2 结构,其中包括发送和接收数据的计数器。但它只包括一个(累积的)InErrors 成员,而不是请求的 Oid 的计数器OID_802_3_RCV_OVERRUN

如何通过 NDIS 传递信息请求并从微型端口驱动程序获取所需信息?

【问题讨论】:

    标签: windows ndis windows-embedded-compact


    【解决方案1】:

    首先,Legacy的做法是先写协议驱动,通过Application IOCTL向协议驱动发出请求,内核通过NdisRequest查询OID,将结果传递给Application。但是,编写协议驱动程序将是一项艰巨的任务。

    其次,可以使用WMI接口查询OID。请参考以下链接。

    https://docs.microsoft.com/en-us/archive/blogs/ndis/mapping-from-ndis-oids-to-wmi-classes

    但是,即使使用这些方法,请记住,根据您的 LAN 适配器供应商,微型端口驱动程序可能不支持 OID,因此您不会获得所需的结果。

    【讨论】:

    • NDIS 驱动程序在 WMI 不可用的 WEC2013 中运行。所以很遗憾我不得不使用 NDISUIO。
    猜你喜欢
    • 2015-05-14
    • 2017-03-31
    • 2020-03-27
    • 2012-02-28
    • 2012-04-18
    • 2012-04-25
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    相关资源
    最近更新 更多