NO_MORE_IRP_STACK_LOCATIONS蓝屏是驱动IRP栈溢出的结果态,主因是显卡/USB/存储驱动错误重用或提前释放IRP,非硬件故障;高频I/O场景(如浏览器视频)易暴露该缺陷。

0x0000004B(NO_MORE_IRP_STACK_LOCATIONS)不是独立蓝屏,而是驱动调用链断裂的“结果态”——它几乎总由上层驱动(尤其是显卡、USB或存储类)错误地重用或提前释放IRP导致,不是硬件故障信号。
为什么NO_MORE_IRP_STACK_LOCATIONS蓝屏总在浏览器/视频场景触发
这个错误本质是:某个驱动在处理IRP时,试图往已满的IO_STACK_LOCATION数组里再压一层(Windows内核默认最多32层)。而浏览器看视频会高频触发GPU加速、音频渲染、USB外设轮询、NVMe缓存刷新等多路I/O,极易暴露驱动栈深度管理缺陷。
- 常见诱因是显卡驱动(
dxgkrnl.sys或厂商nvlddmkm.sys/atikmdag.sys)在D3D11/DXGI资源释放路径中未正确校验IoGetNextIrpStackLocation返回值 - USB 3.x集线器驱动(
usbhub3.sys)在热插拔后未重置栈计数器,也会在后续IRP_MJ_POWER请求中越界 - 你看到的
ntkrnlmp.exe和win32kfull.sys只是被波及的“背锅模块”,真正问题在它们调用的下层驱动
优先排查IRP栈溢出的三个实操点
不用等蓝屏日志,直接从系统行为反推:
- 打开
perfmon /res,观察“PhysicalDisk\Current Disk Queue Length”是否持续>2——说明storport.sys或nvme.sys在反复重试IRP,可能已耗尽栈空间 - 运行
driverquery /v | findstr "Pending",检查是否有驱动状态为Pending且Start Mode为System——这类驱动常存在IRP未完成就返回的问题 - 禁用所有非必要USB设备(特别是带充电功能的Hub、Type-C扩展坞),再开Edge播放4K视频。若蓝屏消失,
usbhub3.sys或usbohci.sys就是元凶
win32kfull.sys报错时别急着更新显卡驱动
当蓝屏信息显示win32kfull.sys + 0x4B,90%的情况是桌面窗口管理器(win32kfull)在转发IRP给显卡驱动时发现栈已满,它只是报错者而非制造者。盲目更新显卡驱动可能让问题更隐蔽:
- NVIDIA 536.99+版本修复了
IRP栈深度计算缺陷,但如果你用的是OEM定制版(如Dell XPS预装驱动),需手动替换为官网标准版 - Intel Arc显卡用户注意:
igdkmd64.sys在Build 22621.2715前存在IoCallDriver嵌套过深问题,必须升级到22621.3007+ - AMD用户请确认
atikmdag.sys版本号末尾不是0x1F(这是已知栈溢出标记位),可通过sigcheck -m atikmdag.sys验证
真正难缠的是那些不写进蓝屏信息的“隐形栈耗尽者”:比如某款雷电4扩展坞固件会让thunderbolt.sys在休眠唤醒后漏掉一次IoCompleteRequest,导致后续所有IRP都多压一层栈——这种问题只能靠!irp和!drvobj在dump里逐帧比对,普通用户建议直接换坞。


















