一位客户称自己只看到黑屏的支持案例
摘要
Raymond Chen 讲述了一个 Windows 3.1 时代的支持案例:一位客户将所有系统颜色都设置为黑色以打造哥特主题,结果什么都看不见;同时介绍了 Windows 如何对长按电源键触发的紧急「黑屏 LPBH」内核转储进行分类。
<p>如果你按住 PC 的电源键 12 秒,它会在硬件层面直接关机,而不会通知操作系统。这是一个安全功能,让你即使在操作系统的「关机」命令失效时也能关闭计算机。</p>
<p>电源键被按住八秒后,Windows 内核会意识到用户正在尝试强制断电,于是会快速生成一份内核转储(kernel dump),下次启动系统时可以上传到 Windows 错误报告服务。(有时四秒不足以收集到足够的信息,导致内核转储不完整。我记得在 Windows Insider 预览版中,你会看到类似「请松开电源键,以便我们收集更多信息,然后我们会关闭计算机」的提示。这给内核更多时间来完成内核转储的捕获。)</p>
<p>这些紧急内核转储在内部被归类为「长按电源键」(LPBH,long power button hold)故障。这些紧急内核转储中记录的信息之一是屏幕是否完全由黑色像素组成。这类故障被进一步归类为「黑屏 LPBH」,并会被发送到一个专门的虚拟团队进行分析。(我恰好是这个黑屏 LPBH 团队的成员。)</p>
<p>有时问题出在显卡驱动损坏。有时显卡驱动运行正常,但桌面合成器只是把黑色像素交给显卡驱动。有时桌面合成器运行正常,但没有人往屏幕上绘制任何内容。这些情况还会进一步细分为「没有任何人负责绘制内容」或「通常负责绘制内容的进程已经挂起」等情况。</p>
<p>回到 Windows 3.1 时代,曾有一个客户产品支持来电,按今天的标准会被归类为「黑屏」故障:客户报告说他们打开了计算机,Windows 启动了,但当启动画面消失后,他们看到的只是一片空白屏幕。</p>
<p>经过一番询问,客户支持工程师拼凑出了事情的经过:原来这位客户非常喜欢黑色,于是决定设置一个 <a href="https://en.wikipedia.org/wiki/Gothic_fashion">哥特</a> 主题。他们把壁纸颜色设为黑色,标题栏颜色设为黑色,按钮颜色设为黑色,窗口背景颜色设为黑色,窗口文字颜色设为黑色。「颜色」控制面板中所有能选的颜色全部被设成了黑色。</p>
<p>一旦你把自己弄到这种境地,就很难脱身了,因为你什么都看不见。</p>
<p>我不知道客户支持工程师是如何解决这个问题的,但我猜他们可能是启动进入 MS-DOS,运行 <code>EDIT.COM</code>,然后<a href="https://jeffpar.github.io/kbarchive/kb/083/Q83433/">删除 <tt>win.ini</tt> 文件中的 <tt>[colors]</tt> 部分</a>,从而将所有系统颜色恢复为默认值。</p>
<p>本文 <a href="https://devblogs.microsoft.com/oldnewthing/20261029-00/?p=112808/">《一位客户称自己只看到黑屏的支持案例》</a> 最早发布于 <a href="https://devblogs.microsoft.com/oldnewthing">The Old New Thing</a>。</p>
查看缓存全文
缓存时间: 2026/10/30 15:06
# 一位客户说他只看到黑屏的支持案例 - The Old New Thing
Source: https://devblogs.microsoft.com/oldnewthing/20261029-00/?p=112808/
如果你按住 PC 的电源键 12 秒,它会在硬件层面直接断电,而不会通知操作系统。这是一个安全功能,这样即使操作系统的"关机"命令无法正常工作,你仍然可以关闭电脑。
当电源键被按住 8 秒后,Windows 内核会意识到用户正在强制断电,于是它会快速抓取一份内核转储(kernel dump),以便下次开机时上传到 Windows 错误报告服务。(有时 4 秒不足以收集足够的信息,导致内核转储不完整。我相信在 Windows Insider 版本中,你会看到一条类似"请松开电源键,以便我们收集更多信息,然后我们将关闭电脑"的消息。这给了内核更多时间来完成内核转储的抓取。)
这些紧急内核转储在内部被归类为"长按电源键"(LPBH)故障。这些紧急内核转储中记录的信息之一,就是屏幕是否完全由黑色像素组成。这类故障会被进一步归类为"黑屏 LPBH",并提交给一个专门的虚拟团队进行分析。(我恰好就是这个黑屏 LPBH 团队的成员。)
有时候问题出在显卡驱动损坏。有时候显卡驱动工作正常,但桌面合成器只是把黑色像素传给了显卡驱动。有时候桌面合成器工作正常,但没有任何东西在往屏幕上绘制内容。这些情况还会进一步细分为"没有人负责绘制任何东西"或者"通常负责绘制的东西的人已经挂掉了"之类的子情况。
回到 Windows 3.1 时代,有一通客户产品支持电话,放在今天会被归类为"黑屏"bug:客户报告说他们开机后 Windows 启动了,但当启动标志消失后,他们只看到了一个空白屏幕。
经过一些追问后,客户支持工程师把事情拼凑了起来:原来这位客户非常喜欢黑色,于是决定设置一个哥特(https://en.wikipedia.org/wiki/Gothic_fashion)主题。他们把壁纸颜色设成了黑色。标题栏颜色设成了黑色。按钮颜色设成了黑色。窗口背景颜色设成了黑色。窗口文字颜色设成了黑色。"颜色"控制面板中每一个可以设置的颜色选项全都被设成了黑色。
一旦你把自己弄成这种处境,就很难脱身了,因为你什么都看不见。
我不知道那位客户支持工程师是怎么解决这个问题的,但我猜他们可能是启动到 MS-DOS,运行了 `EDIT.COM`,然后[从 `win.ini` 文件中删除了 `[colors]` 段落](https://jeffpar.github.io/kbarchive/kb/083/Q83433/),从而将所有系统颜色恢复为默认值。
### 分类
### 主题
## 作者
Raymond Chen
Raymond 从事 Windows 的演进工作已有 30 多年。2003 年,他开始经营一个名为 The Old New Thing 的网站,该网站的流行程度远远超出了他最狂野的想象,这一发展至今仍让他感到不安。该网站还催生了一本书,巧合的是书名也叫 The Old New Thing(Addison Wesley 2007)。他偶尔出现在 Windows Dev Docs 的 Twitter 账号上,讲述一些毫无用处的故事。
相似文章
Windows 在每个人心中引发罗夏墨迹测试
这篇博客文章回顾了 Windows 95 和 XP 的包装与壁纸被公众误解的幽默事件,导致设计变更。作者 Raymond Chen 分享了这些来自微软历史的故事。
关闭显示控制面板时无效函数指针的案例
这篇来自 The Old New Thing 的文章调查了 Windows 显示控制面板中一个常见的崩溃问题,该问题是由一个被截断为 32 位并进行符号扩展的无效函数指针引起的。作者通过分析崩溃转储来找出根本原因。
用户更改键盘布局时程序挂起的问题
一个调试故事,讲述了当用户更改键盘布局(例如使用 Win+Space 快捷键)时,Windows 程序挂起的原因,是由于一个后台线程创建了窗口但没有泵送消息。修复方法是要么泵送消息,要么销毁窗口。
0xabadbabe 是谁?为什么?(2011)
Daniel Stenberg 分享了一段 2011 年的调试故事:当时他正在开发 Intel 系统仿真软件,在 Windows 7 启动过程中发现一个神秘的 0xABADBABE 值被写入 EHCI 寄存器,经过反复排查,最终发现这是一个故意设置的调试器断点,与蓝屏 bug 无关。
关于滥用Windows窗口类额外字节的兼容性说明
Raymond Chen 讨论了一个历史性的 Windows 兼容性问题,其中一些 16 位程序滥用窗口类额外字节来存储私有数据,以及微软如何在保持向后兼容性的同时,对 32 位和 64 位程序堵住了这个漏洞。