- 识别所涉及的驱动程序(nvlddmkm.sys、igdkmd64.sys、atikmdag.sys)并检查 TDR 事件。
- 如果您使用专业应用程序,请优先安装干净的驱动程序并尝试 Studio/stable 版本。
- 控制热量和功率;防止在高负载下进行 iGPU/dGPU 切换。
- 使用 SFC/Startup Repair,并且仅在适当的情况下仔细调整 TdrDelay。
当你的计算机在执行任务时崩溃,并出现可怕的蓝屏 VIDEO_TDR_FAILURE,你很可能会认为所有东西都突然坏了;实际上,系统在崩溃后尝试恢复 GPU,但失败了。此停止代码 它与图形驱动程序以及超时、检测和恢复 (TDR) 机制密切相关。,因此了解其工作原理是解决问题的一半。
下文将提供一份完整的指南,将官方技术说明与实际操作步骤和技巧相结合。目标是让您能够 诊断、纠正和预防此错误 无论您是高级 WinDbg 用户还是更喜欢 Windows 的简单步骤。
VIDEO_TDR_FAILURE (0x00000116) 是什么以及为什么会出现?
VIDEO_TDR_FAILURE 错误对应于 错误检测 0x00000116 并表示 Windows 尝试在超时后重置视频驱动程序和 GPU,但未成功。Windows 图形子系统使用 TDR 监控 GPU:如果 GPU 卡住且无响应,它会尝试重新启动驱动程序以恢复桌面。
该TDR机制有一个大约2秒的默认计时器:如果图形任务没有及时完成或驱动程序重启未完成,则会触发错误检查。
恢复过程成功后,您将看到消息“显示驱动程序停止响应并已恢复”。 当无法恢复时,系统停止执行并显示蓝屏,并显示VIDEO_TDR_FAILURE.
错误检查参数及其解释方法
除了 0x116 代码之外,蓝屏和内存转储还包括四个参数,有助于调试 VIDEO_TDR_FAILURE 错误的确切来源。 了解每个参数的含义有助于诊断并加快解决问题。:
| 参数 | 描述 |
|---|---|
| 1 | 指向内部 TDR 恢复上下文 (TDR_RECOVERY_CONTEXT) 的指针(如果存在)。 |
| 2 | 负责的驱动程序模块内的地址(用于识别所涉及的驱动程序)。 |
| 3 | 上次失败操作的 NTSTATUS 代码(如果可用)。 |
| 4 | 上下文相关的内部数据,在特定场景下可用。 |
在实际跟踪中,通常会涉及图形驱动程序的 .sys 文件:例如, nvlddmkm.sys(NVIDIA)、igdkmd64.sys(英特尔)或 atikmdag.sys/atikmpag.sys(AMD/ATI)。 这个线索是关键:它指向导致崩溃的提供程序和驱动程序路径。.
发生原因:现实世界中的典型原因
最常见的情况是,GPU 在高负载(游戏、CAD、解码或渲染)下长时间处于忙碌状态,无法及时响应。因此, 最常见的诱因是:
- 过时或有故障的驱动程序:
- 集成 GPU 和专用 GPU 之间的冲突。
- 过热
除了软件之外,硬件在 VIDEO_TDR_FAILURE 错误中也起着一定的作用:内存模块定时过长、主板超频、电源/功率不足、VRAM/GPU 性能下降或小型笔记本电脑的散热不良。 如果设备运行时温度或功率非常低,TDR 会更早、更频繁地跳动。.
还有环境因素: 太多后台进程争夺资源, 最近的更新安装不正确或图形软件包(DirectX、OpenGL、Vulkan)已过期。后台负载高且图形组件未对齐的系统极易出现此错误检查。

使用 WinDbg 和日志进行诊断:如何识别罪魁祸首
如果你处理内存转储(小型转储), WinDbg的 将允许您确认负责的驱动程序和 VIDEO_TDR_FAILURE 错误的直接原因。 头命令是 !analyze -v,它生成错误检查摘要、涉及的模块和最新的 NTSTATUS.
kd> !analyze -v
VIDEO_TDR_FAILURE (116)
Attempt to reset the display driver and recover from timeout failed.
Arguments:
Arg1: <puntero TDR_RECOVERY_CONTEXT>
Arg2: <dirección en el módulo responsable>
Arg3: <código NTSTATUS último>
Arg4: <datos de contexto>
从参数 2 开始,您可以使用 lmvm 列出模块并检查时间戳、路径和大小。 如果出现 nvlddmkm.sys 或等效文件,则您已经有主要嫌疑人了。.
kd> lmvm nvlddmkm
start end module name
... nvlddmkm.sys
Image path: \SystemRoot\system32\DRIVERS\nvlddmkm.sys
Timestamp: <fecha>
使用参数 1(当存在时)可以检查 TDR_RECOVERY_CONTEXT 并查看导致适配器重启的超时原因。 这有助于区分简单的管道挂起和重复的重置失败。.
kd> dt dxgkrnl!_TDR_RECOVERY_CONTEXT <puntero>
+0x010 TimeoutReason : TdrEngineTimeoutPromotedToAdapterReset
...
最后,带有 k/kb/kp 的堆栈跟踪显示代码路径最终以 KeBugCheckEx 结束,其中 dxgkrnl 和 dxgmms1 函数是 TDR 流程的典型特征。 TdrResetFromTimeout 的“干净”堆栈确认这是一个真正的 TDR,而不是一般的内核问题.
kd> k
# Child-SP RetAddr Call Site
00 ... nt!KeBugCheckEx
01 ... dxgkrnl!TdrBugcheckOnTimeout
02 ... dxgkrnl!ADAPTER_RENDER::Reset
03 ... dxgkrnl!DXGADAPTER::Reset
04 ... dxgkrnl!TdrResetFromTimeout
05 ... dxgmms1!VidSchiRecoverFromTDR
...
解决步骤:从基础到高级
在打开注册表编辑器或运行调试器之前,请关注具有最佳努力/影响比的指标。 从驱动程序开始,然后继续清理/重新安装,如果仍然如此,则进行高级调整和硬件验证。.
1)正确更新显卡驱动和芯片组
显卡驱动程序过时或存在问题是导致 TDR 的最常见原因。前往“设备管理器”,展开“显示适配器”,右键单击您的 GPU,然后选择“更新驱动程序”。 更好的是:从 NVIDIA/Intel/AMD 官方网站下载适合您型号的推荐版本。.
如果您将 NVIDIA 与专业软件(CAD、编辑、3D)一起使用,请尝试使用 Studio 驱动程序而不是 Game Ready 驱动程序。 在配备 Intel iGPU + NVIDIA dGPU 的笔记本电脑上,还需安装计算机制造商提供的最新 Intel 软件包和芯片组.
2)干净驱动程序重新安装(DDU)
如果“非处方”更新不够用,最好清理之前驱动程序的残留。显示驱动程序卸载程序 (DDU) 工具可以删除驱动程序组件、服务和注册表项。 建议在安全模式下运行,然后安装新下载的驱动程序。.
典型顺序:安全模式、DDU“清理并重启”、正常启动 Windows,然后安装从制造商网站下载的驱动程序。 此过程可避免标准安装程序无法解决的版本冲突和损坏文件。.
3)尝试以前的稳定版本
有时,最新版本会引入回归问题。在这种情况下,请使用“旧版驱动程序”(如有)或手动安装先前的稳定版本。 使用 NVIDIA GPU,当回滚到以前的 Studio 驱动程序时,CAD 中的许多 TDR 问题都会消失。.
对于手动安装,请使用“浏览我的计算机以查找驱动程序软件”和“让我从可用驱动程序列表中选择”,选择适合您 GPU 的先前版本。 完成后重新启动以验证更改.
4)使用SFC修复系统文件
如果问题发生在更新或安装失败后,请运行系统文件检查器。以管理员身份打开 CMD 并运行 sfc /scannow。 Windows 将检查受保护的二进制文件并自动替换损坏的二进制文件。.
sfc /scannow
完成后,重新启动并再次尝试通常的图形加载,看看 TDR 是否消失。 如果 SFC 修复文件,则表明系统损坏影响了图形堆栈。.
5)Windows启动修复
如果登录后或打开相同的应用程序时反复出现 TDR,请转到设置>更新和安全>恢复>高级启动>疑难解答>高级选项>启动修复来运行启动修复。 Windows 将尝试修复未正确加载的服务和启动组件。.
维修后,按照引发故障的相同使用模式对设备进行测试。 如果停止播放,则可能是部分启动问题或依赖项损坏.
6)安全模式和驱动程序重新安装
安全模式会加载精简驱动程序,并允许不间断地卸载/重新安装。在 msconfig 中选择“安全启动”,或从“高级启动”访问,然后在“设备管理器”中卸载适配器。 然后安装从制造商下载的新驱动程序.
在具有两个 GPU 的计算机上,分别卸载并重新安装它们:首先是集成的(Intel),然后是专用的(NVIDIA/AMD)。 这可以防止 Windows 在其间重新注入不适当的泛型。.
7)特定驱动文件修复(AMD/NVIDIA)
在 AMD/ATI GPU 上,有时重新生成 atikmdag.sys 或 atikmpag.sys 可以解决问题。重命名 C:\Windows\System32\drivers 文件,方法是添加 .old 后缀,并从制造商的软件包中解压。 扩展命令创建新的 .sys 文件,然后将其复制到驱动程序文件夹。.
expand.exe atikmdag.sy_ atikmdag.sys
expand -r atikmdag.sy_ atikmdag.sys
对于 NVIDIA,该想法类似于 nvlddmkm.sys:卸载后,将 nvlddmkm.sys 重命名为 .old,展开 NVLDDMKM.Sy_ 并将生成的 .sys 复制到 System32\DRIVERS。 此替换删除了表面安装后仍存在的损坏文件.
Expand.exe NVLDDMKM.Sy_ NVLDDMKM.Sys
8)如果存在冲突,请暂时禁用英特尔 iGPU
如果您使用专用 GPU 作为主要 GPU(例如 NVIDIA),请在设备管理器中禁用 Intel HD/UHD 以排除切换问题。 在某些笔记本电脑上,在 iGPU/dGPU 之间移动应用程序时,自动切换会触发 TDR.
更加精致:在 NVIDIA 控制面板中,将特定的 dGPU 分配给要求苛刻的应用程序(acad.exe、游戏),并将其余部分保留为自动。 这样,您可以最大限度地减少打开/关闭窗口时适配器的更改,并避免图形上下文重置。.
9)检查硬件和散热
使用可靠的工具检查温度:如果 GPU 超出阈值和节流,就会出现 TDR。清除灰尘,必要时更换导热硅脂,并确保良好的通风。 对于笔记本电脑来说,长时间使用时,散热垫可以起到很大的作用。.
无需超频即可验证 RAM(Windows 内存诊断工具)和系统稳定性。过高的内存设置或电压限制会导致显卡负载不稳定。 CPU/RAM/VRM 的稳定性与 GPU 本身同样重要。.
10)高级TDR设置(谨慎使用)
对于需要更长时间运行的繁重工作负载,提高 TdrDelay 值可能会有所帮助。路径:HKLM\System\CurrentControlSet\Control\GraphicsDrivers。创建/设置 32 位 DWORD TdrDelay 值为 8-10,然后重启。 这并不能解决糟糕的驱动程序问题,但它在宣布超时之前提供了更多的余地。.
仅当您已经更新/清理驱动程序并检查了热量后才使用它;如果问题出在驱动程序上,延长时间只会推迟 BSOD。 如果增加 TdrDelay 后崩溃仍然存在,请返回 2 并修复根源.
在考虑问题解决之前的快速检查清单
为确保您已解决 VIDEO_TDR_FAILURE 问题,您需要执行以下检查:
- 验证在具有正常负载的长时间会话期间,重复的 TDR 事件不再出现在事件查看器中。 如果在现实条件下花费 30 至 60 分钟不进行 TDR,则修复效果是十分稳健的。.
- 通过监测温度运行中等压力测试(图形基准或应用中的复杂场景)。 稳定的显卡可以维持稳定的时钟频率,而不会节流或触发错误。.
- 复制已知良好的驱动程序(并记下版本),以便在将来的更新再次引入问题时可以快速回滚。 当需要再次更新时,预防可以节省大量时间。.
尽管 VIDEO_TDR_FAILURE 错误很可怕,但通常可以通过应用顺序和方法来修复:正确的驱动程序、干净的安装、控制热量,以及在必要时微调 TDR。 通过这种组合,创意任务、游戏和 CAD 可以再次运行而不会崩溃。.
专门研究技术和互联网问题的编辑,在不同数字媒体领域拥有十多年的经验。我曾在电子商务、通讯、在线营销和广告公司担任编辑和内容创作者。我还在经济、金融和其他领域的网站上撰写过文章。我的工作也是我的热情所在。现在,通过我的文章 Tecnobits,我尝试探索技术世界每天为我们提供的所有新闻和新机会,以改善我们的生活。

