Bug 检查 0x7b:INACCESIBLE_BOOT_DEVICE

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

重要

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

参数

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

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

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

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

    USHORT Length;
    USHORT MaximumLength;
    PWSTR Buffer;
    

    “长度”字段提供字符串的实际长度。 缓冲区字段指向字符串的开头。 缓冲区始终至少为 0x80000000。

    该字符串包含尝试启动的设备的高级 RISC 计算 (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 工具创建可启动的 U 盘或 DVD。

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

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

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

    常见的启动菜单键

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

    常用的启动菜单键包括:
    F12
    ESC
    F9
    F10
    F8

    常见的 UEFI (BIOS) 设置键

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

    常用的 UEFI (BIOS) 设置键包括:
    ESC
    DEL
    F2

如果可以启动 Windows

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

  • 启动到安全模式,然后正常启动。

    启动进入安全模式后,系统会加载一组核心存储驱动程序,以便再次访问系统。 完成以下步骤以启动进入安全模式:

    1. “设置”中,选择“更新和安全”
    2. 选择“恢复”>“高级启动”以启动进入维护模式。
    3. 在生成的菜单中,选择“高级选项”>“故障排除”>“启动设置”>“重启”
    4. Windows 重启进入“启动设置”界面后,选择选项 4、5 或 6 以启动进入安全模式。

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

    在启动时按下功能键(例如 F8)也可以进入安全模式。 有关具体的启动选项,请参阅系统制造商提供的信息。

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

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

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

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

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

  • 在事件查看器中检查系统日志以获取其他错误消息,这可能有助于发现导致错误的设备或驱动程序。 有关详细信息,请参阅打开事件查看器。 在系统日志中查找与蓝屏同时出现的严重错误。

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

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

    SFC /scannow
    

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

  • 自动修复后,在“选择选项”屏幕上,选择>“高级选项”>“系统还原”。 该选项可将电脑还原到一个较早的时间点,称为系统还原点。 安装新应用、驱动程序、更新或手动创建还原点时,会生成还原点。 请选择出现错误之前的还原点。

  • 使用内核调试器附加到系统,并按照备注中的描述进一步分析故障。

注解

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

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

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

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

Windows 调试器

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

disk

           
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)

classpnp

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。 可以看到哪个设备缺少驱动程序或未启动,而未启动的原因可能很明显。

其中一个原因可能是即插即用无法将资源分配给启动设备。 可以通过查找服务条目来验证此限制。 如果状态标志包括 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)