Bug 检查0x7B:INACCESSIBLE_BOOT_DEVICE

INACCESSIBLE_BOOT_DEVICE bug 检查的值为 0x0000007B。 此 bug 检查表明 Microsoft Windows作系统在启动期间失去了对系统分区的访问权限。

重要

这篇文章适合程序员阅读。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答

参数

参数 DESCRIPTION
1 UNICODE_STRING 结构的地址,或无法装入的设备对象的地址
2 0
3 0
4 0

要确定 Parameter 1 的含义,请查看它指向的数据。 如果此地址的第一个单词 (USHORT) 为偶数,则参数 1 是 Unicode 字符串的开头。 如果此地址的第一个字 (USHORT) 为 0x3,则参数 1 是设备对象的第一个字段 (Type)。

  • 如果此参数指向设备对象,则本应读取引导设备的文件系统无法初始化或无法将引导设备上的数据识别为文件系统结构。 在这种情况下,指定的设备对象是无法装载的对象。

  • 如果此参数指向 Unicode 字符串,则必须读取此地址处的前 8 个字节。 这些字节构成 UNICODE_STRING 结构。 以下示例显示了如何定义结构:

    USHORT Length;
    USHORT MaximumLength;
    PWSTR Buffer;
    

    Length 字段提供字符串的实际长度。 Buffer 字段指向字符串的开头。 Buffer 始终至少为 0x80000000。

    该字符串包含尝试引导的设备的 Advanced RISC Computing (ARC) 规范名称。 ARC 名称是在 ARC 环境中标识设备的通用方法。

原因

INACCESSIBLE_BOOT_DEVICE bug 检查通常是由于启动设备故障而发生的。 在 I/O 系统初始化期间,引导设备驱动程序可能无法初始化引导设备(通常是硬盘)。

文件系统初始化可能已失败,因为它无法识别引导设备上的数据。 重新分区系统分区、更改 BIOS 配置或安装磁盘控制器也可能导致此错误。

此错误可能是由于磁盘硬件不兼容而发生的。 如果在系统的初始设置时发生错误,则系统可能已安装在不受支持的磁盘控制器上。 某些磁盘控制器要求在 Windows 启动时存在其他驱动程序。

当存储硬件发生故障,并且无法响应来自 Windows 的请求时,可能会发生此错误。

决议

此错误始终在系统启动时发生。 此错误经常在建立调试器连接之前发生,因此调试可能很困难。 作系统可能无法访问,并且错误日志可能为空,因为作系统的启动距离不足以启动这些子系统。 以下部分介绍了这两种情况的解决方案,如果您无法启动 Windows 并且能够启动 Windows。

如果您无法启动 Windows

如果您收到此停止代码,但 Windows 未向前启动到作系统,请尝试以下解决方法:

  • 还原任何最近的硬件更改。

    删除任何最近添加的硬件,尤其是硬盘驱动器或控制器,以查看错误是否已解决。 如果有问题的硬件是硬盘驱动器,则磁盘固件版本可能与您的 Windows作系统版本不兼容。 请与制造商联系以获取更新。 如果删除了另一个硬件并且错误已解决,则可能存在 IRQ 或 I/O 端口冲突。 根据制造商的说明重新配置新设备。

    如果您最近对 UEFI (BIOS) 设置进行了更改,例如在 UEFI 中将控制器模式从旧版更改为 AHCI,请还原这些更改。 有关更多信息,请参阅 高级主机控制器接口

  • 检查存储设备兼容性。

    确认所有硬盘驱动程序、硬盘控制器和任何其他存储适配器都与已安装的 Windows 版本兼容。 例如,您可以在 Windows 10 规范中获取有关兼容性的信息。

  • 更新 UEFI (BIOS) 和固件。

    检查系统 UEFI (BIOS) 和存储控制器固件的更新可用性。

  • 使用 Windows Media Creation Tool 创建可启动的 USB 拇指驱动器或 DVD。

    使用另一台计算机上的媒体创建工具创建可启动的 USB 拇指驱动器或 DVD。 使用此工具通过选择安装文件或从 USB 引导来执行全新安装。

    有关详细信息,请参阅 获取 Windows 10

    您可能需要禁用功能,或更改 UEFI (BIOS) 菜单中的引导顺序优先级,以便从 USB、FDD (FlashDiskDrive) 或 DVD 而不是 HDD 引导。

    常用启动菜单键

    启动菜单键因制造商而异。 这些键是常用的。 查看 PC 文档以确定使用的启动密钥。

    常用的启动菜单键有:
    F12
    ESC
    F9
    F10 系列
    F8

    常用 UEFI (BIOS) 设置键

    UEFI (BIOS) 设置密钥因制造商而异。 这些键是常用的。 查看 PC 文档以确定使用的设置密钥。

    常用的 UEFI (BIOS) 安装键包括:
    ESC
    戴尔
    F2

如果您能够启动 Windows

如果您收到此停止代码并且 Windows 确实启动,请尝试以下解决方法:

  • 引导至安全模式,然后正常引导。

    引导至安全模式会加载一组核心存储驱动程序,这些驱动程序可以允许再次访问存储系统。 完成以下步骤以启动到安全模式:

    1. Settings (设置) 中,选择 Update and Security(更新和安全)。
    2. 选择 Recovery > Advanced 启动 以启动到维护模式。
    3. 在结果菜单中,选择 Troubleshoot > Advanced Options > Startup Settings > Restart
    4. Windows 重启进入“启动设置”界面后,选择选项 4、5 或 6 以启动进入安全模式。

    以安全模式加载 Windows 后,重新启动您的 PC 以查看是否加载了正确的存储驱动程序以及是否识别了存储设备。

    安全模式也可以通过在启动时按下功能键(例如 F8)来使用。 有关特定的启动选项,请参阅系统制造商提供的信息。

  • 使用扫描磁盘实用工具确认没有文件系统错误。 选择并按住(或右键单击)要扫描的驱动器,然后选择 Properties > Tools > 立即检查

  • 运行病毒检测程序。 病毒可以感染为 Windows 格式化的所有类型的硬盘,由此产生的磁盘损坏可能会生成系统错误检查代码。 确保病毒检测程序检查主启动记录是否存在感染。

  • 对于 IDE 设备,将板载 IDE 端口定义为 Primary only (仅主端口)。 还要检查每个 IDE 设备是否具有正确的 主/从/独立 设置。 尝试删除除硬盘之外的所有 IDE 设备。 最后,检查事件查看器中的系统日志是否有其他错误消息,这些消息可能有助于识别导致错误的设备或驱动程序。

  • 确认硬盘驱动器上有足够的可用空间。 操作系统和某些应用程序需要足够的可用空间来创建交换文件和执行其他功能。 确切的要求因系统配置而异,但最好有 10% 到 15% 的可用空间。

  • 设备管理器中查看是否有任何设备标有感叹号 (!)。 查看驱动程序属性中显示的事件日志,了解故障驱动程序。 请尝试更新相关驱动程序。

  • 检查事件查看器中的系统登录是否有其他错误消息,这些消息可能有助于查明导致错误的设备或驱动程序。 在系统日志中查找与蓝屏同时出现的严重错误。

  • 你可尝试运行系统制造商提供的硬件诊断。

  • 使用系统文件检查器工具修复丢失或损坏的系统文件。 系统文件检查器是 Windows 中的一个实用工具,供用户扫描 Windows 系统文件中的损坏情况并恢复损坏的文件。 使用以下命令运行系统文件检查器工具 (SFC.exe)。

    SFC /scannow
    

    有关详细信息,请参阅使用系统文件检查器工具修复丢失或损坏的系统文件

  • 自动修复后,在 Choose an option (选择一个选项 ) 屏幕上,选择 Troubleshoot Advanced options (高级 > 选项 > 故障排除) System Restore(系统还原)。 此选项将您的 PC 返回到较早的时间点,称为系统还原点。 当您安装新应用程序、驱动程序、更新或手动创建还原点时,会生成还原点。 选择在遇到错误之前还原点。

  • 使用内核调试器连接到系统,并进一步分析故障,如备注中所述。

注解

调查存储系统配置。
要缩小原因范围,尽可能多地了解安装了 Windows 的启动设备会很有帮助。 例如,您可以调查以下项目:

  • 找出启动设备连接到的控制器类型,如 SATA 或 IDE。 如果可以引导系统,则可以使用设备管理器检查控制器和磁盘驱动程序属性。 您可以看到关联的驱动程序文件和错误事件。

  • 指示其他设备是否连接到启动设备所在的同一控制器,如 SSD 或 DVD。

  • 请注意驱动器上使用的文件系统,通常为 NTFS。

Windows 调试器

要使用内核调试器分析此错误,请在调试器中运行 lm (List loaded modules) 命令,以查看加载了哪些模块以尝试隔离特定驱动程序。 验证是否已加载以下驱动程序。

磁盘

           
0: kd> lm m disk
Browse full module list
start             end                 module name
fffff806`bd0b0000 fffff806`bd0cd000   disk       (deferred)

partmgr

0: kd> lm m partmgr
Browse full module list
start             end                 module name
fffff806`bc5a0000 fffff806`bc5c1000   partmgr    (deferred)

NTFS

0: kd> lm m ntfs
Browse full module list
start             end                 module name
fffff806`bd3f0000 fffff806`bd607000   NTFS       (deferred)

类别 PNP

0: kd> lm m classpnp
Browse full module list
start             end                 module name
fffff806`bd0d0000 fffff806`bd131000   CLASSPNP   (deferred)

PCI

0: kd> lm m pci
Browse full module list
start             end                 module name
fffff806`bc440000 fffff806`bc494000   pci        (deferred) 

确保已加载控制器驱动程序。 例如,对于 SATA RAID 控制器,驱动程序可能是 iaStorA.Sys 驱动程序,也可能是 EhStorClass 驱动程序。

0: kd> lm m EhStorClass
Browse full module list
start             end                 module name
fffff806`bcbb0000 fffff806`bcbcb000   EhStorClass   (deferred) 

可能存在包含 “stor” 的驱动程序,例如 storahci。

0: kd> lm m stor*
Browse full module list
start             end                 module name
fffff806`bcb00000 fffff806`bcb23000   storahci   (deferred)             
fffff806`bcb30000 fffff806`bcbaa000   storport   (deferred)             
fffff806`c0770000 fffff806`c0788000   storqosflt   (deferred)

在附加了调试器的情况下启动。

如果可以在连接调试器的情况下启动目标系统,请在发生 bug 检查时发出 !devnode 0 1 。 您可以看到哪个设备缺少驱动程序或未启动,并且未启动的原因可能很明显。

一个原因可能是 Plug and Play 无法将资源分配给启动设备。 您可以通过查找服务的条目来验证此限制。 如果状态标志包括 DNF_INSUFFICIENT_RESOURCES 或不包括 DNF_STARTED 或 DNF_ENUMERATED,则您可能已经找到了问题。 尝试 !devnode 0 1 storahci 节省一些时间,而不是转储整个设备树。

0: kd> !devnode 0 1 storahci
Dumping IopRootDeviceNode (= 0xffffb9053d94d850)
DevNode 0xffffb9053e8dea50 for PDO 0xffffb9053e8da060
  InstancePath is "PCI\VEN_8086&DEV_3B22&SUBSYS_304A103C&REV_05\3&21436425&0&FA"
  ServiceName is "storahci"
  State = DeviceNodeStarted (0x308)
  Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xffffb9053e88db30 for PDO 0xffffb9053e890060
    InstancePath is "SCSI\Disk&Ven_&Prod_ST3500418AS\4&23d99fa2&0&000000"
    ServiceName is "disk"
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)
  DevNode 0xffffb9053e88d850 for PDO 0xffffb9053e88e060
    InstancePath is "SCSI\CdRom&Ven_hp&Prod_DVD-RAM_GH60L\4&23d99fa2&0&010000"
    ServiceName is "cdrom"
    TargetDeviceNotify List - f 0xffffdf0ae9bbb0e0  b 0xffffdf0aea874710
    State = DeviceNodeStarted (0x308)
    Previous State = DeviceNodeEnumerateCompletion (0x30d)