windows - 读取 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 传递信息请求并从微型端口驱动程序获取所需信息?
解决方案
首先,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,因此您不会获得所需的结果。
推荐阅读
- distributed-computing - 协调器失败时的两阶段提交阻塞
- node.js - TypeError:无法读取未定义 Angular SSR 的属性“indexOf”
- java - 如何在 Intellij 中显示分支覆盖率?
- azure - 预测期间的 Azure 表单识别器一般错误
- python - 从 python 中的嵌套 URL 中抓取和解析表
- php - 为什么 apache 会像文件夹或虚拟 url 一样获取文件 php?
- python - 限制一定数量的请求的scrapy蜘蛛
- flutter - 带有 StreamBuilder 错误的 Flutter AlertDialog
- python - 如何使用python在我的数据中获取一定范围的数字
- azure-devops - Azure DevOps - 测试运行管理,恢复运行结果