事件时间:2026 年 8 月 2 日 01:16 系统:Windows 11 24H2(内核版本 26100,8 逻辑处理器) 故障设备:Realtek PCIe GbE Family Controller(RTL8168,联想平台) 结论:系统连续运行 3 天 2 小时后,因旧版 Realtek 网卡驱动(2020 版)在 Windows 11 24H2 上触发空指针崩溃,非硬件故障。
一、事件概况
2026 年 8 月 2 日凌晨 01:16,系统发生蓝屏(BSOD)。事件日志显示:
| 事件 ID | 提供程序 | 时间 | 含义 |
|---|---|---|---|
| 1001 | WER-SystemErrorReporting | 01:16:32 | 检测错误 0x000000D1,转储已保存 |
| 41 | Kernel-Power | 01:16:20 | 系统未正常关机即重启 |
| 6008 | EventLog | 01:16:35 | 上一次关闭属于意外关机 |
系统于 01:16:16 重启恢复,崩溃转储保存在 C:\WINDOWS\Minidump\080226-16250-01.dmp。
二、蓝屏诊断
1. 事件日志定位
Get-WinEvent -FilterHashtable @{LogName="System"; ID=1001,41,6008; StartTime=(Get-Date).AddDays(-1)}
关键输出:
检测错误: 0x000000d1 (0x0000000000000008, 0x0000000000000002,
0x0000000000000000, 0xfffff807175a4068)
2. 崩溃转储分析(WinDbg / cdb)
使用 Windows SDK 自带的 cdb 对 dump 进行 !analyze -v 分析:
cdb.exe -z "C:\WINDOWS\Minidump\080226-16250-01.dmp" -c "!analyze -v; q"
3. 分析结果
Bug Check:DRIVER_IRQL_NOT_LESS_OR_EQUAL (0xD1)
| 参数 | 值 | 含义 |
|---|---|---|
| Arg1 | 0x0000000000000008 | 被访问的内存地址(NULL+8,明显的空指针偏移) |
| Arg2 | 0x0000000000000002 | IRQL = DISPATCH_LEVEL(过高) |
| Arg3 | 0x0000000000000000 | 读操作 |
| Arg4 | 0xfffff807175a4068 | 出错指令地址 |
故障驱动:rt640x64.sys(崩溃点 rt640x64+0x26a28)
WARNING: Unable to verify timestamp for rt640x64.sys
STACK_TEXT:
ffffe48c`a1a676e0 ffffa58f`2c203000 ... rt640x64+0x26a28
SYMBOL_NAME: NETIO!StreamInvokeCalloutAndNormalizeAction+5c
MODULE_NAME: NETIO
FAILURE_BUCKET_ID: AV_NETIO!StreamInvokeCalloutAndNormalizeAction
驱动版本:10.042.0526.2020(2020 年 5 月,NDIS 6.40 架构,长达 6 年未更新)
三、核心根因
旧版 Realtek NDIS 网卡驱动在 Windows 11 24H2(内核 26100)上的网络栈兼容性缺陷。
具体机理:
- 2020 年的驱动在设计时未考虑 Windows 11 24H2 对网络栈数据结构、安全检查及高 IRQL 内存管理的改动;
- 当 WFP 引擎回调通知驱动处理现代网络流时,旧驱动传入/解析了错误的内存指针;
- 在 DISPATCH_LEVEL(IRQL 2)这一本不该触碰分页内存的高级别上,对空指针偏移地址
0x8进行读操作; - 直接触发内核保护性蓝屏(BSOD)。
排除项:非硬件故障、非内存故障、非过热、非电源问题——是纯粹的软硬件接口不兼容。
四、背景知识:WFP 与崩溃机制
什么是 WFP(Windows Filtering Platform)?
Windows 过滤平台,从 Windows Vista 引入,用于取代老旧的 TDI 和 NDIS 过滤钩子,是现代防火墙、网络监控、流量劫持、VPN、广告拦截及杀毒软件网络防护模块的核心技术。
WFP 体系结构
┌───────────────────────┐
│ BFE(基础过滤引擎) │ 用户态服务
│ (Base Filtering Engine)│ 接收规则配置并下发
└───────────┬───────────┘
│ 规则同步
┌───────────▼───────────┐
│ KMFE(内核过滤引擎) │ 内核态 netio.sys
│ (Kernel-Mode Filtering │ 数据包分发与匹配
│ Engine) │
└───────────┬───────────┘
│ StreamInvokeCalloutAndNormalizeAction ← 崩溃发生处
┌───────────▼───────────┐
│ Callout Drivers │ AdGuard / 火绒注册的流标注回调
│ (第三方标注驱动) │
└───────────┬───────────┘
│
┌───────────▼───────────┐
│ NDIS 网卡 Miniport │ 旧 rt640x64 / 新 rt68cx21
│ (物理网卡驱动) │
└───────────────────────┘
崩溃机理还原
- 本机安装了 AdGuard 与火绒安全,两者都在 WFP 的 Stream(流)层注册了标注回调,用于 DPI 深度包检测;
- 数据包进来时,WFP 引擎走
StreamInvokeCalloutAndNormalizeAction流分发路径,与底层网卡驱动的收包/处理代码交互; - 旧版 Realtek 驱动在该路径上解引用了空指针(NULL+8)于 DISPATCH_LEVEL,触发 0xD1;
- WFP 引擎本身没有缺陷,第三方标注驱动只是"调用方",病根在旧网卡驱动的数据处理代码。
五、修复方案:驱动升级
版本选择
针对 Windows 11 24H2,选择 Realtek 官方 NetAdapterCx 架构新版驱动:
| 项目 | 旧驱动(崩溃源) | 新驱动(修复后) |
|---|---|---|
| 文件名 | rt640x64.sys |
rt68cx21x64.sys |
| 架构 | NDIS 6.40(旧式) | NetAdapterCx 2.2(现代类扩展模型) |
| 版本 | 10.042.0526.2020 | 1168.030.0508.2026 |
| 发布时间 | 2020-05 | 2026-07 |
| 节能特性 | 支持电源节能 | 选择 Not Support Power Saving 版本 |
为什么 NetAdapterCx 更安全
- NDIS 数据包/缓冲区生命周期、队列管理、IRQL 处理大多由微软
netadaptercx.sys类扩展接管; - 厂商自研的易错收包代码被框架重写,从根上消除空指针类缺陷;
- 2026 年针对 26100 内核重新编译,结构体大小与 IRQL 期望和系统完全匹配。
干净安装步骤
- Realtek 官网下载对应版本;
- 设备管理器 → 网络适配器 → 卸载 Realtek 网卡(勾选"尝试删除此设备的驱动程序");
- 断网(防止 Windows Update 自动装回旧版);
- 运行安装程序 → 重启。
六、网卡节能配置加固
为避免低功耗 ↔ 全速切换的竞争窗口,将网卡高级设置中的节能相关选项全部关闭:
Set-NetAdapterAdvancedProperty -Name "以太网" -RegistryKeyword "EnableGreenEthernet" -RegistryValue 0
Set-NetAdapterAdvancedProperty -Name "以太网" -RegistryKeyword "GigaLite" -RegistryValue 0
修改后的节能配置(全部关闭)
| 配置项 | 说明 |
|---|---|
| 节能乙太网路 (*EEE) | 关闭 |
| Advanced EEE | 关闭 |
| 环保节能 (Green Ethernet) | 关闭 ← 本次修改 |
| Gigabit Lite | 关闭 ← 本次修改 |
| Power Saving Mode | 关闭 |
代价仅是几毫瓦电量(台式机无影响),换来网卡始终全速稳定工作。
网卡支持的其他配置一览
- 性能类:接收/传送缓冲区(512/128)、中断调整、流控制、巨型帧、LSO/RSC 减负;
- 硬件减负:IPv4/TCP/UDP 硬件校验和、ARP/NS 减负;
- 唤醒类:魔术封包唤醒、样式比对唤醒、关机网络唤醒;
- 其他:连接速度双工模式、VLAN 优先级、自定义 MAC 地址。
七、重启后的验证
重启后通过多重手段确认修复持久生效:
| 验证项 | 命令 | 结果 |
|---|---|---|
| 设备绑定 | Get-ItemProperty HKLM:\...\Enum\PCI\... |
Service = rt68cx21 |
| 内核加载 | driverquery /v |
rt68cx21 = Running |
| 旧驱动 | driverquery /v |
rt640x64 = Stopped |
| 版本 | Get-NetAdapter |
1168.30.20.508 |
| 节能配置 | Get-NetAdapterAdvancedProperty |
四项全部关闭 |
| 新增崩溃 | Get-ChildItem C:\Windows\Minidump |
无新增 dump |
八、第三方 WFP 驱动排查
检测到系统中有 3 个第三方网络/WFP 驱动同时运行:
| 驱动 | 版本 | 厂商 | 作用 |
|---|---|---|---|
adgnetworkwfpdrv.sys |
8.0.86.0 | AdGuard | WFP 流标注驱动(广告过滤) |
hrwfpdrv.sys |
6.0.0.0 | 火绒安全 | WFP 流标注驱动(网络安全) |
hrndis6.sys |
6.0.0.1 | 火绒安全 | NDIS 驱动 |
npcap.sys |
1.88 | Nmap | 抓包过滤器 |
这些正是此前崩溃路径中 StreamInvokeCalloutAndNormalizeAction 的"调用方"。它们自身版本均为 2026 年较新版,配合健康的底层网卡驱动可正常共存。
九、复发风险评估
该具体崩溃:基本不会再出现
- 崩溃代码(
rt640x64+0x26a28)已随旧驱动卸载,当前内核不再加载这段代码,空指针路径物理上不存在; - 节能触发条件已全部关闭,低功耗↔全速切换的竞争窗口被消除;
- 更新后持续观察无新增 dump。
残余风险(低但非零)
| 风险 | 说明 | 对策 |
|---|---|---|
| AdGuard / 火绒 自身 bug | 仍活跃调用 WFP Stream 路径 | 保持更新;若崩溃会定位到其自身驱动 |
| Npcap | 旧式 NDIS 过滤器,不在崩溃路径上 | 保持更新 |
| Windows Update 回绑 | 新 INF 已选中,旧服务已禁用 | 基本无可能 |
建议:观察 1~2 周;保持 AdGuard、火绒、Npcap 更新到最新。
十、旧驱动彻底清理
1. 删除 DriverStore 中的旧驱动包
系统中存在两个历史遗留包:
rt640x64.inf_amd64_9711f56631838840(2020 崩溃版,注册名oem99.inf)rt640x64.inf_amd64_cbf4e23981c3c8a3(2015 版孤儿包)
删除注册包:
pnputil /delete-driver oem99.inf /uninstall /force
# 输出:Driver package uninstalled. / Driver package deleted successfully.
该命令还自动把残留的
rt640x64服务改为 Disabled。
删除孤儿包(不在 pnputil 列表中,需手动):
takeown /F <path> /R /D Y
icacls <path> /grant administrators:F /T /Q
Remove-Item <path> -Recurse -Force
2. 删除服务注册项与文件副本
sc.exe delete rt640x64
Remove-Item "C:\Windows\System32\drivers\rt640x64.sys" -Force
3. 最终清理验证
| 检查项 | 结果 |
|---|---|
rt640x64.sys 文件 |
已删除 |
| DriverStore 旧包 | 0 个 |
| 服务注册项 | 已删除 |
| pnputil 驱动列表 | 0 个 |
| 内核模块 | 仅剩 rt68cx21(新驱动) |
| 网卡状态 | Up,版本 1168.30.20.508 |
十一、总结
本次蓝屏的完整排障链条:
蓝屏 (0xD1)
→ 事件日志 + Minidump 转储
→ WinDbg 分析 → 定位 rt640x64.sys(2020 旧版 Realtek 驱动)
→ 崩溃路径 StreamInvokeCalloutAndNormalizeAction(WFP 流层)
→ 根因:旧 NDIS 驱动与 Win11 24H2 网络栈不兼容,空指针越界
→ 修复:升级 NetAdapterCx 新驱动 + 关闭全部节能选项
→ 验证:重启后新驱动 Running、配置持久生效、无新增崩溃
→ 加固:排查第三方 WFP 驱动(AdGuard/火绒),评估复发风险
→ 收尾:彻底清理旧驱动文件/包/服务,系统仅保留新驱动
关键经验:
- WinDbg 是蓝屏分析的黄金标准——
!analyze -v能直接给出故障驱动与故障桶; - "空指针偏移"(地址 0x8 等极低地址)+ 高 IRQL = 驱动 bug,几乎可以排除硬件因素;
- 旧驱动在重大系统版本升级后是高风险源,尤其是网卡/显卡等常驻内核的驱动;
- WFP 流标注路径是多个第三方安全软件的"共用车库",崩溃点不代表元凶是它,要沿调用链找真正出错的内核代码;
- 现代 NetAdapterCx 架构把易错的包处理逻辑交给框架,从设计上规避了这类空指针缺陷;
pnputil /delete-driver是清理旧驱动的标准工具,配合sc.exe delete可做到彻底移除。
本文档由排障过程实录整理而成,所有命令均可复现验证。
Windows 11 蓝屏(0x000000D1)排障实录:Realtek 网卡驱动兼容性修复全流程
https://kaneniu.com/archives/1785608158527.html
评论