首页 > 解决方案 > 读取 NDIS 微型端口统计值

问题描述

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

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

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

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

标签: windowsndiswindows-embedded-compact

解决方案


首先,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,因此您不会获得所需的结果。


推荐阅读