我有一台运行 Windows 2000 的旧(2005)工业 PC。它操作一台 CNC 机床,因此除了 Windows 和基本硬件标准(ISA 总线等)之外,它的每一部分几乎都是专有的。
突然间它完全停止启动(没有 POST,只有空白屏幕)。最近没有发生任何硬件变化,我没什么可责怪的。我记录了 POST 顺序:d0、00、d1、d2。类似于 AMIBIOS8(00h 代码除外),但事实并非如此(我已使用并行编程器转储闪存芯片以检查数据一致性和 BIOS 制造商)- 它完全是定制的。
没有关于原装主板的信息(SECO M671 - 一种不为人知的旧式 ETX 规格模块,与 Kontron pm-15c 非常相似,但来自不同的供应商,即相同的芯片,但 PCB 排列不同)。但是,我发现类似的 ETX 模块主板(Kontron pm-10c - 处理器频率不同,但仍然是同一系列,其他芯片相同)仍可从当地经销商处购买,更换主板并成功通过 PC POST。
但问题是:新主板的 BIOS 有很多旧主板没有的设置。其中一个设置(除了内存缓存和我出于谨慎而禁用的其他功能)是“启用 ACPI”,但此时我只有操作系统安装的磁盘映像。我如何确定此安装是否使用了 ACPI?在正在运行的系统上,HKLM/HARDWARE 配置单元有一些线索,但它是易失性的。我想知道注册表是否包含一些非易失性的 ACPI 相关设置?
PS 我已经尝试猜测,但失败了。Windows 成功启动,但启动后不久就失败了,出现 0x7F = 意外内核模式陷阱(0x08 = 双重错误)BSOD。WinDbg 说这可能是 DRIVER_FAULT 导致的内存错误,但它没有指出驱动程序的名称。每次我启动系统时,BSOD 概率都会上升:起初它只发生在我尝试启动某些专有软件时,现在有时甚至在登录之前就会发生。现在我必须找出是否值得尝试另一个 ACPI 选项,或者新的主板在某种程度上(BIOS 资源安排?)与专有 OEM 软件不兼容,因此所有希望都破灭了。
答案1
经过更深入的谷歌搜索,我们发现有多种方法可以做到这一点:
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ApmLegalHal - 这是 APM HAL 存在标记,如 WINNT\inf\hal.inf 的相应部分所示(此 inf 还表明在安装新 HAL 之前清除该标记)。请注意,在非运行的机器上没有 CurrentControlSet,因为这只是 ControlSet001 或 002 的链接(确切的设置编号存储在 HKEY_LOCAL_MACHINE\System\Select - “Current” DWORD 中)。
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services 下有 ACPI 服务,如果机器使用 APM,则将其设置为 Start = 0x04 = Disabled(这是我的猜测)。
- WINNT\setup.inf 列出了 hal.dll 的原始文件名。我的系统似乎正在使用 APM,因此原始名称与 hal.dll 一致。但对于 ACPI 系统,它是“halacpi”或类似的名称(“halmacpi”等等)。原始文件名也在文件属性中列出。