INTERNAL_POWER_ERROR 参数
参数 1 表示违规类型。
其他参数的含义取决于参数 1 的值。
参数 1 | 参数 2 | 参数 3 | 参数 4 | 原因 |
---|---|---|---|---|
0x1 | 1:设备已超出其最大引用计数数。 2. 3 或者 4:排队的 Influx 电源 IRP 过多。 5:电源 IRP 已发送到被动级设备对象。 6:系统未能分配必要的电源 IRP。 | 如果参数 2 的值为 1,则表示允许的最大引用数。 如果参数 2 的值为 2. 3 或者 4,则表示允许的最大挂起 IRP 数。 如果参数 2 具有值6. 目标设备对象。 | 如果参数 2 的值为 6,则指示这是系统 (0x0) 还是设备 (0x1) 电源 IRP。 | 处理电源 I/O 请求数据包 (IRP) 期间发生错误。 |
0x2 | 保留 | 保留 | 保留 | 尝试处理电源事件时发生内部故障。有关详细信息,请参阅当参数 1 等于 0x2 时调试错误检查 0xA0。 |
0x3 | 预期的校验和 | 实际校验和 | 失败的行号 | 休眠上下文页面的校验和与其预期的校验和不匹配。 |
0x4 | 预期的校验和 | 实际校验和 | 失败的行号 | 即将写入休眠文件的页面的校验和与其预期的校验和不匹配。 |
0x5 | 保留 | 保留 | 保留 | 未知的关闭代码已发送到系统关闭处理程序。 |
0x7 | 保留 | 保留 | 保留 | 发生了未处理的异常。有关详细信息,请参阅当参数 1 等于 0x7 时调试错误检查 0xA0。 |
0x8 | 此参数始终设置为 0x100。 | 设备对象 | POWER_CHANNEL_SUMMARY | 处理系统电源事件时发生致命错误。 |
0x9 | 状态码 | 镜像阶段 | 保留 | 准备休眠文件时发生致命错误。 |
0xA | 0:在恢复时立即请求错误检查。 1:在所有不可分页设备通电后,在恢复期间请求错误检查。 2:在所有设备都已启动后,在恢复期间请求错误检查已通电。 | 保留 | 保留 | 出于调试目的而唤醒时请求了错误检查。 |
0xB | 休眠文件的大小。 | 空间用完之前的休眠进度 0:HIBERFILE_PROGRESS_FREE_MAP 1:HIBERFILE_PROGRESS_RESUME_CONTEXT 2:HIBERFILE_PROGRESS_PROCESSOR_STATE 3:HIBERFILE_PROGRESS_SECURE_RANGES 4:GRESSHIBERHIBERHIFILE_FILE>YGRESSHIBERHIMEM_FILE>YGRESSHIBERHIMEM_FILE>YGRESSHIMEMS 4:HIBERFILE_PROGRESS_RESUME_CONTEXT | 当参数 2 为 4 时,剩余内存的大小范围。 | 休眠文件太小。 |
0xC | 状态码 | 转储堆栈上下文 | 保留 | 转储堆栈初始化失败。 |
0xD | 正在转换的系统电源状态。 | 最近到达的睡眠检查点。 | 指向 POP_POWER_ACTION 结构的指针。 | 系统未能及时完成电源转换。 |
0xF | 正在转换的系统电源状态。 | 最近到达的睡眠检查点。 | 指向当前处理请求的线程的指针。 | 系统未能及时完成电源转换。 |
0xF0 | 正在转换的系统电源状态。 | 最近到达的睡眠检查点。 | 指向当前处理请求的线程的指针。 | 系统未能及时完成(挂起)电源转换。 |
0xF1 | 正在转换的系统电源状态。 | 最近到达的睡眠检查点。 | 指向当前处理请求的线程的指针。 | 系统未能及时完成(恢复)电源转换。 |
0x101 | 保留 | 异常指针。 | 保留 | 处理系统电源事件时发生未处理的异常。有关详细信息,请参阅当参数 1 等于 0x101 时调试错误检查 0xA0。 |
0x102 | 保留 | 转储_初始化_上下文 | POP_HIBER_CONTEXT | 休眠工作缓冲区大小不是页面对齐的。 |
0x103 | 保留 | POP_HIBER_CONTEXT | 保留 | 在休眠过程中,所有工作页面都没有被计算在内。 |
0x104 | 保留 | POP_HIBER_CONTEXT | 保留 | 当内部存储器结构被锁定时,试图映射内部休眠存储器。 |
0x105 | 保留 | POP_HIBER_CONTEXT | 保留 | 试图用不支持的内存类型标志映射内部休眠内存。 |
0x106 | 保留 | 内存描述符列表 (MDL) | 保留 | 一个内存描述符列表是在休眠过程中创建的,它描述了非页面对齐的内存。 |
0x107 | 保留 | POP_HIBER_CONTEXT | PO_MEMORY_RANGE_ARRAY | 内部休眠数据结构中出现数据不匹配。 |
0x108 | 保留 | POP_HIBER_CONTEXT | 保留 | 磁盘子系统未能正确写入休眠文件的一部分。 |
0x109 | 保留 | 预期校验和 | 实际校验和 | 处理器状态数据的校验和与其预期的校验和不匹配。 |
0x10A | 保留 | POP_HIBER_CONTEXT | NTSTATUS 故障代码 | 磁盘子系统无法正确读取或者写入部分休眠文件。 |
0x10B | 保留 | 当前的休眠进度 | 保留 | 尝试使用 PoSetHiberRange API 在错误的时间标记休眠启动阶段的页面。 |
0x10C | 保留 | 提供给 API 的标志 | 标记长度 | 使用无效参数调用了 PoSetHiberRange API。 |
0x10D | 保留 | POP_HIBER_CONTEXT | NTSTATUS 故障代码 | 安全内核子系统在提供恢复数据时失败。 |
0x10E | 保留 | 校验和不正确 | 先前磁盘读取的校验和 | 从休眠文件读取时,磁盘子系统返回损坏的数据。 |
0x10F | 当前系统睡眠检查点。 | 内部错误的类型。 0:在禁用分页时写入检查点,但在 Po 禁用所有处理器上的中断之前。 1:0 以外的 CPU 在系统的中断禁用阶段尝试写入检查点sleep. 2:系统中的另一段代码正在执行 EFI 运行时服务。 | 保留 | 检查点系统睡眠进度时发生内部错误。 |
0x110 | 保留 | 保留 | 保留 | 系统未能禁用系统睡眠状态,但必须这样做以确保数据完整性。 |
0x111 | 保留 | 保留 | 保留 | 驱动程序已指示用户在场,并且用户已启用调试选项以捕获调用堆栈。 |
0x200 | 保留 | DEVICE_OBJECT | DEVICE_OBJECT_POWER_EXTENSION | 正在检查未知设备类型的空闲状态。 |
0x300 | 保留 | DEVICE_OBJECT | 内部资源计划 | 从电池电源 IRP 返回未知状态。 |
0x301 | 保留 | DEVICE_OBJECT | 内部资源计划 | 电池已进入未知状态。 |
0x400 | 保留 | IO_STACK_LOCATION | DEVICE_OBJECT | 设备已超出其最大引用计数数。 |
0x401 | 保留 | 待处理的 IRP 列表 | DEVICE_OBJECT | 排队的 Influx 电源 IRP 太多。 |
0x402 | 保留 | 待处理的 IRP 列表 | DEVICE_OBJECT | 排队的 Influx 电源 IRP 太多。 |
0x403 | 保留 | 待处理的 IRP 列表 | DEVICE_OBJECT | 排队的 Influx 电源 IRP 太多。 |
0x404 | 保留 | IO_STACK_LOCATION | DEVICE_OBJECT | 电源 IRP 已发送到被动级设备对象。 |
0x500 | 保留 | 内部资源计划 | DEVICE_OBJECT | 从热功率 IRP 返回未知状态。 |
0x600 | DEVICE_OBJECT PDO | 保留 | 保留 | 驱动程序已尝试向 Power Runtime Framework 重复注册。 |
0x601 | POP_FX_DEVICE 设备 | PEP_DEVICE_REGISTER PEP | 保留 | 没有 Power Engine 插件接受设备注册。 |
0x602 | DEVICE_NODE 设备节点 | 睡眠计数 | 保留 | 设备节点休眠计数与其激活计数不匹配。 |
0x603 | POP_FX_插件 | 工作请求类型 | 保留 | Power Engine 插件提出了无效的工作请求。 |
0x605 | 通知 ID | POP_FX_插件 | 保留 | 电源引擎插件无法接受强制设备电源管理通知。 |
0x606 | POP_FX_COMPONENT | POP_FX_COMPONENT_FLAGS | 组件的新条件 | 当资源已经处于活动(或者空闲)状态时,Power Engine 插件试图将关键系统资源组件转换为活动(或者空闲)状态。 |
0x607 | POP_FX_DEVICE | 状态 | 保留 | 运行时电源管理框架设备移除锁的获取在需要成功时失败。 |
0x608 | POP_FX_COMPONENT | POP_FX_COMPONENT_FLAGS | 保留 | 驱动程序已尝试在没有先前活动请求的情况下将组件转换为空闲状态。 |
0x609 | POP_FX_插件 | POP_FX_DEVICE | 重复请求类型 0:DevicePowerRequired 1:DevicePowerNotRequired | 电源引擎插件已请求所需的设备电源或者不需要的设备电源,而没有相反类型的干预请求。 |
0x610 | POP_FX_插件 | POP_FX_DEVICE | 保留 | 电源引擎插件请求了不需要的设备电源,而先前的设备电源要求请求未完成。 |
0x611 | POP_FX_插件 | POP_FX_DEVICE | 组件索引无效 | Power Engine 插件请求对无效组件进行操作。 |
0x612 | POP_FX_PLUGIN 动力引擎插件 | 保留 | 保留 | Power Engine 插件请求在设备通知上下文中完成另外的工作,其中 PO 没有为请求提供缓冲区。 |
0x613 | POP_FX_DEVICE | 组件索引 | 操作 0:不需要完整的设备电源 1:报告设备已开机 2:完成空闲状态 | 当没有此类未决请求未决时,驱动程序已尝试完成请求。 |
0x614 | POP_FX_DEVICE | 组件索引 | 非法参数 0: PO_FX_FLAG_BLOCKING 在 IRQL >= DISPATCH_LEVEL 1: PO_FX_FLAG_BLOCKING 和 PO_FX_FLAG_ASYNC_ONLY 都指定了 2: 组件索引无效 | 驱动程序已请求在具有非法参数的组件上进行活动/空闲转换。 |
0x615 | POP_FX_插件 | POP_FX_COMPONENT | 非法操作 0:组件未处于空闲状态 0 1:组件已处于活动状态 2:没有未完成的激活请求 3:未完成的空闲状态转换 | Power Engine 插件非法指示组件激活已完成。 |
0x616 | POP_FX_插件 | POP_FX_COMPONENT | 非法操作 0:无效空闲状态 1:组件已处于请求状态 2:请求非零空闲状态而不通过空闲状态 0 | Power Engine 插件非法请求组件空闲状态转换。 |
0x617 | POP_FX_PLUGIN 动力引擎插件 | UNICODE_STRING 设备 ID | PEP_DEVICE_REGISTER PEP 注册 | 处理设备注册通知时,Power Engine 插件返回了无效的接受类型。 |
0x618 | POP_FX_WORK_ORDER_WATCHDOG_INFO 工单 | 保留 | 保留 | 运行时 Power Worker 线程已被阻塞太长时间。 |
0x619 | POP_FX_DEVICE 设备 | 组件索引 | 实际负责的子设备的 NULL 或者 DEVICE_NODE | 设备阻止进入最深的运行时空闲电源状态的时间过长。 |
0x61A | POP_FX_PLUGIN 动力引擎插件 | POP_FX_DEVICE 设备 | 保留 | Power Engine 插件提供了有关组件性能状态信息的无效信息。 |
0x61B | POP_FX_DEVICE 设备 | 组件索引 | 保留 | 在注册设备性能状态之前,驱动程序已发出性能状态请求。 |
0x61C | POP_FX_DEVICE 设备 | 组件索引 | 无效的参数 VALUES: 0:PerfChangesCount 超过了为此组件注册的性能状态集的数量 | 驱动程序发出了带有无效参数的性能状态请求。 |
0x61D | POP_FX_DEVICE 设备 | 组件索引 | 未完成的请求上下文 | 当前一个请求未完成时,驱动程序发出了性能状态请求。 |
0x61E | 保留 | 保留 | 保留 | Power Engine 插件试图在启用自动转换的同时在调试器设备上执行关键转换。 |
0x61F | POP_FX_DEVICE 设备 | 协调空闲状态指标 | 保留 | Power Engine 插件已尝试为非平台范围状态的协调空闲状态启用自动调试器转换。 |
0x620 | POP_FX_DEVICE 设备 | 协调空闲状态指标 | 保留 | Power Engine 插件已尝试为非平台范围状态的协调空闲状态注册 D 状态依赖项。 |
0x621 | POP_FX_DEVICE 设备 | 组件索引 | 协调空闲状态指标 | Power Engine 插件已尝试为非平台范围状态的协调空闲状态注册 F 状态依赖项。 |
0x622 | 父级 POP_FX_COMPONENT | 子POP_FX_COMPONENT | 保留 | 司机试图从 PoFx 注销未完成的家属。 |
0x666 | PPOP_PEP_ACTIVITY | 新活动类型 0:DevicePowerOn 1:ComponentIdleStateChange 2:ComponentActivating 3:ComponentActive 4:DevicePowerOff 5:DeviceSuspend | 冲突的活动类型 0:DevicePowerOn 1:ComponentIdleStateChange 2:ComponentActivating 3:ComponentActive 4:DevicePowerOff 5:DeviceSuspend | 默认的 Power Engine 插件已尝试触发与另一个活动冲突的新活动。 |
0x667 | POP_PEP_ACTIVITY | 活动类型 0:DevicePowerOn 1:ComponentIdleStateChange 2:ComponentActivating 3:ComponentActive 4:DevicePowerOff 5:DeviceSuspend | POP_PEP_ACTIVITY_STATUS | 默认 Power Engine 插件已尝试完成未运行的活动。 |
0x668 | 正在更新其引用计数的 PPPM_COORDINATED_STATE。 | 此函数观察到的无效引用计数值。 | 正在更新平台空闲状态的掩码。 | 默认 Power Engine 插件已尝试删除先前未受约束的平台空闲状态约束。 |
0x669 | 正在更新其引用计数的 PPPM_COORDINATED_STATE。 | 此函数观察到的无效引用计数值。 | 保留 | 默认 Power Engine 插件在尝试专门通知 PoFx 平台空闲状态的可用性时遇到内部一致性错误。 |
0x680 | NTSTATUS 故障代码。 | 保留 | 保留 | 由于缺少或者格式错误,运行时电源框架无法解析所需的 ACPI 表。这通常是由于 BIOS 错误造成的。 |
0x700 | 佩芬德尔 | PEP_PPM_IDLE_SELECT | 保留 | Power Engine 插件指定了无效的处理器空闲依赖项。 |
0x701 | 挂起处理器的选定空闲状态的索引 | 挂起处理器的PRCB地址 | 挂起处理器的索引 | 处理器无法在分配的时间间隔内完成空闲转换。这表示指定的处理器已挂起。 |
0x702 | 所选处理器空闲状态的索引 | 处理器空闲同步状态 | 挂起处理器的PRCB地址 | 处理器从不可中断状态唤醒,而操作系统无需通过 PEP 启动显式唤醒(使用必要的 PPM 空闲同步)。 |
0x703 | 佩芬德尔 | PEP_PPM_QUERY_PLATFORM_STATE | 保留 | Power Engine 插件在查询平台状态通知期间指定了无效的处理器空闲依赖项。 |
0x704 | 保留 | 保留 | 保留 | 协调的空闲状态转换未及时完成。 |
0x705 | 佩芬德尔 | 通知 | 标识非法更改字段的四字符标签。在内核调试器中解码标签: .formats 标签,标签包含在 < > 中。 | Power Engine 插件已更改传递到通知的缓冲区中的只读字段。 |
0x706 | 通知 | 标识包含非法值的字段的四字符标记。在内核调试器中解码标签: .formats 标签,标签包含在 < > 中。 | 非法值或者索引到存在非法值的数组中 | Power Engine 插件在传递给通知的缓冲区的其中一个字段中返回了非法值。 |
0x800 | 当前 CS 状态 | 保留 | 保留 | 当系统处于连接待机状态时,显示器意外开启。 |
0x801 | 显示状态改变原因 | 更新显示状态的会话 ID | 保留 | 发生了无效的显示状态转换。 |
0x802 | POWER_MONITOR_REQUEST_REASON 导致显示器关闭 | 如果启用电源事件处理器,则为 1,否则为 0。 | 指向 POP_PDC_IDLE_PHASE_WATCHDOG_CONTEXT 全局的指针。 | PDC 系统空闲阶段 (NoCsPhase) 阻止过渡到现代待机的时间比预期的要长。 |
0x900 | 指向负责的电源设置回调的指针 | 调用电源设置回调之前的 IRQL | 从电源设置回调返回后的 IRQL | 已注册的电源设置回调返回了修改后的 IRQL。这表明回调更改了 IRQL 但没有恢复返回前的原始 IRQL。 |
0x901 | DEVICE_OBJECT | 内部资源计划 | 线程的 APC 禁用计数 | 驱动程序在处理电源 IRP 时已启用/禁用内核 APC。 |
0x4001 | KE 错误子代码。 VALUES: 0x100 : (INTERNAL_POWER_ERROR_KE_PROCESSOR_ON_TIMED_OUT) 固件打开处理器电源的时间太长。 0x101 : (INTERNAL_POWER_ERROR_KE_INVALID_INTERRUPT_TARGET) 指定了无效的中断目标:0x100 指定了无效的中断目标:0x10000000000000000000000000000000000000000000000000000000000000000000 指定了无效的中断目标(INTERNAL_POWER_ERROR_KE_INVALID_INTERRUPT_POWERSET)。 ) 无法更改 中断线的目标目的地。 0x103 : (INTERNAL_POWER_ERROR_KE_IPI_REQUEST_FAILED) 在重定向中断时未能发出 IPI。 0x104 : (INTERNAL_POWER_ERROR_KE_ARCH_NOT_SUPPORTED 不支持的处理器架构。) | 保留 | 保留 | (INTERNAL_POWER_ERROR_KE_SUBCODE) 电源操作期间内核执行程序发生内部故障。 |
0xAA64 | 错误代码 | PSCI 功能 ID 正在进行中 | 可选的内部上下文相关数据 | AArm64 电源状态协调接口 (PSCI) 功能遇到不可恢复的严重错误。 |
更多: zhilu jiaocheng
解决方法
一般注意事项
在上表中,几个参数是指向结构的指针。
例如,如果参数 2 列为 DEVICE_OBJECT,则参数 2 是指向 DEVICE_OBJECT 结构的指针。
某些结构在 wdm.h 中定义,该文件包含在 Windows 驱动程序工具包中。
例如,wdm.h 中定义了以下结构。
- EXCEPTION_POINTERS
- DEVICE_OBJECT
- IO_STACK_LOCATION
- PEP_DEVICE_REGISTER
上表中出现的某些结构未在任何公共头文件中定义。
我们可以使用 dt debugger 命令查看这些结构的定义。
以下示例显示如何使用 dt 命令查看 DEVICE_OBJECT_POWER_EXTENSION 结构。
3: kd> dt nt!DEVICE_OBJECT_POWER_EXTENSION +0x000 IdleCount : Uint4B +0x004 BusyCount : Uint4B +0x008 BusyReference : Uint4B +0x00c TotalBusyCount : Uint4B +0x010 ConservationIdleTime : Uint4B +0x014 PerformanceIdleTime : Uint4B +0x018 DeviceObject : Ptr64 _DEVICE_OBJECT +0x020 IdleList : _LIST_ENTRY +0x030 IdleType : _POP_DEVICE_IDLE_TYPE +0x034 IdleState : _DEVICE_POWER_STATE +0x038 CurrentState : _DEVICE_POWER_STATE +0x040 Volume : _LIST_ENTRY +0x050 Specific : <unnamed-tag>
以下过程将调试此错误检查的某些实例。
当参数 1 等于 0x2 时,调试错误检查 0xA0
- 检查堆栈。查找 ntoskrnl!PopExceptionFilter 函数。此函数包含以下代码作为其第一个参数。
(error_code << 16) | _LINE_
如果调用者是 PopExceptionFilter ,则此函数的第一个参数是 PEXCEPTION_POINTERS 类型。请注意此参数的值。
- 使用 dt(显示类型)命令并将我们在上一步中找到的值指定为参数。
dt nt!_EXCEPTION_POINTERS argument
此命令显示结构。注意上下文记录的地址。
- 使用 .cxr(显示上下文记录)命令并将我们在上一步中找到的上下文记录指定为记录。
.cxr record
此命令将寄存器上下文设置为正确的值。
- 使用各种命令来分析错误的来源。从 kb (Display Stack Backtrace) 开始。
当参数 1 等于 0x7 时,调试错误检查 0xA0
- 检查堆栈。查找 ntoskrnl!PopExceptionFilter 函数。此函数的第一个参数是 PEXCEPTION_POINTERS 类型。请注意此参数的值。
- 使用 dt(显示类型)命令并将我们在上一步中找到的值指定为参数。
dt nt!_EXCEPTION_POINTERS argument
此命令显示结构。注意上下文记录的地址。
- 使用 .cxr(显示上下文记录)命令并将我们在上一步中找到的上下文记录指定为记录。
.cxr record
此命令将寄存器上下文设置为正确的值。
- 使用各种命令来分析错误的来源。从 kb (Display Stack Backtrace) 开始。
当参数 1 等于 0x101 时,调试错误检查 0xA0
- 使用 dt(显示类型)命令并将参数 3 的值指定为参数。
dt nt!_EXCEPTION_POINTERS argument
此命令显示结构。注意上下文记录的地址。
- 使用 .cxr(显示上下文记录)命令并将我们在上一步找到的上下文记录指定为记录。
.cxr record
此命令将寄存器上下文设置为正确的值。
- 使用各种命令来分析错误的来源。从 kb (Display Stack Backtrace) 开始。
INTERNAL_POWER_ERROR 错误检查的值为 0x000000A0。
此错误检查表明电源策略管理器遇到了致命错误。
日期:2020-09-17 00:16:06 来源:oir作者:oir