You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试Windows NDIS驱动?寻求日志与追踪查看指导

NDIS驱动调试:日志与追踪信息查看方案

一、WinDbg NDIS扩展命令深度使用

  • 先确认NDIS扩展加载正常:执行 !ndiskd.help,若提示命令不存在,更换与目标系统版本匹配的WinDbg(推荐WinDbg Preview)。
  • 关键追踪命令:
    • !ndiskd.minidriver <驱动地址> -verbose:查看目标微型驱动的详细状态、回调函数注册情况及活动队列,需先用!ndiskd.minidriver列出所有驱动获取地址。
    • !ndiskd.netadapter -pm -stats:查看网卡适配器的电源管理日志与流量统计,定位异常状态。
    • !ndiskd.packet -all:追踪系统中所有NDIS数据包的流转路径,排查丢包或处理异常问题。

二、开启NDIS内核调试日志

  1. 在目标机注册表中导航到 HKLM\SYSTEM\CurrentControlSet\Services\NDIS\Parameters。
  2. 添加两个DWORD值:
    • DebugLevel:设为0xFFFFFFFF(全量调试日志)
    • DebugBufferSize:设为0x400000(4MB缓存,防止日志溢出)
  3. 重启目标机或重启NDIS服务(net stop ndis && net start ndis)。
  4. 在WinDbg中执行 !ndiskd.debuglog 读取内核缓存中的NDIS调试日志,包含驱动加载、数据包处理、状态变更等核心信息。

三、ETW事件追踪(Windows 8+适用)

  • 启动ETW会话(目标机管理员CMD):
    tracelog -start NDISLog -guid #97FAA73A-AB72-4168-BC60-6DC1C0E4B924 -f ndis.etl -level 5 -flags 0xFFFF
    
  • 触发调试操作后停止会话:tracelog -stop NDISLog
  • 解析日志:
    • WinDbg中执行 !wmitrace.logdump ndis.etl 直接解析
    • 或用 tracerpt ndis.etl -o ndis.log 转换为文本格式查看

四、驱动代码中添加调试输出

  • 在驱动代码中使用 NDIS_PRINT_DEBUG_STRING 宏(需定义NDIS_DEBUG_LEVEL为NDIS_DEBUG_LEVEL_VERBOSE),或调用DbgPrintEx(DPFLTR_IHVNETWORK_ID, DPFLTR_INFO_LEVEL, "<日志内容>")。
  • WinDbg中执行 ed nt!Kd_DEFAULT_Mask 0x80 开启网络组件调试输出,再用!dbgprint查看所有内核打印信息。

内容的提问来源于stack exchange,提问作者Ziffusion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:17:32