忽略典型的BSOD名称,它们在形式上被称为Bug Checks。为了查找某个BSOD代码的实际含义,您可以在Bug Check Code Reference中查找它。
Bug Check 0x3B: SYSTEM_SERVICE_EXCEPTION
,0x5C: HAL_INITIALIZATION_FAILED
听起来很熟悉,您可以在此处阅读它们,但我将详细介绍一些对那些不进行调试或低级驱动程序编程的人来说似乎不清楚的事情。
SYSTEM_SERVICE_EXCEPTION
页面上的描述是:
这表明执行从非特权代码到特权代码的例程时发生了异常。
当系统上的某些代码尝试执行具有更高特权的其他代码时,就会发生这种情况,而这种情况在没有特权提升的情况下发生,这意味着非特权代码将破坏安全性。这通常是发生故障的驱动程序的工作,但也可能是驱动程序形式的rootkit,该驱动程序会遇到某种形式的保护。
这并不意味着我们应该排除其他可能的错误,例如内存损坏,这可以通过研究故障转储以查看行为是否指向驱动程序或更随机来发现。即使崩溃转储是随机的,也没有必要指出坏的内存,而可能再次是驱动程序破坏了内存的结果。因此,进行内存测试非常方便,以检查是否存在内存不足的问题,以便在我们走这条路时获得更清晰的想法。
HAL_INITIALIZATION_FAILED
页面上的描述是:
这表明HAL初始化失败。
是的,她就是这么说的。下一步是研究HAL,这是理解这里正在发生的事情的逻辑下一步,总之,“操作系统中”部分的这一部分有助于:
硬件抽象层(HAL)是在计算机的物理硬件和在该计算机上运行的软件之间以软件实现的抽象层。它的功能是在大多数操作系统内核中隐藏硬件差异,因此无需更改大多数内核模式代码即可在具有不同硬件的系统上运行。
在PC上,基本上可以将HAL视为主板的驱动程序,并允许高级计算机语言中的指令与低级组件(例如直接与硬件)进行通信。
是的,还很长。但是它指出了一些更有趣的可能原因:硬件故障,抽象代码,主板/芯片组驱动程序或其他驱动程序。向后浏览这些可能的原因,使我们能够逐级查看问题可能所在的位置;为此,我们再次需要检查故障转储。
正在检查故障转储?!
正如评论中指出的那样,您可以访问此URL以获得一些基本说明,尽管我建议尽可能上传转储文件,以便我们为您检查。我通常使用Windows调试工具中的WinDBG来执行此操作。另外,您可以使用OSR Online 的在线Instant Online崩溃转储分析器,尽管它不能使您比崩溃转储的常规分析更深入地进行检查。因此,一旦您获得了故障转储,请告诉我们...